PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   dsPIC - Bộ điều khiển tín hiệu số 16-bit (http://www.picvietnam.com/forum/forumdisplay.php?f=29)
-   -   Cần giúp đỡ về modul UART của dspic33fj12mc202 (http://www.picvietnam.com/forum/showthread.php?t=13726)

fabre1kn9x 29-03-2012 11:19 AM

Cần giúp đỡ về modul UART của dspic33fj12mc202
 
1 Attachment(s)
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.


Múi giờ GMT. Hiện tại là 05:53 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam