|
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 |
24-04-2010, 03:26 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: Dec 2006
Bài gửi: 2
: |
dsPIC30F4011 giao tiếp module SIM508Z
Em đang làm đồ án tốt nghiệp về mạch giao tiếp, để truyền nhận và điều khiển PIC thông qua SMS. Em dùng dsPIC30F4011 và module SIM508z. Em đang bị mắc ở chỗ nhận tín hiệu từ module gửi về PIC, mặc dù gửi dữ liệu từ PIC đến module thì module nhận và xử lý tốt. Em đã giao tiếp thành công giữa PC-module (thông qua Hyper-Terminal 9600-8-n-1), PC-dsPic (truyền nhận ngon lành). Dưới đây là chương trình ngắt của Uart1 để nhận dữ liệu. Các anh xem giúp em với
volatile unsigned char BuffUart1[20]; //================================================== ================ // Ngat UART 1 //================================================== ================ void __attribute__((interrupt, auto_psv)) _U1RXInterrupt(void){ volatile unsigned char * receiveddata = BuffUart1; volatile unsigned char kytu; do{ if(DataRdyUART1()){ kytu = ReadUART1(); if((kytu != 0x0D)|(kytu != 0x0A)){ *(receiveddata++) = kytu; } } } while(kytu != 0x0D); //gap nut "Enter" se ket thuc nhan chuoi printf("\r\n%s\r\n",BuffUart1);// viet chuoi nhan duoc len PC Init_GLCD(); GLCD_Print88(2,0,BuffUart1);// viet chuoi nhan duoc len GLCD LATEbits.LATE0 = ~LATEbits.LATE0;//den` bao' co xay ra ngat IFS0bits.U1RXIF = 0; } tín hiệu từ module trả về có dạng :"<CR><LF>OK<CR><LF>" với <CR> là ký tự có mã 0x0A và <LF> là ký tự có mã 0x0D Nếu em định dạng ngắt Uart xảy ra khi bộ đêm có 1 ký tự thì khi PIC nhận tín hiệu từ module sẽ bị treo trong ngắt. Còn nếu ngắt xảy ra khi có 3-4 ký tự trong bộ đệm thì sẽ ko xảy ra ngắt khi mudule truyền dữ liệu tới. |
|
|