目前在做直线电机驱动,一个定子两端都有光电开关,当动子进入时,检测到光电开关,程序自动上电开始驱动;当退出时又检测到端部的光电开关,此时想实现程序恢复至最初始的状态,等待新动子进入触发光电开关,再次上电驱动,重复之前的驱动过程。想实现这样的循环驱动,应该如何让用到的寄存器都恢复初始设置呢,需要一个个设置吗,还是直接将程序初始化回到最开始的main,等待新动子进入?
Green Deng:你好,我觉得如果要全部恢复初始的话,可以简单点,将转子退出时的信号做到复位引脚上,这样每次退出都可以复位芯片。当然,这样的话其他的模块也会同时复位。
目前在做直线电机驱动,一个定子两端都有光电开关,当动子进入时,检测到光电开关,程序自动上电开始驱动;当退出时又检测到端部的光电开关,此时想实现程序恢复至最初始的状态,等待新动子进入触发光电开关,再次上电驱动,重复之前的驱动过程。想实现这样的循环驱动,应该如何让用到的寄存器都恢复初始设置呢,需要一个个设置吗,还是直接将程序初始化回到最开始的main,等待新动子进入?
user5288687:
回复 Green Deng:
您好,这样的话,那是不是又得重新debug才能重新驱动了,还是说这样处理是回到了程序的最开始?然后检测到有新动子进入又自动执行?
目前在做直线电机驱动,一个定子两端都有光电开关,当动子进入时,检测到光电开关,程序自动上电开始驱动;当退出时又检测到端部的光电开关,此时想实现程序恢复至最初始的状态,等待新动子进入触发光电开关,再次上电驱动,重复之前的驱动过程。想实现这样的循环驱动,应该如何让用到的寄存器都恢复初始设置呢,需要一个个设置吗,还是直接将程序初始化回到最开始的main,等待新动子进入?
Green Deng:
回复 user5288687:
不用debug,就是复位了一下芯片。等于每次转子退出后都给芯片复位一次
目前在做直线电机驱动,一个定子两端都有光电开关,当动子进入时,检测到光电开关,程序自动上电开始驱动;当退出时又检测到端部的光电开关,此时想实现程序恢复至最初始的状态,等待新动子进入触发光电开关,再次上电驱动,重复之前的驱动过程。想实现这样的循环驱动,应该如何让用到的寄存器都恢复初始设置呢,需要一个个设置吗,还是直接将程序初始化回到最开始的main,等待新动子进入?
user5288687:
回复 Green Deng:
如果是在线调试的话,意思是不是就是回到了程序的入口地址,一旦程序被触发就会重新开始运行?
目前在做直线电机驱动,一个定子两端都有光电开关,当动子进入时,检测到光电开关,程序自动上电开始驱动;当退出时又检测到端部的光电开关,此时想实现程序恢复至最初始的状态,等待新动子进入触发光电开关,再次上电驱动,重复之前的驱动过程。想实现这样的循环驱动,应该如何让用到的寄存器都恢复初始设置呢,需要一个个设置吗,还是直接将程序初始化回到最开始的main,等待新动子进入?
Green Deng:
回复 user5288687:
是的,这样的话在线调试就会比较麻烦,只是逻辑比较简单
目前在做直线电机驱动,一个定子两端都有光电开关,当动子进入时,检测到光电开关,程序自动上电开始驱动;当退出时又检测到端部的光电开关,此时想实现程序恢复至最初始的状态,等待新动子进入触发光电开关,再次上电驱动,重复之前的驱动过程。想实现这样的循环驱动,应该如何让用到的寄存器都恢复初始设置呢,需要一个个设置吗,还是直接将程序初始化回到最开始的main,等待新动子进入?
user5288687:
回复 Green Deng:
那如果我把电机控制的程序烧进flash,上电启动,理论上按一下板子上的复位按钮肯定也可以实现程序重新运行;那当检测到转子退出的光电开关信号时,能不能从软件上使能复位按钮的功能呢,也就是不通过手动按复位键?
目前在做直线电机驱动,一个定子两端都有光电开关,当动子进入时,检测到光电开关,程序自动上电开始驱动;当退出时又检测到端部的光电开关,此时想实现程序恢复至最初始的状态,等待新动子进入触发光电开关,再次上电驱动,重复之前的驱动过程。想实现这样的循环驱动,应该如何让用到的寄存器都恢复初始设置呢,需要一个个设置吗,还是直接将程序初始化回到最开始的main,等待新动子进入?
Green Deng:
回复 user5288687:
软件复位的话可以用看门狗,通过WDCR.WDCHK写非101的值,则会产生一个软件的复位。
目前在做直线电机驱动,一个定子两端都有光电开关,当动子进入时,检测到光电开关,程序自动上电开始驱动;当退出时又检测到端部的光电开关,此时想实现程序恢复至最初始的状态,等待新动子进入触发光电开关,再次上电驱动,重复之前的驱动过程。想实现这样的循环驱动,应该如何让用到的寄存器都恢复初始设置呢,需要一个个设置吗,还是直接将程序初始化回到最开始的main,等待新动子进入?
user5288687:
回复 Green Deng:
那这个复位的效果也是让程序回到入口地址,重新运行程序吧,那我是不是可以通过退出时的光电信号,来让看门口复位,让程序重新运行。
目前在做直线电机驱动,一个定子两端都有光电开关,当动子进入时,检测到光电开关,程序自动上电开始驱动;当退出时又检测到端部的光电开关,此时想实现程序恢复至最初始的状态,等待新动子进入触发光电开关,再次上电驱动,重复之前的驱动过程。想实现这样的循环驱动,应该如何让用到的寄存器都恢复初始设置呢,需要一个个设置吗,还是直接将程序初始化回到最开始的main,等待新动子进入?
Yazhou Zhao:使用看门狗重新设置一下
目前在做直线电机驱动,一个定子两端都有光电开关,当动子进入时,检测到光电开关,程序自动上电开始驱动;当退出时又检测到端部的光电开关,此时想实现程序恢复至最初始的状态,等待新动子进入触发光电开关,再次上电驱动,重复之前的驱动过程。想实现这样的循环驱动,应该如何让用到的寄存器都恢复初始设置呢,需要一个个设置吗,还是直接将程序初始化回到最开始的main,等待新动子进入?
user4827220:支持