Robofun 機器人論壇

標題: 請問關於Arduino與RS232的運用 [打印本頁]

作者: weiooooo    時間: 2009-9-20 03:20
標題: 請問關於Arduino與RS232的運用
請問各位大大
我想經由Arduino來發送和接收RS232的命令
在網路上我已經找到有人已經做出來

http://arduino.cc/en/Reference/SoftwareSerial
這邊有一些介紹

但是我看完後還是有一些疑問
我請教各位大大的是
在這邊
http://www.arduino.cc/en/Tutorial/SoftwareSerial
有提供Arduino與RS232的實作
在Arduino程式中
一開始的
#define bit9600Delay 84  
#define halfBit9600Delay 42
#define bit4800Delay 188
#define halfBit4800Delay 94
#.....................

這邊我不太懂他的意思
這後面的84、42、188、94是甚麼意思?

另外,
我還有看到他說

LimitationsBecause it's not supported by hardware, the library has a few limitations:

這上面是不是說我RS232的鮑率最高只能到9600呢?
還有,有關於其它的限制我也不太懂
可否請大大為小弟我說明一下
先謝了~
作者: mzw2008    時間: 2009-9-20 12:12
LimitationsBecause it's not supported by hardware, the library has a few limitations:
Only speeds up to 9600 baud work , 因為一些限制的關係, 只能到9600
Serial.available() doesn't work 這個指令不能執行
Serial.read() will wait until data arrives 這個指令會呆住直到有資料過來, 所以最好用執行緒包起來

Only data received while Serial.read() is being called will bereceived. Data received at
other times will be lost, since the chip isnot "listening".
只有呼叫Serial.read() 才能真的接到資料, 但沒呼叫的時候, 並沒有緩衝區去暫存資料
這會導致資料一直過來, 卻沒呼叫指令去接, 資料會消失不見
主要是因為晶片沒有實做類似winsock那種listening 的動作, 這部分要自己實做
作者: weiooooo    時間: 2009-9-20 19:16
哇...是喔 只能到9600....
那是為什麼呢?
是硬體上面的關係嗎?
如果用8051做類似的事情的話
也會有此限制嗎?
可否請大大再幫我做進一步的解釋
感謝您了~~
作者: mzw2008    時間: 2009-9-22 22:48
我不會8051, 只知道皮毛哩
無法幫上忙
我自己做機器人用的是arduino + 嵌入式單版
作者: g921002    時間: 2009-9-22 23:09
哇...是喔 只能到9600....
那是為什麼呢?
是硬體上面的關係嗎?
如果用8051做類似的事情的話
也會有此限制嗎?
可否請大大再幫我做進一步的解釋
感謝您了~~
weiooooo 發表於 2009-9-20 19:16


沒有為什麼,設計就是如此。並不是硬體上的問題。沒記錯的話。arduino用的是AVR的晶片,要超過9600bps也不是問題。這個限制是由於軟體端為了讓不懂單晶片的人也能玩單晶片系統。軟體設計上疊床架屋,對於單晶片常見的中斷系統也不支援。所以限制比較多。

8051的UART可以用中斷系統處理。能不能跑更快的速度?視時脈而定,一般來說比9600快是沒問題的。但是說實話,除非你用變種51,不然傳統的51、52要玩的話,用的空間也不多。




歡迎光臨 Robofun 機器人論壇 (https://www.robofun.net/forum/) Powered by Discuz! X3.2