Ðăng Nhập

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


fabre1kn9x
29-03-2012, 11:19 AM
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.

kubom10x
09-05-2012, 03:33 PM
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;
};
}

nangvang
31-08-2012, 11:37 AM
#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

AnhVu163
27-10-2012, 05:25 AM
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.