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

標題: 關于中空編碼器讀脈沖問題 [打印本頁]

作者: 一夜暴富    時間: 2021-8-11 20:48
標題: 關于中空編碼器讀脈沖問題
我的想法是通過外部中斷來判斷脈沖數但轉動一次卻總是進入了兩次外部中斷,導致本來應該走一步的情況卻走了兩步。

硬件消抖電路大概是這樣的。
用示波器測試,黃色代表中斷觸發,綠色代表輸入脈沖信號,如果中斷觸發,中斷引腳的電平就進行一次翻轉
結果如圖
即明明只是一個上升沿信號,中斷卻觸發了兩次,一次升高一次下降


中斷代碼大致如上
希望各位可以提供一些解題思路


作者: lkc8210    時間: 2021-8-11 20:48
在中斷中用while()是什么神仙寫法?
中斷是用來處理突發/快速的信號
所以中斷中的代碼越簡單越好

而消抖電路也好像有點問題
不轉時電容充滿當開路
SW_A點為5V
轉動時SW_A點接地,瞬間0V
電容對地放電
再轉多少少
SW_A點接不接地,電容開始充電當短路
于是SW_A點被兩個10k電阻分壓得2.5V產生第一次上升沿
電容慢慢充滿,電流減少,SW_A點電壓慢慢上升
型成第二次上升沿
參考一下別人的消抖電路吧





另外如果轉動速度不快
可以不用中斷
詳情請參考我的貼子:一定位一脈沖的EC11旋轉編碼器最簡潔的單片機驅動代碼



作者: Y_G_G    時間: 2021-8-11 21:45
不知道你那是什么
EC11是這樣的:
使用定時器,1mS或者500uS判斷一下A和B的狀態
只要判斷哪個先出現低電平而已
如果是靜止狀態電平不固定,那就判斷哪個先出現電平變化
步數不同,方法也不同

作者: wulin    時間: 2021-8-12 08:10
樓主的硬件和軟件都不對


  1. #include "reg51.h"

  2. sbit SW_A=P3^3;
  3. //sbit SW_B=P3^2;

  4. unsigned char num;

  5. void main()
  6. {
  7.         INT0 = 1;
  8.         IT0 = 1;                    //設置INT0下降沿中斷
  9.         EX0 = 1;                    //使能INT0中斷
  10.         EA = 1;
  11.        
  12.         while(1);
  13. }

  14. void exint0() interrupt 0       //INT0中斷入口
  15. {
  16.    if(!SW_A)
  17.         {
  18.                 if(num<100)num++;       
  19.         }
  20.         else
  21.         {
  22.                 if(num>0)num--;
  23.         }
  24. }
復制代碼




作者: man1234567    時間: 2021-8-12 09:28
樓主的儀器的確有些高大上




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1