|
Tài trợ cho PIC Vietnam |
dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC |
|
Ðiều Chỉnh | Xếp Bài |
12-04-2012, 12:32 AM | #1 |
Nhập môn đệ tử
Tham gia ngày: May 2011
Bài gửi: 3
: |
code encoder dùng QEI module bị lỗi
Chào các Bro !
Em mới tập tành học lập trình với Dspic,nên mong các bro giúp cho em bài này với . Em có viết một chương trình dùng 33f điều khiển động cơ,nhưng lúc viết để cho Dspic33f nhận chân encoder để thực hiện vòng phản hồi PID mà viết mãi mà không thấy nhận. Các bro xem giúp em đoạn code có sai hoặc thiếu chỗ nào mà sao em không tài nào dùng ngắt cho nó được. Thanks các bro trước ^^ void __builtin_write_OSCCONL(unsigned char value); void __builtin_write_OSCCONH(unsigned char value); // hàm để mở khóa OSCCON void init_Ports(void) // dinh ngia cac cong { PWM_TRIS=0x0000; //dat cac cong PWM la ngo ra chan RB TRISC=0x048F; //dat cac chan C3-C0 la ngo vao PWM_LAT=0x0000; //xoa thanh dem cua pwm _IOLOCK=0; // Mở khóa để ghi vào thanh ghi RPINR RPINR14=0x1918; //dùng chân RP25 và RP24 để nhận QEA và QEB RPINR15=0x0015; // RP21 cho chân index } void init_encoder(void) { AD1PCFGL=0x001E; // chọn các chân vào là số QEICON=0x0604; // mode x4 ,reset=INDEX xung DFLTCON=0x00E0; // có loc dau ra voi tan so chia 32 POSCNT=0x0000; // xóa thanh ghi chua MAXCNT=0x00FF; // tao gia tri so sanh _QEIIF=0; // xoa co ngat _QEIIE=1; // cho phep ngat } // viet ngat void _ISR _QEIInterrupt(void) { P1DC1=POSCNT; //test thử để xem chương trình có chạy không P1DC2 = 0x0000; _LATA9=1; // báo LED nếu ngắt xảy ra _QEIIF=0; } thay đổi nội dung bởi: hutk53, 12-04-2012 lúc 11:50 PM. |
|
|