Re: [問題] 比較不易受干擾的平價RF module

看板ASM (組合語言)作者 (沒有存在感的人)時間7年前 (2016/12/20 03:42), 7年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/5 (看更多)
先解釋一下,我現在就是用RPi+Linux Preempt RT (有時候會切到Xenomai試一下,不過個人感覺似乎不太有必要,Preempt RT夠用了) ※ 引述《MasterChang (我愛ASM)》之銘言: : 因為對象是linux跟arduino..... : : UART的問題是比較慢(我指把接收到的訊號傳輸給cpu) : : 根據規格好像是115200bps? : 對,uart是比較慢,不過發送資料不用等待全部資料都送出才往下執行程式。 我是用Arduino發送,RPi接收 : : 那如果我傳送個4 bytes的資料至少需要278us : : 如果buffer裏面還有東西沒傳完搞不好加倍。 : linux是寫到傳送緩衝區,沒記錯buffer size是4k,你也可以修改更大的值 : Arduino是64k,所以發送函式將資料寫到緩衝區就射後不理,除非它滿了。 不管有無buffer,CPU還是必須為了傳送資料而被佔用。 (只有4 byte我想應該用不到DMA) : : spi的話RPI可以支援8Mb/s(似乎更多),我傳4 bytes大概才4us : 你要考慮的是RF模組的buffer,因為無線電頻寬才是決定資料能傳多快。 : uart多,除了介面簡單,就是無線頻寬不高,uart足以應付。 我要用RF module做到的是遙控,buffer太大對我來說沒啥幫助。 (當下的指令才有意思) : : 如果還有real time的要求+CPU的load很緊的時候這就差很多了.... : : 我一個控制週期4ms,I2C就佔掉1ms左右, : : 如果用在無線傳輸的時間太久我得花更多心力去處理超時問題.... : linux很難做real time,real time至少要保證回應時間,好歹用thread解決這問題。 : 要不就把xenomai移植進來。 目前的經驗,只要不要涉及 file i/o (因為SD卡會因為wear leveling機制造成有時寫入時間過長) 出來的時間都是算很準,我的要求週期4ms誤差在1ms就ok (使用Preempt RT誤差不超過0.1ms, Xenomai結果稍差會到0.3ms) file i/o後來我是多開一個thread解決,不過會因為這樣漏掉一些data (這無法避免,wear leveling你不用也不行阿) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 90.41.190.34 ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1482176542.A.685.html

12/20 14:52, , 1F
寫一個Driver Mod跑RAM就好了啊
12/20 14:52, 1F
是說file i/o的部份?也是, 先累積到buffer等滿了再寫入....(我有改過buffer size不過沒啥用) 或是乾脆用linked list把data存入RAM,再依序寫入SD? 有空改看看.... ※ 編輯: wtchen (90.41.190.34), 12/20/2016 15:34:45 ※ 編輯: wtchen (90.41.190.34), 12/20/2016 15:50:52
文章代碼(AID): #1OM3WUQ5 (ASM)
文章代碼(AID): #1OM3WUQ5 (ASM)