PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 12-04-2008, 12:56 AM   #1
david
Đệ tử 4 túi
 
david's Avatar
 
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++;}
}
nếu em truyền một mảng ký tụ từ PC thì số lần ngắt nhận xảy ra đúng
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!
david vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-04-2008, 01:53 AM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 11:36 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam