RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

Cần giúp đỡ về modul UART của dspic33fj12mc202

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • fabre1kn9x
    Nhập môn đệ tử
    • Sep 2011
    • 2

    #1

    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.
    Attached Files
    Last edited by fabre1kn9x; 29-03-2012, 10:34 AM. Lý do: Có lỗi
  • kubom10x
    Nhập môn đệ tử
    • Nov 2011
    • 2

    #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;
    };
    }

    Comment

    • nangvang
      Đệ tử 1 túi
      • Nov 2010
      • 23

      #3
      #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
      Last edited by nangvang; 31-08-2012, 10:48 AM.

      Comment

      • AnhVu163
        Đệ tử 1 túi
        • Sep 2009
        • 21

        #4
        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.

        Comment

        Working...