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;
}
}
} INT0中断频率能响应到到多少? 1M? 正交编码送中断计数前感觉要用数字电路处理下才行,否则采样速度跟不上,stc8h才有直接带正交编码的 qd118118 发表于 2021-3-31 22:43
正交编码送中断计数前感觉要用数字电路处理下才行,否则采样速度跟不上,stc8h才有直接带正交编码的 ...
应该是中断里处理速度不够,只保留自增,把判断放在外面主循环,就可以。 不知你的编码器信号频率多快?
我用72m的stm32f103的编码器接口,也就能识别3,4百kHz的编码器信号。 任何中断里,都可以读取任何IO的电平,不管这个IO设置为什么模式。 68336016 发表于 2021-4-1 08:26
不知你的编码器信号频率多快?
我用72m的stm32f103的编码器接口,也就能识别3,4百kHz的编码器信号。 ...
应该用寄存器来读比较快吧?你是确定用寄存器而不是库函数。
之前也是同样条件,IO模拟SPI,72MHZ下,库函数也就几百KHZ,寄存器就可以达到8MHZ,位操作就比寄存器的慢一些。 忘结贴了。应该还是中断里运行速度的问题。
后来弃用了STC,用了STM8S103和STM8S105,同样的中断代码,运行一切正常。 频率能到多少?
页:
[1]