|
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 |
|
29-03-2012, 11:19 AM | #1 |
Nhập môn đệ tử
Tham gia ngày: Sep 2011
Bài gửi: 2
: |
Cần giúp đỡ về modul UART của dspic33fj12mc202
Em đang học cách sử dụng modul UART của con dspic33fj12mc202, sử dụng phần mềm proteus để mô phỏng. Em đã gửi thành công rồi nhưng còn nhận thì đang gặp khó khăn.
Em sử dụng ngắt nhận để mỗi khi nhận được 1 ký tự thì chương trình nhảy vào ngắt và thay đổi trạng thái ở ngõ ra RB4 để bật tắt led. Nhưng thử nhiều lần mà không được Đoạn code khởi động modul UART: ////////////////////////////////////////////////////////////////// void Init_UART() { U1MODE=0x8000; // 8 bit, no parity, 1 stop bit U1STAbits.UTXEN=1; // Cho phep gui// U1BRG = 64; RPOR1bits.RP2R=3; // Chon chan RP2 lam chan phat RPINR18bits.U1RXR=0; // Chon chan RP0 lam chan thu RPINR18bits.U1CTSR=1; // Chon chan RP1 lam chan Clear to send RPOR1bits.RP3R=4;// Chan RP3 la Ready to send _U1RXIE=1; // Cho phep ngat nhan. U1STAbits.URXISEL=0b00; // Ngat khi co bat ky ki tu nao duoc nhan. IPC2bits.U1RXIP=0b110; // Uu tien ngat nhan. _U1RXIF=0; // Xoa co ngat nhan } ////////////////////////////////////////////////////////////////////////////// Đoạn code ngắt nhận: /////////////////////////////////////////////////////////////////////////////// void __attribute__ ((__Interrupt__,auto_psv)) _U1RXInterrupt() { int Receive; _LATB4=~_LATB4; Receive=U1RXREG; _U1RXIF=0; // Xoa co ngat nhan } //////////////////////////////////////////////////////////////////////////////// Mọi người giúp em với. thay đổi nội dung bởi: fabre1kn9x, 29-03-2012 lúc 11:34 AM. Lý do: Có lỗi |
09-05-2012, 03:33 PM | #2 |
Nhập môn đệ tử
Tham gia ngày: Nov 2011
Bài gửi: 2
: |
Bạn ơi, bạn có thể cho mình hỏi vấn đề về khai báo dao động được không ? mình cũng đang nghiên cứu dòng dsPIC33FJ64MC802. Mình khai báo thạch anh nội, Fcy=40MHZ rồi sét 1 chân RB11 lên 1, nhưng kết quả là RB11 nháy liên tục.
Hình như là khi RB11 vừa bật lên 1 thì lại bị reset. Mình kiểm tra WDT rồi, tắt hết mà cũng không đc. không biết bị vấn đề mạch điện hay không? mong bạn giúp đỡ ! #include "p33FJ64MC802.h" _FOSCSEL(FNOSC_FRC) _FOSC(FCKSM_CSECMD & OSCIOFNC_OFF) void InitClock() { PLLFBD = 41; // M = 32 CLKDIVbits.PLLPOST = 0; // N1 = 2 CLKDIVbits.PLLPRE = 0; // N2 = 2 OSCTUN = 0; RCONbits.SWDTEN = 0; // Clock switch to incorporate PLL __builtin_write_OSCCONH(0x01); // Initiate Clock Switch to // FRC with PLL (NOSC=0b001) __builtin_write_OSCCONL(0x01); // Start clock switching while(OSCCONbits.COSC != 0b001); // Wait for Clock switch to occur while(OSCCONbits.LOCK != 1) {}; } int main(void) { InitClock(); TRISB = 0x0000; while(1) { PORTB = 0xFFFF; }; } |
31-08-2012, 11:37 AM | #3 |
Đệ tử 1 túi
Tham gia ngày: Nov 2010
Bài gửi: 23
: |
#include "p33FJ64MC802.h"
_FOSCSEL(FNOSC_FRC); _FOSC(FCKSM_CSECMD&OSCIOFNC_OFF&POSCMD_NONE); _FICD(ICS_PGD1&JTAGEN_OFF); _FWDT(FWDTEN_OFF); bạn thử cấu hình như thế này xem. nếu chip tiếp tục bị reset thì mình nghĩ bạn nên xem lại nguồn cung cấp cho chip đã hợp lý chưa. chú ý đến những con tụ lọc nguồn phải có giá trị họp lý. khoảng 100pF là đẹp nhất. Ngày trc mình cũng đã nghiên cứu về con 33fj64mc802 này rồi. có j bạn mail lại cho minh : trinhdieupcb@gmail.com . mình gửi code thực hành của từng modul cho. đọc nó bạn sẽ nhanh làm chủ dc con dspic này thay đổi nội dung bởi: nangvang, 31-08-2012 lúc 11:48 AM. |
27-10-2012, 05:25 AM | #4 |
Đệ tử 1 túi
Tham gia ngày: Sep 2009
Bài gửi: 21
: |
Mình cũng mới bắt đầu tìm hiểu về dspic33, mình có viết mail cho bạn, mong bạn giúp đỡ mình 1 số code cho các modul, nếu được bạn gởi vào mail vupva207@gmail.com.
|
|
|