金色大元宝 发表于 2021-3-31 16:19:16

STC15W408AS的INT0中断里,能读取另一个IO电平吗?

用STC15W408AS做一个正交编码AB相正反转滤波,发现滤波计数不会自增,是不是哪里需要加延时?

不加if (cnt_CW >= FILTER_PLUSE)判断,P10 LED灯正常闪灭,正转亮,反转灭。

但是只要加上判断,就算FILTER_PLUSE只设定为2,P10 就不会亮了。 感觉像cnt_CW没有自增上去。

void Init_INT0(void)
{
    EX0 = 1;       /* 开外部中断0 */
    IT0 = 1;       /* 下降沿中断 */
    EA= 1;       /* 开总中断 */
}


void Ext_INT0 (void) interrupt INT0_VECTOR
{
        //P32 INT0接AP34 接B

        if( P34 == 0 ) //B低电平,正转
        {
                cnt_CCW = 0;

                cnt_CW ++;

                if (cnt_CW >= FILTER_PLUSE)
                {
                        P10 = 1;
                }                              
    }
        else
        {
                cnt_CW = 0;       

                cnt_CCW ++;
               
                if (cnt_CCW >= FILTER_PLUSE)
                {
                        P10 = 0;
                }               
        }
}

金色大元宝 发表于 2021-3-31 16:23:47

INT0中断频率能响应到到多少? 1M?

qd118118 发表于 2021-3-31 22:43:18

正交编码送中断计数前感觉要用数字电路处理下才行,否则采样速度跟不上,stc8h才有直接带正交编码的

金色大元宝 发表于 2021-4-1 08:00:49

qd118118 发表于 2021-3-31 22:43
正交编码送中断计数前感觉要用数字电路处理下才行,否则采样速度跟不上,stc8h才有直接带正交编码的 ...

应该是中断里处理速度不够,只保留自增,把判断放在外面主循环,就可以。

68336016 发表于 2021-4-1 08:26:19

不知你的编码器信号频率多快?
我用72m的stm32f103的编码器接口,也就能识别3,4百kHz的编码器信号。

小李非刀 发表于 2021-4-6 23:20:27

任何中断里,都可以读取任何IO的电平,不管这个IO设置为什么模式。

kundi 发表于 2021-4-7 00:25:12

68336016 发表于 2021-4-1 08:26
不知你的编码器信号频率多快?
我用72m的stm32f103的编码器接口,也就能识别3,4百kHz的编码器信号。 ...

应该用寄存器来读比较快吧?你是确定用寄存器而不是库函数。
之前也是同样条件,IO模拟SPI,72MHZ下,库函数也就几百KHZ,寄存器就可以达到8MHZ,位操作就比寄存器的慢一些。

金色大元宝 发表于 2021-5-14 11:19:01

忘结贴了。应该还是中断里运行速度的问题。

后来弃用了STC,用了STM8S103和STM8S105,同样的中断代码,运行一切正常。

DHAD 发表于 2021-5-16 20:57:10

频率能到多少?
页: [1]
查看完整版本: STC15W408AS的INT0中断里,能读取另一个IO电平吗?