欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3384|回復: 5
收起左側

單片機IO如何檢測輸入信號是高/低電平還是連續方波?

[復制鏈接]
ID:997026 發表于 2023-8-16 20:27 | 顯示全部樓層 |閱讀模式
大家好,


如標題,現在需要根據單片機IO口輸入是高電平,低電平,還是方波,來決定另一個IO需要輸出什么。

舉例:
假設PA1口檢測到輸入高電平,則PA2輸出低電-----A
PA1輸入低電平,則PA2輸出高電平----------B
PA1輸入1Hz方波,則PA2輸出5Hz方波---------C

如果只是檢測PA1輸入高低電平,則比較簡單,現在加入了一個方波,感覺有點復雜了,不知道單片機代碼怎么寫了。
如果用外部中斷來檢測方波的上升沿或下降沿,好像也不行,因為上述由A變為B時,也會產生下降沿,這樣就和C無法區分了。
如果來計數C中上升沿或下降沿的個數來確定是方波,如果計數兩個,則要延時2s,PA2才會輸出,延時太大了。

大家有沒有比較好的思路?

謝謝


回復

使用道具 舉報

ID:213173 發表于 2023-8-17 06:04 | 顯示全部樓層
如果是占空比50%的方波,脈寬就是100ms。只要精度要求不太高,檢測高/低電平時間大于100ms,就判斷為持續高/低電平,小于或等于100ms 就判斷為5Hz方波。
回復

使用道具 舉報

ID:276663 發表于 2023-8-17 09:15 | 顯示全部樓層
這就要牽扯到分辨率了,1Hz切換頻率是500ms,PA2的反應速度最快也就是500ms,加上一些誤差余量幾個ms。使用定時器檢測PA1的引腳電平,做個超時,如果當前電平超過502ms就認為是高電平或者低電平,控制PA2的輸出。如果502ms以內切換了狀態就認為是1Hz的信號,控制PA2輸出5Hz信號。
回復

使用道具 舉報

ID:123289 發表于 2023-8-17 09:55 | 顯示全部樓層
1、給方波設個限(即定義一下),如頻率至少為多少才認為是方波。比如高電平持續10秒是方波嗎?20秒呢?你說它不是,可它每間隔30秒反轉一次。40秒呢?……,這樣就真的無界了。
你總要定義一個時間T,并認為IO持續時間T內無變化就是電平(不是方波)。
2、測量到IO的H/L后,不要急于下結論,繼續測,當連續T時間內,H/L無變化,就下結論是電平。
3、如果發生了變化也不是立即下結論是電平,再多等一個T,這樣在2T內,IO發生了H/L的重復變化,再下結論是方波。
當然,如果方波頻率快,則用不了2T的時間,就可以依據H/L的周期變化下結論了。
總結:
對于電平變化,可以立即下結論;對于方波確認,至少需要等待方波的一個周期時間,才能下結認。
而且延遲(等待)時間越長,結論越準確。
回復

使用道具 舉報

ID:123289 發表于 2023-8-17 09:57 | 顯示全部樓層
如果需要立即知道是不是方波,就需要找個大仙,給它算一下命了。
回復

使用道具 舉報

ID:1091455 發表于 2023-8-17 10:21 | 顯示全部樓層
步驟1:設置IO口為輸入上拉模式,讀取IO口狀態,假設用變量IO_State1記錄此時IO口狀態。
步驟2:設置IO口為輸入下拉模式,讀取IO口狀態,假設用變量IO_State2記錄此時IO口狀態。
步驟3:根據IO_State1和IO_State2真值表判斷IO口狀態。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表