找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1259|回复: 6
收起左侧

关于单片机数码管显示对步进电机驱动的影响

[复制链接]
ID:959891 发表于 2021-8-10 22:33 | 显示全部楼层 |阅读模式
用的吴鉴鹰的板子,我自己编写了一个用数字旋转编码器来选择步进电机运行方式的程序。旋转编码器为1,步进电机就转1圈;旋转编码器为2,步进电机就转2圈;旋转编码器为3,步进电机就转3圈。旋转编码器的数值是在数码管上显示。   使用硬件:吴鉴鹰开发板     使用编译器:Keil
如果我把数码管显示函数和步进电机驱动函数都在T0中断函数中执行,2ms进入一次中断,步进电机可以按照旋转编码器对应的数字来旋转。如果数码管显示函数在T0中断函数中执行,步进电机驱动函数都在T1中断函数中执行,T0中断2ms进入一次,T1中断2ms进入一次,步进电机却一直在抖动,不能有效转动。两个中断是怎么互相影响的呢,有没有办法解决。我有附上keil工程文件。数码管显示函数和步进电机驱动函数都在T0中断函数中执行,步进电机有效转动:
1.png
数码管显示函数在T0执行,步进电机驱动函数在T1中断函数中执行,步进电机不能有效转动: 2.png


lession17.rar

37 KB, 下载次数: 8

Keil工程文件

回复

使用道具 举报

ID:57657 发表于 2021-8-11 07:21 | 显示全部楼层
请配置中断优先级控制寄存器 PT0、PT1。
回复

使用道具 举报

ID:752974 发表于 2021-8-11 08:29 | 显示全部楼层
程序设计思想有问题,第一,中断服务程序要短小精悍,执行时间尽可能的短,不然,CPU在中断中时间较长,其它任务得不到CPU的服务;第二,T0,T1的中断优先级不同,T0高于T1,这个搞清楚了,就明白了如何设计程序了。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:959891 发表于 2021-8-11 11:22 | 显示全部楼层
npn 发表于 2021-8-11 07:21
请配置中断优先级控制寄存器 PT0、PT1。

我设置了PT1=1,PT0=0,还是没有办法解决问题哟。你看看怎么验证才行?
回复

使用道具 举报

ID:959891 发表于 2021-8-11 11:30 | 显示全部楼层
munuc_w 发表于 2021-8-11 08:29
程序设计思想有问题,第一,中断服务程序要短小精悍,执行时间尽可能的短,不然,CPU在中断中时间较长,其 ...

我设置了中断优先级,寄存器PT1=1,PT0=0,还是不能转动步进电机。这样设置,即使正在相应T0的中断函数,T1触发时也会跳到T1中断去执行,怎么还是不能转动呢?
回复

使用道具 举报

ID:959891 发表于 2021-8-11 16:08 | 显示全部楼层
本帖我已经找到了问题所在,是因为T0定时器初始化的问题,TMOD=0x01这个语句导致影响到T1的工作方式。T1工作方式本来想要是方式1,TMOD=0x10,但是T0初始化时TMOD又被赋值一遍TMOD=0x01,最终T1工作在方式0,定时的时间没有按照预想的进行。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:819198 发表于 2021-8-11 16:17 | 显示全部楼层
要查问题,可以在软件加一些标记,用硬件的发光管指示,看看程序怎么走的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表