最近在玩平衡小车,用一个定时器产生定时中断处理数据,另一个定时器产生PWM波,然后会因为进入中断而影响PWM波的输出,然后车轮就一抽一抽的,特别诡异
2条回答 默认 最新
- 嵌入式开发梦水 2023-10-17 00:07关注
总结平衡小车出现的各种问题汇总
平衡小车的设计确实需要考虑很多因素,包括定时中断和PWM波的控制。如果你的车轮出现抽搐的问题,可能是由于定时中断和PWM波之间的冲突所导致的。
首先,你可以确保两个定时器的中断优先级设置正确。如果一个中断的优先级较高,它会在另一个中断之前被处理,从而可能导致不稳定的PWM波输出。
其次,定时中断处理数据的时间应该尽可能短,以避免对PWM波输出的干扰。你可以使用中断处理函数内部的一些优化技巧,例如使用一些临时变量和缓存,以减少处理时间。
此外,你还可以考虑对PWM波的输出进行缓冲处理,以平滑输出。可以使用一个缓冲数组来存储每个周期的PWM波占空比值,并在定时中断处理数据时对缓冲数组进行更新。然后,在PWM波产生的中断中,从缓冲数组中读取占空比值,以确保稳定的输出。
最后,如果以上方法没有解决问题,还可以考虑使用更高级的控制算法,例如PID控制,以更精确地控制平衡小车的运动和PWM波的输出。
总之,解决平衡小车抽搐问题需要综合考虑多个因素,包括中断优先级、处理时间、缓冲处理等。希望以上建议能对你有所帮助!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报