久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3545|回復: 10
打印 上一主題 下一主題
收起左側

AVR單片機的串口通信被中斷打亂的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:28415 發表于 2021-6-4 09:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
ATMEGA328P單片機在接收串口信號時,INT0外部中斷發生。串口信號是否會被打亂,顯示出亂碼或完全接收不到串口信號了?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:342822 發表于 2021-6-4 10:49 | 只看該作者
補一下中斷優先級
回復

使用道具 舉報

板凳
ID:883031 發表于 2021-6-4 11:54 | 只看該作者
你看看外部中斷和串口中斷的優先級,51單片機的外部中斷0的優先級最高,如果你沒有把串口設為高優先級的話,肯定是會被打斷的。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:28415 發表于 2021-6-4 13:50 | 只看該作者
很多朋友們都對我說要設定一下中斷優先級,其實我的問題是:是否串口通信會被外部中斷打亂,并不是如何讓串口通信正常而忽略外部中斷。
回復

使用道具 舉報

5#
ID:28415 發表于 2021-6-4 13:51 | 只看該作者
其實我是想問當串口通訊和外部中斷都存在時,串口通信是否會被外部中斷打亂導致亂碼。并不是設置優先級的問題。
回復

使用道具 舉報

6#
ID:236035 發表于 2021-6-4 13:59 | 只看該作者
會不會被打亂,確實與優先級有關。所以那個中斷更重要,就要提高哪個中斷的優先級。
當外部中斷優先級更高時,串口通信肯定會被打亂,導致亂碼,甚至通訊失敗。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

7#
ID:28415 發表于 2021-6-4 14:01 | 只看該作者
好的,感謝感謝
回復

使用道具 舉報

8#
ID:383215 發表于 2021-6-4 21:58 | 只看該作者
AVR單片機有關中斷優先級的指令,一條都沒有,AVR單片機響應第一中斷,就會自動關閉所有中斷,需要響應第二中斷,就要在進入第一中斷打開第二中斷的允許,需要響應第三中斷,就要在進入第二中斷打開第三中斷的允許,越往后打開的中斷,優先級越高,退出第一中斷,又自動打開被允許的所有中斷,AVR的這種中斷處理方式比51單片機先進很多,51單片機也可以用這種方式處理中斷,只是退出中斷時要把關閉的中斷打開,不必設置中斷優先級。
接收串口信號時,INT0外部中斷發生。串口信號是否會被打亂?這個要看具體情況,INT0外部中斷從響應到退出的最大時間,不大于串口接收一個字節的時間,串口信號不會打亂,反之,肯定會打亂,只有在INT0外部中斷里加一個串口接收中斷的允許,相當于串口接收的優先級高于INT0外部中斷,也就是串口接收中斷可以嵌套于INT0外部中斷,這個還必須保證串口接收中斷不能影響INT0外部中斷,否則還要另外想辦法。最理想的編程方式是主程序和各個中斷程序互不影響,最近我用兩片ATMEGA8編串口程序,從機發給主機的主要數據只有三個字節,次要數據也是三個字節,我就用四個字節當數據頭,加上六個數據,一共十個數據,就在INT0外部中斷里發送,我的INT0外部中斷是過零信號,也就是0.01秒響應一次,這個INT0外部中斷不能被任何程序打斷,否則過零觸發可控硅就不準確了,那么我只要保證這個INT0外部中斷程序的最大時間不大于0.01秒就可以了,用INT0外部中斷計數,每十次發一個數據,那么我發送一個數據的時間不超過0.1秒,INT0外部中斷和發送程序就互不干擾,連發送中斷都不需要,主機每0.1秒接收一次數據,相當于有了一個每0.1秒進入一次接收數據的中斷,就保證了兩個單片機的時鐘同步,主機發送給從機的數據僅有一個字節,就一秒鐘發一次,只要從機的任何程序不超過一秒鐘,接收就沒有問題,從機肯定沒有超過一秒的程序,隨便找個空閑的地方,打開接收中斷允許,進入接收中斷收到數據后立即關閉接收中斷。這樣的結果是從機發給主機到接收到主機的信號,最大時間是兩秒鐘了,然而對我控制的電器沒有影響,編任何單片機程序都應該把輕重緩急搞清楚,該快的地方快速處理,可以慢的地方慢慢處理,所有程序互不影響。

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

9#
ID:28415 發表于 2021-6-4 22:20 | 只看該作者
kmsj 發表于 2021-6-4 21:58
AVR單片機有關中斷優先級的指令,一條都沒有,AVR單片機響應第一中斷,就會自動關閉所有中斷,需要響應第二 ...

感謝你的分享。
與你寫的方法類似,我現在也是用2片單片機,第一片單片機用來接收外部中斷,10個中斷后發送一個串口指令給第2片單片機,并且連發,當第2片單片機接收到完整的一串指令后回復,只有第1個單片機得到回復指令后,才會停止發送。第2片單片機主要用來處理數據和接收完整的數據。
回復

使用道具 舉報

10#
ID:383215 發表于 2021-6-5 22:15 | 只看該作者
mxlslf 發表于 2021-6-4 22:20
感謝你的分享。
與你寫的方法類似,我現在也是用2片單片機,第一片單片機用來接收外部中斷,10個中斷后 ...

不用謝!那你只要把串口收發中斷設置為高優先級,就不會被外部中斷打亂,串口收發中斷不影響外部中斷,程序就不難編。無論是51還是AVR,我編的串口程序很少,這次編串口程序發現,按一定的時間一個數據一個數據的收發,比收發一串數據更簡單,我傳送的是溫度和重量值,這些值是漸變,不是突變,我就可以慢慢傳,我編程序喜歡慢中求穩。
回復

使用道具 舉報

11#
ID:932412 發表于 2021-6-6 11:27 | 只看該作者
你先確保只有串口一個中斷時,顯示是否正常,如果正常,在排查其他方面吧。至少保證第一步接收不會時亂碼
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产欧美一区二区三区成人 | 超碰地址 | 久久久久久久一区 | 亚洲精品粉嫩美女一区 | 日韩成人精品视频 | 国产高潮好爽受不了了夜色 | 成人午夜在线 | 男女视频在线观看免费 | 亚洲欧洲精品一区 | www午夜视频 | 久久久久无码国产精品一区 | 亚洲欧美视频一区 | 国产精品色 | 国产精品久久久久久婷婷天堂 | 亚州一区二区三区 | 免费日韩av | 国产91在线播放精品91 | 啪啪综合网 | 日本三级网站在线 | 欧美a区| 欧美一区二区综合 | 久久久新视频 | 欧美精品1区2区3区 精品国产欧美一区二区 | 日韩av大片免费看 | 丝袜美腿一区二区三区动态图 | 国产高清在线 | 欧美一区二区在线视频 | 国产高清在线精品一区二区三区 | 国产一级在线观看 | 四虎影院新地址 | 欧美久久久久 | 岛国精品| 97精品超碰一区二区三区 | 国产欧美久久精品 | 黄色一级毛片免费看 | 久久亚洲欧美日韩精品专区 | 国产精品射 | 91精品久久久 | 91在线观看免费视频 | 成人激情视频在线 | 久久精品亚洲欧美日韩久久 |