最新进展: 6楼朋友说的对,之前用两个外部中断是搞复杂了。现在去掉外部中断,直接用定时器0,加上扫描I/O按键也可以实现连续调速了。 问题已解决,感谢大家关注! |
我应该是找到原因了!开发板上的红外接收传感器与 K3按键 共用 P3.2 口,而外部中断INT0也是P3.2口。红外传感器拔了就没有干扰了!同样用遥控器对着红外接收器按也会跳变的。 没仔细看教材说明啊,还以为开发板不行呢 |
lids 发表于 2022-9-16 10:36 因为我用过你说的方法对定时器重装初值,但定时器不听话 |
ningsy 发表于 2022-9-16 09:38 那你按键不要用外部中断检测,直接读IO口的高低电平不就行了吗?一个普通按键为什么非要开外部中断 |
这种节能灯就是有干扰的,特别是开关的时候,你的系统只是被干扰,程序没跑飞,所以还不用狗来重启。哪种芯片都会被干扰,你要根据你系统的要求,从硬件和软件两种方式去处理,完全不怕干扰是不可能的。 |
这个程序是在一个方波发生器的基础上改的,可以理解为只输出脉冲、方向、使能三个信号(还用驱动器细分和复位信号,我觉得设计电路板时直接上拉就行)。我原来用的是数字调转速的程序,感觉还是现在这个好,贴近实际需求。原来那个没用外部中断,但开灯瞬间数值也会往上跳。 |
小黑屋525 发表于 2022-9-16 08:58 我觉得不是电源的原因。开发板我换了电池供电,应该没波动。电机是12V外电源供电,但就是把12V断了干扰依旧。 我也查了别人的帖子,说使用外部中断容易受干扰,我程序里加减电机频率的两个按键就是用的外部中断实现的(查询外部中断的按键是否按下,若按下重新给定时器1重装初值改频率),有说中断里加延时的,我加了效果有改善但还不行;有说空闲I/O口不管上拉下拉,能拉的全拉上的,这个还没试。 |
这个很正常,说白了就是开发板的稳压芯片用的很差,而电机的消耗又非常大,开灯的一瞬间稳压芯片没稳住。 |