View Full Version : USB với PIC24F
Mình thiết kế board để sử dụng USB với PIC24FJ256GB110.
Các giao tiếp khác đã sử dụng được, còn USB thì chưa hoạt động.
Mình nạp code mẫu của Microchip (USB Device - HID - Mouse).
Mình thiết kế tương tự với PIC24Fj256GB106 thì hoạt động được, nhưng sang con GB110 thì không được.
Mình gửi kèm schematic và code config, có ai đã làm được thì chỉ giúp mình.
_CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & COE_OFF & FWDTEN_OFF & ICS_PGx2)
_CONFIG2( 0xF7FF & IESO_OFF & FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMOD_HS & FNOSC_PRIPLL & PLLDIV_DIV5 & IOL1WAY_ON)
Thạch anh mình dùng 20MHz
bien_van_khat
03-08-2009, 03:06 PM
Mình thiết kế board để sử dụng USB với PIC24FJ256GB110.
Các giao tiếp khác đã sử dụng được, còn USB thì chưa hoạt động.
Mình nạp code mẫu của Microchip (USB Device - HID - Mouse).
Mình thiết kế tương tự với PIC24Fj256GB106 thì hoạt động được, nhưng sang con GB110 thì không được.
Mình gửi kèm schematic và code config, có ai đã làm được thì chỉ giúp mình.
_CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & COE_OFF & FWDTEN_OFF & ICS_PGx2)
_CONFIG2( 0xF7FF & IESO_OFF & FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMOD_HS & FNOSC_PRIPLL & PLLDIV_DIV5 & IOL1WAY_ON)
Thạch anh mình dùng 20MHz
Không rõ bạn dùng stack version mấy
Vấn đề có thể nằm ở chân BUS_SENSE, để kiểm tra xem cable USB có được cắm hay không (đối với các thiết kế self-powered). Khi chưa phát hiện cắm cable các hàm phục vụ USB sẽ không làm gì hết.
Khi chọn GB106, stack sẽ dùng hardwareprofile của PIC24F-starter-kit, kit này ko dùng chân BUS_SENSE vì nó cấp nguồn từ USB (bus-powered)
Nhưng khi chọn GB110 nó sẽ dùng hardwareprofile của Explorer 16
Do thiết kế của bạn không dùng BUS_SENSE nên bạn cần kiểm tra lại trong file hardwareprofile.h và các file hardwareprofile-xxxx.h tương ứng.
Trong file "HardwareProfile.h"
#if defined(__C30__)
#if defined(__PIC24FJ256GB110__)
#include "HardwareProfile - PIC24FJ256GB110 PIM.h"
#elif defined(__PIC24FJ256GB106__)
#include "HardwareProfile - PIC24F Starter Kit.h"
#endif
#endif
Trong file "HardwareProfile - PIC24FJ256GB110 PIM.h"
Mình sửa code như sau
//#define USE_USB_BUS_SENSE_IO
//#define tris_usb_bus_sense TRISDbits.TRISD0 // Input
//#define USB_BUS_SENSE 1
#define tris_usb_bus_sense U1OTGSTATbits.SESVD //TRISBbits.TRISB5 // Input
#define USB_BUS_SENSE U1OTGSTATbits.SESVD
Hai dòng cuối là mình copy từ bên file "HardwareProfile - PIC24F Starter Kit.h" sang, nhưng USB vẫn không hoạt động.
Có bạn nào đã làm không, có cách nào khác chỉnh sửa thiết kế không? mình có header nên có thể nối dây được.
Ngoài ra, mình dùng nguồn từ USB để hoạt động.
bien_van_khat
03-08-2009, 04:56 PM
Trong file "HardwareProfile.h"
#if defined(__C30__)
#if defined(__PIC24FJ256GB110__)
#include "HardwareProfile - PIC24FJ256GB110 PIM.h"
#elif defined(__PIC24FJ256GB106__)
#include "HardwareProfile - PIC24F Starter Kit.h"
#endif
#endif
Trong file "HardwareProfile - PIC24FJ256GB110 PIM.h"
Mình sửa code như sau
//#define USE_USB_BUS_SENSE_IO
//#define tris_usb_bus_sense TRISDbits.TRISD0 // Input
//#define USB_BUS_SENSE 1
#define tris_usb_bus_sense U1OTGSTATbits.SESVD //TRISBbits.TRISB5 // Input
#define USB_BUS_SENSE U1OTGSTATbits.SESVD
Hai dòng cuối là mình copy từ bên file "HardwareProfile - PIC24F Starter Kit.h" sang, nhưng USB vẫn không hoạt động.
Có bạn nào đã làm không, có cách nào khác chỉnh sửa thiết kế không? mình có header nên có thể nối dây được.
Ngoài ra, mình dùng nguồn từ USB để hoạt động.
Có vẻ như không phải do BUS_SENSE.
Khi nối vào máy tính, windows không nhận ra có thiết bị kết nối hay nó báo có kết nối nhưng ko nhận ra thiết bị?
Bạn có thể thử debug bằng ICD2 hoặc PICkit2 để tìm nguyên nhân chip ko chạy.
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.