标题: 关于单片机数码管显示对步进电机驱动的影响 [打印本页]

作者: yermsir    时间: 2021-8-10 22:33
标题: 关于单片机数码管显示对步进电机驱动的影响
用的吴鉴鹰的板子,我自己编写了一个用数字旋转编码器来选择步进电机运行方式的程序。旋转编码器为1,步进电机就转1圈;旋转编码器为2,步进电机就转2圈;旋转编码器为3,步进电机就转3圈。旋转编码器的数值是在数码管上显示。   使用硬件:吴鉴鹰开发板     使用编译器:Keil
如果我把数码管显示函数和步进电机驱动函数都在T0中断函数中执行,2ms进入一次中断,步进电机可以按照旋转编码器对应的数字来旋转。如果数码管显示函数在T0中断函数中执行,步进电机驱动函数都在T1中断函数中执行,T0中断2ms进入一次,T1中断2ms进入一次,步进电机却一直在抖动,不能有效转动。两个中断是怎么互相影响的呢,有没有办法解决。我有附上keil工程文件。数码管显示函数和步进电机驱动函数都在T0中断函数中执行,步进电机有效转动:

数码管显示函数在T0执行,步进电机驱动函数在T1中断函数中执行,步进电机不能有效转动:


lession17.rar

37 KB, 下载次数: 8

Keil工程文件


作者: npn    时间: 2021-8-11 07:21
请配置中断优先级控制寄存器 PT0、PT1。
作者: munuc_w    时间: 2021-8-11 08:29
程序设计思想有问题,第一,中断服务程序要短小精悍,执行时间尽可能的短,不然,CPU在中断中时间较长,其它任务得不到CPU的服务;第二,T0,T1的中断优先级不同,T0高于T1,这个搞清楚了,就明白了如何设计程序了。
作者: yermsir    时间: 2021-8-11 11:22
npn 发表于 2021-8-11 07:21
请配置中断优先级控制寄存器 PT0、PT1。

我设置了PT1=1,PT0=0,还是没有办法解决问题哟。你看看怎么验证才行?
作者: yermsir    时间: 2021-8-11 11:30
munuc_w 发表于 2021-8-11 08:29
程序设计思想有问题,第一,中断服务程序要短小精悍,执行时间尽可能的短,不然,CPU在中断中时间较长,其 ...

我设置了中断优先级,寄存器PT1=1,PT0=0,还是不能转动步进电机。这样设置,即使正在相应T0的中断函数,T1触发时也会跳到T1中断去执行,怎么还是不能转动呢?
作者: yermsir    时间: 2021-8-11 16:08
本帖我已经找到了问题所在,是因为T0定时器初始化的问题,TMOD=0x01这个语句导致影响到T1的工作方式。T1工作方式本来想要是方式1,TMOD=0x10,但是T0初始化时TMOD又被赋值一遍TMOD=0x01,最终T1工作在方式0,定时的时间没有按照预想的进行。
作者: rz12345    时间: 2021-8-11 16:17
要查问题,可以在软件加一些标记,用硬件的发光管指示,看看程序怎么走的。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1