PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Nhiều RS232 trên một PIC (http://www.picvietnam.com/forum/showthread.php?t=3968)

thientaisodo 20-04-2009 11:45 AM

Nhiều RS232 trên một PIC
 
Mình đang gặp khó khăn trong việc thiết lập nhiều (khoảng 2 hay 3 gì đó) cổng RS232 trên một con PIC877A. Google mãi ko ra.
Ai có code mẫu hay có kinh nghiệm mong chỉ giúp, xin cảm ơn nhiều

mtuankct 20-04-2009 12:19 PM

Bạn dùng nhiều RS232 để làm gi? Với Pic16 thì chỉ hỗ trợ một cổng RS232. Nếu bạn muốn giao tiếp với nhiều thiết bị bằng một cổng RS thì có thể sử dụng một số IC chuyển nó qua chuẩn RS485 rồi nối lại thành dạng bus thôi

thientaisodo 20-04-2009 12:43 PM

Hiện tại mình đang cần dùng vừa chụp ảnh với camera C328, vừa truyền về máy tính (bắt buộc phải vậy !). Theo mình biết thì 16F877 sử dụng CCS có thể UART-software đến tận 4 cổng RS232? Nếu bạn biết code mẫu có thể chỉ giúp mình, mình tìm mãi chả thấy đâu cả, chỉ còn ngồi khóc thôi :((

mtuankct 20-04-2009 12:58 PM

Nếu bạn muốn dùng tạo rs232 bằng phần mềm mình nghĩ không quá khó ví dụ như mình có ý tưởng thế này: bạn đưa chân RX vào một chân ngắt ngoài của pic rồi khi có ngắt thì set một timer để tạo BR. Trong hàm ngắt timer thì thực hiện việc đọc dữ liệu.
Tuy nhiên theo mình thì không nên làm theo cách này mà nên tìm một con vdk hỗ trợ nhiều cổng RS, với pic thì mình không rõ nhưng với con atmega128 thì mình nhớ là nó hỗ trợ 2 cổng RS riêng biệt

mtuankct 20-04-2009 01:04 PM

ví dụ con pic này có 2 RS:PIC24FJ16GA002
http://www.microchip.com/wwwproducts...cName=en520629

thientaisodo 20-04-2009 02:14 PM

Cơ bản con PIC đó là 16 bit,mình ko cần dùng tới. Nếu như mình nhớ ko nhầm thì anh Linh có nói CCS có hỗ trợ việc tạo ra nhiều cổng RS232 bằng phần mềm trên con 16F877A. Để mình search kĩ xem. Có ai biết có thể nói cho mình đc ko?

huyplc1 20-04-2009 02:44 PM

cho hỏi tạo luồn mới ở trang này kiểu gì thế. Mãi mà không tìm thấy ở đâu. web sao mà khó dùng thế

cskiller 20-04-2009 02:57 PM

Trong CCS C dùng nhiều software RS232
Code:

#use rs232(FORCE_SW, baud=9600, xmit=PIN_D0,rcv=PIN_D1, STREAM=ID1)
#use rs232(FORCE_SW, baud=9600, xmit=PIN_D2,rcv=PIN_D3, STREAM=ID2)
#use rs232(FORCE_SW, baud=9600, xmit=PIN_D4,rcv=PIN_D5, STREAM=ID3)
#use rs232(FORCE_SW, baud=9600, xmit=PIN_D6,rcv=PIN_D7, STREAM=ID4)
...
putc("C",ID1);
...
puts("Put data to software RS232 stream id 1",ID1);
...
getc(ID1); //Get data from software RS232 stream id 1
...
gets(buff,ID1); //Get data from software RS232 stream id 1
...
fprintf(ID1,"String formated to software RS232 stream id 1");


thientaisodo 20-04-2009 03:51 PM

Trích:

Nguyên văn bởi cskiller (Post 25009)
Trong CCS C dùng nhiều software RS232
Code:

#use rs232(FORCE_SW, baud=9600, xmit=PIN_D0,rcv=PIN_D1, STREAM=ID1)
#use rs232(FORCE_SW, baud=9600, xmit=PIN_D2,rcv=PIN_D3, STREAM=ID2)
#use rs232(FORCE_SW, baud=9600, xmit=PIN_D4,rcv=PIN_D5, STREAM=ID3)
#use rs232(FORCE_SW, baud=9600, xmit=PIN_D6,rcv=PIN_D7, STREAM=ID4)
...
putc("C",ID1);
...
puts("Put data to software RS232 stream id 1",ID1);
...
getc(ID1); //Get data from software RS232 stream id 1
...
gets(buff,ID1); //Get data from software RS232 stream id 1
...
fprintf(ID1,"String formated to software RS232 stream id 1");


Cảm ơn bạn, mình đã hiểu rồi, nhưng mà nếu mình dùng một rs232 sẵn có của phần cứng và một rs232 bằng phần mềm có đc ko bạn?

cskiller 20-04-2009 04:07 PM

Khai báo hardware UART
Code:

#use rs232( baud=9600, STREAM=ID1) //UART1,xmit=PIN_C6,rcv=PIN_C7,
Hoặc nếu PIC có 2 hardware UART(như 18F8722)
Code:

#use rs232(UART1 , baud=9600, STREAM=ID1) //xmit=PIN_C6,rcv=PIN_C7,
#use rs232(UART2 , baud=9600, STREAM=ID2) //, xmit=PIN_G1,rcv=PIN_G2

kết hợp 1 hardware và 1 software
Code:

#use rs232(UART1 , baud=9600, STREAM=ID1) //xmit=PIN_C6,rcv=PIN_C7,
#use rs232(FORCE_SW, baud=9600, xmit=PIN_D0,rcv=PIN_D1, STREAM=ID2)


thientaisodo 20-04-2009 04:12 PM

Cảm ơn bạn nha, mình test thử xem thế nào :)

truongqt 20-04-2009 04:30 PM

Rs232
 
Trích:

Nguyên văn bởi thientaisodo (Post 25014)
Cảm ơn bạn nha, mình test thử xem thế nào :)

Test xong chưa vậy bạn. Mình muốn xem kết quả. Bạn có thể gửi cho mình cái bạn đang làm ko vậy. Chắc là được hì. Hi, cảm ơn bạn trước nhé. mail: nguyenvantruongqt@yahoo.com

thientaisodo 20-04-2009 04:43 PM

Mình đang code một cái mạch có lẽ là hơi khủng,26 sensor cả từ trường cả nhiệt độ cả điện áp và cả dòng điện. Rồi đọc các bit ảnh từ camera để biến thành tần số theo qui đinh, giao tiếp DS1307, 24C64, điều khiển rơle và 2 con pic phải xem con nào sống để thay nhau hoạt động, còn phải dám sát một cái máy tính nữa xem nó bị treo hay ko ...
Trong một vài bài mình đã post một số mạch cũng như code mình test bằng mạch thật và đã chạy tốt, bạn có thể tìm ở đó. Như led matrix hay các mạch cơ bản khác rồi đó bạn

truongqt 20-04-2009 04:56 PM

rs232
 
Trích:

Nguyên văn bởi thientaisodo (Post 25017)
Mình đang code một cái mạch có lẽ là hơi khủng,26 sensor cả từ trường cả nhiệt độ cả điện áp và cả dòng điện. Rồi đọc các bit ảnh từ camera để biến thành tần số theo qui đinh, giao tiếp DS1307, 24C64, điều khiển rơle và 2 con pic phải xem con nào sống để thay nhau hoạt động, còn phải dám sát một cái máy tính nữa xem nó bị treo hay ko ...
Trong một vài bài mình đã post một số mạch cũng như code mình test bằng mạch thật và đã chạy tốt, bạn có thể tìm ở đó. Như led matrix hay các mạch cơ bản khác rồi đó bạn

Nghe vậy dự án của bạn cũng có qui mô đấy. Chúc bạn làm tốt nha.

truongqt 20-04-2009 05:02 PM

rs232
 
Nhân đây bạn cho mình hỏi cái này: mình đang mô phỏng giao tiếp rs232 18f4331 với PC. Mô phỏng bằng protues thì thấy: để PIC đọc dữ liệu xong mà thoát ra khỏi vòng kiểm tra
if(kbhit()==1) thì phải có 2 lệnh data_rec=getc(); liên tiếp nhau. Không biết là thực tế có như vậy ko?


Múi giờ GMT. Hiện tại là 03:19 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