polling多個週邊的技巧? |
缺席
|
happosai
高階會員 ![]() ![]() ![]() ![]() 發表:93 回覆:228 積分:109 註冊:2002-09-15 發送簡訊給我 |
|
aki
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:30 回覆:696 積分:755 註冊:2004-01-15 發送簡訊給我 |
這本書也有提到類似的概念,
8051 C 語言專題製作 [B068]; 作者: 郭庭吉 ISBN:9861291326 504頁 / 套色 / 16開 初版日期:2004-09-29 最新出版日期:2004-09-29 定價:450元 第五章 第五章 串列通訊 5-1 UART 作串列輸出埠擴充 5-2 UART 作串列輸入埠擴充 5-3 兩個 8051 作單工傳送資料 5-4 兩個 8051 作串列多工資料傳輸 5-5 兩個 8051 作串列多工資料傳輸(中斷法) 5-6 8051 與 IBM PC 間串列通訊 5-6-1 發送一組字串給 PC 5-6-2 發送一組字串給 PC(利用 printf) 5-6-3 PC 對 8051/52 作單工發射資料 5-6-4 PC 對 8051 作單工發射資料 (8051 gets 接收) 5-6-5 8051 對 PC 作單工發射資料 5-6-6 8051 與 PC 間全多工串列通訊 5-7 一個 8751(主)與兩個 8751(副) 作串列單工傳送資料 5-8 一個 8751(主)與兩個 8751(副) 作串列多工傳送資料 5-9 SN75176(電玩)連線應用(一對一) 5-10 SN75176(電玩)連線應用(一對多) 5-11 75176 與 PC 的串列通訊 ===================引 用 happosai 文 章=================== 上次在雷兒電子網(好像掛了?)看到上面有位tayi前輩提到他可以一次polling多個 device,小弟覺得很神奇,8bit MCU一次scan多個週邊應該很辛苦吧? 比方說8051內建一組UART,用軟體再模擬一組,要是兩邊同時有資料進來 該怎麼辦?... |
㊣
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:261 回覆:2302 積分:1667 註冊:2005-01-04 發送簡訊給我 |
通常這樣會掛掉. 除非明文規定同時一次只有一個 Device 動作.
buffer 大一點的可以撐久一點. 51一般只有一層 buffer. 兩邊同時有資料進來可以先處理模擬的那一組(UART 資料收完後才中斷通知你, 模擬的那組必須自己一個bit 一個bit收下來). 如果模擬的 Data 太長, 資料未收完 UART 另一個 byte 又進來.....那就掛了. 如果UART 有 n 層 buffer 那就比較不怕, 不過會有效率問題. 如果以 MCU 為主, 去管理/控制週邊 而一次又只允許一個 device 回應, 可以考慮使用 RS-485/CAN-Bus 的方式. 以 MCU 為主, 為每個 Device 編編號就好囉. 以類似 I2C 的方式就可管理每個 Device. (個人覺得比 polling 有效率, 不用一個個去問) ===================引 用 happosai 文 章=================== 上次在雷兒電子網(好像掛了?)看到上面有位tayi前輩提到他可以一次polling多個 device,小弟覺得很神奇,8bit MCU一次scan多個週邊應該很辛苦吧? 比方說8051內建一組UART,用軟體再模擬一組,要是兩邊同時有資料進來 該怎麼辦?...
------
------------------------------------------------------------------------- 走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!? |
addn
高階會員 ![]() ![]() ![]() ![]() 發表:64 回覆:221 積分:202 註冊:2005-03-21 發送簡訊給我 |
===================引 用 happosai 文 章=================== 上次在雷兒電子網(好像掛了?)看到上面有位tayi前輩提到他可以一次polling多個 device,小弟覺得很神奇,8bit MCU一次scan多個週邊應該很辛苦吧? 比方說8051內建一組UART,用軟體再模擬一組,要是兩邊同時有資料進來 該怎麼辦?... 您好 那一篇我剛好有看到,基本上軟體模擬那一組UART的寫法 要用分時多工架構,程序不能被卡在軟體模擬UART上,也就是說 在接收資料同時還要能執行其他程序,用分時多工觀念來做 大概記得是這樣,您參考看看 |
happosai
高階會員 ![]() ![]() ![]() ![]() 發表:93 回覆:228 積分:109 註冊:2002-09-15 發送簡訊給我 |
分時多工的技巧是有其極限的,因為 TIMER 的頻率也有上限,而且 context switch
也有 overhead,我想頂多讓你去 polling ms 級的 device,us 級的就不用想了。 像是 UART 我想用軟體頂多做到 9600bps 就很了不起了,要做到 115200bps 似乎不太可能,除非 CPU 的速度夠快: 1/115200 = 8.68us 掛 12MHz 的標準 8051 去用軟體解光看就知道很辛苦,1 個 bit 相當於 8 個指令長, 以 n81 mode 來講等於需要 86us 的時間去解,這段期間內還不能跑去做其他的事, 而且假如傳資料的對象是 PC 更拼,因為 PC 有一個超大 FIFO 可以狂灌資料給你 也許用 PIC 或 cyganl 8051 會比較有機會?.. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |