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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3759|回復: 11
收起左側

探討51單片機多機通訊的問題

[復制鏈接]
ID:47286 發表于 2017-4-19 14:13 | 顯示全部樓層 |閱讀模式
51單片機的多機通訊體系在整個系統里只有一個主機 其它都是從機 一直處在接收狀態 而且接收狀態要比較接收位是否呼叫的是自己 那這個時候如果主機想發送一個給所有模塊都接收的指令怎么辦 難道要把每個從機都喊一遍 那為什么不用一對一的方式 所有從機都判斷接收數據的第一位 如果和自己ID相符就是給自己的 不相符就不再接收 如果第一位表示廣播 就所有從機都動作 這樣雖然每次數據流發送都會多一位 總比一主多從都喊一遍快吧
回復

使用道具 舉報

ID:191208 發表于 2017-4-19 14:18 | 顯示全部樓層
說的有點籠統
回復

使用道具 舉報

ID:191208 發表于 2017-4-19 14:19 | 顯示全部樓層
能有相關的源碼嗎
回復

使用道具 舉報

ID:151348 發表于 2017-4-19 14:32 | 顯示全部樓層
既然有通信協議,而且第一位是ID,那么規定一個公用的ID,相當于一個從機有2個ID,一個ID為唯一ID,作為私聊用,另一個ID即公用ID,作為廣播收聽
回復

使用道具 舉報

ID:47286 發表于 2017-4-19 15:39 | 顯示全部樓層
imxuheng 發表于 2017-4-19 14:32
既然有通信協議,而且第一位是ID,那么規定一個公用的ID,相當于一個從機有2個ID,一個ID為唯一ID,作為私 ...

歐了 說的是
回復

使用道具 舉報

ID:47286 發表于 2017-4-19 16:21 | 顯示全部樓層
17719495093 發表于 2017-4-19 14:19
能有相關的源碼嗎

沒有源碼

我日常工作接觸以太網多 所以總想能不能讓UART像以太網一樣每個模塊隨意發送 UART很難完全做到 以太網通訊是分時復用 每個數據包里包括來源 目的 序號 等很多信息 單片機這么做開銷就太大了 不合算 但是想探討一下如何能更接近以太網模式

在百度上搜了一些51的多機通訊范例 讀之后有兩個問題

1. 多機通訊自身ID號也需要寫程序去對比 并不是有專門的寄存器設置后當發生串口中斷時自動對比 因此我并不覺得用多機方法比單機方法好 判斷上和單機通訊開銷一樣 卻比單機通訊多了對SM RB TB的操作

2. 多機通訊里 核心的問題并不是呼叫誰 而是信道的占用 UART從硬件上 發出去的東西每個模塊都可以收到 只要驅動能力夠就行 但UART不是分時復用 所有模塊收到指令后各自處理自己的沒問題 但如果有返回通訊就有相互沖突 這種沖突通訊量小影響小 假設254個模塊 每組數據50位 那就影響很大了

所以 只要解決信道占用問題 用一對一的方式就可以 不需要用更復雜的多機UART通訊 這個結論是基于發送一條廣播指令 要求每個模塊都執行并返回數據的情況 如果只控制其中一個模塊 那么只要把指令位的廣播定義改成ID號就可以

問題是 還沒想出怎么解決信道占用 就是說 如果廣播一個指令出去 要求所有模塊返回數據的時候 如何讓它們不會同時往回發東西 所以想和各位同仁及前輩探討一下
回復

使用道具 舉報

ID:151348 發表于 2017-4-19 21:25 | 顯示全部樓層
dzbj 發表于 2017-4-19 16:21
沒有源碼

我日常工作接觸以太網多 所以總想能不能讓UART像以太網一樣每個模塊隨意發送 UART很難完全做 ...

建議你考慮一下RS485+ModelBus,這個應該能滿足你的要求,這里有教程http://www.zg4o1577.cn/bbs/dpj-23230-1.html
回復

使用道具 舉報

ID:123289 發表于 2017-4-20 01:04 | 顯示全部樓層
樓主果然厲害,思維活躍,正點。
單片機的多機通訊功能與你的想法不矛盾,即便單片機無此功能,通過軟件協議也能達成樓主的思路。也就是樓主你所設想的方法。
單片機在多機接在一起時,有一對一的模式,但不排拆一對全體,如果對全體發令,切換一下模式即可。
單片機多機通訊功能,提供了一個更方便的通訊方案,要點是:從機配合中斷使用,可以做到:不“叫”自己不中斷,多方便呀。即大家同在一根線上,別人通訊時不會影響到我(不產生中斷),而“叫”我時才中斷。
回復

使用道具 舉報

ID:188312 發表于 2017-4-20 09:04 | 顯示全部樓層
正在弄這方面的資料
回復

使用道具 舉報

ID:188312 發表于 2017-4-20 09:04 | 顯示全部樓層
參考中,希望資料詳細點
回復

使用道具 舉報

ID:47286 發表于 2017-4-20 10:16 | 顯示全部樓層
imxuheng 發表于 2017-4-19 21:25
建議你考慮一下RS485+ModelBus,這個應該能滿足你的要求,這里有教程http://www.zg4o1577.cn/bbs/dpj-23230 ...

感謝前輩回復

我認為485只是UART的延長方式 并不改變UART的通訊結構 而從道理上 反而是UART的降級 因為UART是全雙工的 485是單工的 雙工485要用4條線 在較高的波特率下 單工也夠用 只要能解決信道占用問題

485發送時拉高單線 實際測試中 一個485拉高線電壓后 其它的485芯片好象不能反饋出總線的情況 如果能反饋 就好了
回復

使用道具 舉報

ID:47286 發表于 2017-4-20 10:32 | 顯示全部樓層
yzwzfyz 發表于 2017-4-20 01:04
樓主果然厲害,思維活躍,正點。
單片機的多機通訊功能與你的想法不矛盾,即便單片機無此功能,通過軟件協 ...

感謝前輩回復

可能是我學的還淺 有一點沒明白 前輩說的多機通訊可以不"叫"自己不中斷 但是我看其它范例程序 都是在接收到數據后在中斷或者其它地方用語句去判斷 不是把id存在某個寄存器里 發生中斷時自己去比對 那么和用單機通訊中 接收到一位就判斷是否呼叫自己有什么區別 實際上不管多機還是單機 如果只發送ID的話實際上上都中斷了一次 是這樣嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲91精品| 九色91视频 | 日韩欧美精品一区 | 国产综合精品一区二区三区 | 国产二区视频 | 91精品麻豆日日躁夜夜躁 | 91久久精品国产91久久性色tv | 观看av| 欧美xxxx色视频在线观看免费 | 成人影院网站ww555久久精品 | 色www精品视频在线观看 | 亚洲高清中文字幕 | 精品美女 | 亚洲精品永久免费 | 91久久久久久久久久久久久 | 欧美中文字幕在线观看 | 五月婷婷色 | 99精品欧美一区二区三区综合在线 | 亚洲免费人成在线视频观看 | 久久一起草 | 亚洲一区二区三区四区五区中文 | 精品一区二区三 | 国产在线观看一区二区 | 一本一道久久a久久精品蜜桃 | 麻豆成人在线视频 | 五月激情综合 | 成人在线一区二区 | 人碰人操 | 国产一区二区三区视频在线观看 | 成人h电影在线观看 | 日韩成人在线一区 | 99精品在线| 粉嫩一区二区三区国产精品 | av香港经典三级级 在线 | 亚洲国产精品一区二区第一页 | 免费观看黄a一级视频 | 国产日韩欧美一区二区 | 久久久妇女国产精品影视 | 在线成人www免费观看视频 | 国产成人亚洲精品 | 超碰高清 |