Trích:
Nguyên văn bởi hopeman
trước đây mình dùng thạch anh 20M thì cắm vào cái là nó nhận ra chuẩn HID ngay, giờ mình thay bằng thạch anh 48M nhằm mục đích chạy nhanh hơn thì USB HID ko nhận ra nữa, có ai giải thích giúp mình với? mình cấu hình ban đầu như sau :
#define USB_USE_FULL_SPEED TRUE
#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CP UDIV1,VREGEN
#use delay(clock=48000000)
liệu có gì sai ở đây ko nhể vì thực sự mình ko hiểu cái đám cấu hình này lắm, nếu phải sửa thì sửa như thế nào để mạch với ta 48M chạy được?
|
Khi dùng thạch anh 20 MHz với cấu hình trên thì USB module đã làm việc ở full-speed, và CPU của PIC đã chạy ở clock = 48 MHz.
Bạn xem hình 2-1 trong datasheet của PIC18F4550 về thông tin chi tiết. Với cấu hình đã có, những thông tin liên quan đến clock như sau:
HSPLL - dùng thạch anh tần số cao, cho phép bộ PLL hoạt động
USBDIV - clock cho USB lấy từ ngõ ra của PLL chia cho 2
PLL5 - ngõ vào PLL là tần số của thạch anh chia cho 5
CPUDIV1 - clock hệ thống bằng ngõ ra của PLL chia cho 2
Vậy, với thạch anh 20 MHz, ngõ vào của PLL là 20/5 = 4 MHz (yêu cầu bắt buộc nếu muốn sử dụng PLL). Tại ngõ ra của PLL là 96 MHz, clock cho USB module và cho CPU là 96/2 = 48 MHz. Như tôi đã nói ở trên, bạn không cần dùng thạch anh 48 MHz để nâng tốc độ cho CPU, vì nó đã chạy ở tốc độ đó rồi.
Dùng thạch anh 48 MHz mà không thay đổi cấu hình thì PIC không thể hoạt động được.
Thân,