![]() |
|
![]() |
#1 |
Đệ tử 4 túi
Tham gia ngày: Aug 2006
Bài gửi: 81
: |
nếu em một mảng truyền lên PC bằng lệnh putc() thì không có gì sai cả,cái khác ở đây là sẽ có ký tự phản hồi từ Mobie(cái này thì em đã kiểm tra gữa mobie và PC) và làm cho ngắt nhận xảy ra không còn đúng nữa
nếu em thêm 1 khoảng trễ như thế này thì số ngắt nhận xảy ra nhiều hơn,nhưng vẫn không đúng: Code:
void read_SMS(){ int8 i,j; i=0; j=0; while ((i<18)){ putc(mang1[i]); delay_ms(10); i++;} while (j<11){ putc(mang2[j]); delay_ms[10]; j++;} } em nghĩ vấn đề ở đây là do sự truyền nhận xảy ra liên tục làm cho các ngắt nhận xảy ra sai nhưng cũng thấy vô lý vì với tốc độ 9600 bit/s thì 1 byte truyền đi mất khoảng 900 us,trong khi đó 1 lệnh của PIC thực hiện trong 1/3 us (thạch anh 12M) --------> khi PIC truyền xong 1byte,thì PIC có thể thực hiện 2700 lệnh trước khi truyền byte tiếp theo,do vậy nó phải đủ thời gian để nhảy vào ngắt nhận đển nhận byte phản hồi từ Mobie chứ --------> rất khó hiểu Mong anh cùng em suy nghĩ,giải thích vấn đề này! |
![]() |
![]() |
![]() |
#2 |
Trưởng lão PIC bang
|
Ok, như vậy là bỏ qua phía mobile, vì nó làm việc tốt với PC.
Khi bạn truyền 1 byte từ PIC đến mobile, mobile phải nhận xong ký tự đó rồi mới truyền lại cho PIC. Nếu PIC dùng 10 bit cho một byte (1 start bit, 8 bit dữ liệu, và 1 stop bit, không có parity), thì bạn có thể truyền khoảng 960 byte mỗi giây từ PIC, ở baud rate 9600 bps. Như vậy, giả sử mobile truyền lại ngay sau khi nhận được byte đó, bạn sẽ cần 1 khoảng thời gian cho 20 bit (khoảng 2.08 ms) để hoàn thành việc truyền 1 byte đến mobile và nhận 1 byte phản hồi từ mobile. Ở phía PIC thì việc truyền và nhận là xảy ra đồng thời, do đó PIC có thể hoàn toàn xử lý việc nhận dữ liệu. Không rõ ở phía PC bạn thử ra sao, bạn gõ vào các ký tự trong một terminal hay dùng một phần mềm nào để gửi đi 1 loạt byte? Bạn thử dùng PIC để giả lập lại tình huống gửi dữ liệu từ PC đến mobile xem. Điều gì xảy ra nếu mobile yêu cầu các byte không được truyền nhanh hơn một tốc độ nào đó (tốc độ dữ liệu đến mobile, hoàn toàn khác với baud rate của đường truyền nhé)? Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
![]() |
![]() |
![]() |
|
|