我目前正在atmega 2560上的一个项目中,我需要同步控制多个步进电机。这意味着有时一次只能旋转一个电动机,有时多个电动机需要在精确的相同角度同时旋转。在计划我的方法时,我遇到了一个问题,我不确定该如何解决。因此,我决定看看是否有人可以给我宝贵的建议。 我正在用C ++编写程序,我想为步进电机(see attached UML)创建一个类,该类具有一个rotate()方法,您猜想它可以将步进器沿定义的方向旋转特定角度。现在,现在当然会出现计时问题,因为我需要以不阻塞任何其他代码的方式实现该功能,并使我能够同时转动多个电机。我想出了两种可能的方法:
现在我向大家提出的问题是,您认为最有效的可能性是什么,或者如果还有其他事情,我可以尝试吗?我非常有信心可以实现以上任何一个,但是我对两者都不满意。使用计数器和中断以确保准确的计时是正确的。但是,为活动步进器提供外部表的方法使程序难以理解。此外,我还遇到了使ISR适应面向对象世界的问题。
任何想法或贡献都受到高度赞赏。
最好的问候 Axodarap
答案 0 :(得分:0)
我建议您使用ISR。
存储有关步进器的数据有什么问题?您不需要外部表来进行主动步进,否则我会误会您。您可以在ISR中使用静态变量,以防止它们在执行后消失。