搜索
bottom↓
回复: 8

求助,51定时器中断输出脉冲控制步进

[复制链接]

出0入0汤圆

发表于 2010-10-6 00:24:54 | 显示全部楼层 |阅读模式
学51也有快半年了,却什么也没搞成,最近准备使用51定时器中断输出脉冲来控制步进,有现成的驱动,参考书上公式计算的定时器初值,输出的脉冲频率却低了很多,想来肯定是初值计算出的问题,却不知道该如何计算才正确,找了好多资料也没结果,望那位大哥帮忙指点一二,谢谢!

(原文件名:计算初值.png)


//晶振 12M
//使用定时器中断输出50KHZ脉冲,用来驱动步进)

void timer1(void) interrupt 3
{
Motor_CLK=~Motor_CLK;
TH1=0xff;
  TL1=0xec;
}
void main(void)
{
// AUXR|=0x40; //定时器工作在1T模式
TMOD=0x10; //定时器工作方式为1
TH1=0xff;  //
  TL1=0xec;

Motor_CLK=0;
RUN_LED=1; //运行led灭 低电平有效
STOP_LED=1; //停止led亮 高电平有效
TR1=1;
ET1=1;
//EA=1;
while(1)//循环等待
  {
    if (START_key==0)  //按下开始按钮
    {
         EA=1;      //开总中断,启动脉冲输出
         RUN_LED=0;  //运行led亮
         STOP_LED=0; //停止led灭
     }
       
    if (STOP_key==0)   //按下停止按钮
         {
          EA=0;       //关总中断,停止脉冲输出
          RUN_LED=1;   
      STOP_LED=1;
         }  
  }


}

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

 楼主| 发表于 2010-10-6 00:52:58 | 显示全部楼层
补充下,我使用的是STC12C5A60S2,看资料说是1T的单片机,使用1T模式,脉冲同样也不对,还发现个问题,就是按下START时,输出脉冲会变慢!翻了很多资料,发现公式没错啊,什么原因,那位大哥指点下!感激!

出0入0汤圆

发表于 2010-10-6 03:14:24 | 显示全部楼层
"使用定时器中断输出50KHZ脉冲,"

that's potentially too high, as you may not have enough time to process the interrupt before the next interrupt is fired.

try something lower.

出0入0汤圆

 楼主| 发表于 2010-10-6 08:19:13 | 显示全部楼层
回复【2楼】millwood0
"使用定时器中断输出50khz脉冲,"
that's potentially too high, as you may not have enough time to process the interrupt before the next interrupt is fired.
try something lower.
-----------------------------------------------------------------------

好早哦,谢谢你的回复,我想问下,单纯就这个计算方法来说的话,有错误吗?如果没办法,我就使用低点的脉冲来试试了!因为之前在坛子里看到高手使用51输出2路100K脉冲,还需要对脉冲计数,所以我觉得应该问题不大的呀!

出0入0汤圆

 楼主| 发表于 2010-10-6 14:28:01 | 显示全部楼层
【2楼】millwood0
"使用定时器中断输出50khz脉冲,"
that's potentially too high, as you may not have enough time to process the interrupt before the next interrupt is fired.
try something lower.
-----------------------------------------------------------------------

应该不全是脉冲过高的原因,我把初值改大后,脉冲噌就上来了,总觉的是计算哪个位置出了问题!

出0入0汤圆

 楼主| 发表于 2010-10-6 14:28:46 | 显示全部楼层
【2楼】millwood0
"使用定时器中断输出50khz脉冲,"
that's potentially too high, as you may not have enough time to process the interrupt before the next interrupt is fired.
try something lower.
-----------------------------------------------------------------------

应该不全是脉冲过高的原因,我把初值改大后,脉冲噌就上来了,总觉的是计算哪个位置出了问题!

出0入0汤圆

发表于 2010-10-8 17:21:46 | 显示全部楼层
肯定是脉冲过高的问题,如果50khz的话就意味着定时器的中断时间是20us,这样的时间太短了,

出0入0汤圆

 楼主| 发表于 2010-10-8 23:49:39 | 显示全部楼层
回复【6楼】jack821119
肯定是脉冲过高的问题,如果50khz的话就意味着定时器的中断时间是20us,这样的时间太短了,
-----------------------------------------------------------------------
找到答案了,的确是时间太短,但这还不是主要问题,主要问题是:
因为是在定时器中断中反转P3.5 来实现脉冲输出,则如需要输出脉冲50K,定时器需中断100K次,而我一直是以50K来计算,所以脉冲刚好少了一半多,把这个问题解决后,再把定时器中断的那几个指令算上去,补偿下,就差不多了;最终上面的这段测试程序,可以实现稳定的输出脉冲是45K左右,上50K那就要不准了,可能得重新计算补偿,再去学学PWM硬件处理,貌似比定时器中断更好实现!多谢各位!

出0入0汤圆

发表于 2017-1-12 12:10:52 来自手机 | 显示全部楼层
路过!学习
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 19:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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