Electronics 板


LINE

參照 http://www.finetech.idv.tw/techdoc/8051serial/8051serial.htm 他說中斷法的執行效率遠超過等待法,所以我也想採用中斷法 不過我的程式只需要把資料傳送出去,不需要接收,看起來大概像這樣 void serial_isr() __interrupt 4 { // 把 buffer 的資料傳送出去 } main() { while (1) { // 把資料塞到 buffer } } 問題是這樣不會動,看起來 serial_isr 並沒有被呼叫 於是我試著在 main 裡先傳送一個數字,serial_isr 就有被呼叫了 我猜大概是因為中斷是在傳送完成之後才產生,沒傳送任何東西自然也不會有任何中斷 那麼如果我想維持讓 main 負責產生資料,serial_isr 負責傳送資料 該怎麼寫才能讓 serial_isr 開始跑呢? 應該不能在 main 裡呼叫 serial_isr 吧?這樣資料好像會亂掉 感覺是個很蠢的問題,可是 google 不到答案,還請各位幫忙一下 -- 放著養蚊子的部落格 http://resolaqq.blogspot.tw --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.41.215
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Electronics/M.1439992468.A.DD3.html
1F:推 yudofu: main只要一直檢查傳送有沒有完成、完成就寫進去,中斷那邊 08/19 23:20
2F:→ yudofu: 是檢查到有東西要寫的中斷就把東西送出去、一直到確認寫完 08/19 23:21
3F:→ yudofu: 清空旗標再挑出去,中斷涵式本身沒有在呼叫 08/19 23:21
4F:→ dsplab: 未必,使用1T的8051,921600bps下使用詢問方式也是可以的 08/20 08:43
5F:推 yudofu: 就算polling可以,可是原po想要要用中斷提高效率啊,沒有 08/20 09:25
6F:→ yudofu: 必要硬去用polling吧。總之中斷寫好之後,main要去"觸發" 08/20 09:25
7F:→ yudofu: 中斷而不是"呼叫"中斷 08/20 09:25
8F:→ ResolaQQ: 問題就是我不知道要怎麼觸發 interrupt 4 的中斷呀 08/20 09:37
9F:→ ResolaQQ: 似乎是接收到一個資料(我的程式沒在接收) 08/20 09:38
10F:→ ResolaQQ: 或是剛傳送完一個資料(但第一個資料都還沒開始傳) 08/20 09:38
11F:→ ResolaQQ: 上面兩種看起來都不可行,那要怎麼產生中斷 冏 08/20 09:39
12F:推 yudofu: 你的範例不是就寫中斷4了嗎?當你使用並enable uart中斷的 08/20 10:03
13F:→ yudofu: 時候,收送產生ti/ri都會產生中斷 08/20 10:03
14F:→ ResolaQQ: 我剛試了一下,手動把TI從0改到1似乎不會產生中斷對吧? 08/20 10:33
15F:推 yudofu: 中斷4的using1是用timer1的內部中斷,timer1的時間設定好b 08/20 11:13
16F:→ yudofu: aud rate之後,就會觸發中斷 08/20 11:13
17F:→ ResolaQQ: 不曉得您方不方便提供簡單範例,我真的搞不定... 08/20 17:39
18F:→ ResolaQQ: 用開關ES的方式寫是成功了,但跑的比while(TI==0);還慢 08/20 17:40
19F:推 yudofu: http://tinyurl.com/qzwqe6n 這是以前我買中國開發版附的 08/20 20:38
20F:→ yudofu: 範例,裡面註解是簡體的,他的範例是用中斷去定時檢查UART 08/20 20:39
21F:→ yudofu: 的收、有要發的時候main自己發,你的應用可以把發放在中斷 08/20 20:39
22F:→ yudofu: 裡面,中斷觸發時間檢查要送的東西是不是空的,是空的就跳 08/20 20:40
23F:→ yudofu: 出不送,有的話就用陣列循環發送到空為止,至於要送的資料 08/20 20:41
24F:→ yudofu: 就在main裡面寫。它的範例只是單純的把你輸入的字元loop回 08/20 20:41
25F:→ yudofu: 去,你可以把main裡面的程式通通搬到中斷,main裡面只有 08/20 20:42
26F:→ yudofu: while(1)工作也是正常,證明全部都是中斷在處理。 08/20 20:42
27F:→ ResolaQQ: 太感謝了,不過看著有點不太對勁,現在寫到腦袋打結 08/20 20:57
28F:→ ResolaQQ: 等睡醒再來研究,寫軟體跟寫硬體差好多,一堆怪問題... 08/20 20:58
29F:→ ResolaQQ: 他應該不是用中斷定時檢查耶,是因為有收到東西 08/21 03:42
30F:→ ResolaQQ: RI自動觸發中斷,我把它的程式燒進去試的結果是這樣 08/21 03:43
31F:→ yudofu: RI/Ti會觸發中斷,但是觸發之後用timer1按照鮑率去檢查中 08/21 06:38
32F:→ yudofu: 段要做的事情然後相當於自動設定timer把字節一個一個送出 08/21 06:40
33F:→ yudofu: 去 總之....就像程式寫的這樣啦 哈 08/21 06:40
34F:→ ResolaQQ: 了解,我先寫個基本款,確定會動再來處理這個問題好了 08/21 07:16
35F:→ ResolaQQ: 實作後發現延遲並不明顯,遠比軟體buffer的問題還小 08/23 17:10
36F:→ ResolaQQ: 看來可以不用管XD 以後有需要的時候再來研究 08/23 17:11







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP