智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2547|回复: 4
打印 上一主题 下一主题

[软件类] 急急急!!清华方案的1ms中断有处不明白,菜鸟求解高手

[复制链接]

22

主题

246

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4997
QQ
威望
2596
贡献
1389
兑换币
860
注册时间
2011-12-17
在线时间
506 小时
跳转到指定楼层
1#
发表于 2012-4-13 14:02:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
清华的1ms中断里面的g_n1MSEventCount这个全局变量是怎么计数的啊,1ms自加1吗?没看到自加的句子,不知道它是怎么来的,五个中断片段执行条件是1ms判断一次,每个片段是5ms执行一次吗?没理解,这段程序。纠结滤波菜鸟跪求大神!!!谢谢了!!

void TI1_OnInterrupt(void){
    int i;
    g_nSpeedControlPeriod ++;
    SpeedControlOutput();

    g_nDirectionControlPeriod ++;
    DirectionControlOutput();

    if(g_n1MSEventCount >= CONTROL_PERIOD) {
        g_n1MSEventCount = 0;
        GetMotorPulse();    读取两个电极脉冲计数值
    } else if(g_n1MSEventCount == 1) {         
        for(i = 0; i < INPUT_VOLTAGE_AVERAGE; i ++)
            SampleInputVoltage();
} else if(g_n1MSEventCount == 2) {
        GetInputVoltageAverage();
        AngleCalculate();
        AngleControl();   
        MotorOutput();     
    } else if(g_n1MSEventCount == 3) {
        g_nSpeedControlCount ++;
        if(g_nSpeedControlCount >= SPEED_CONTROL_COUNT) {
            SpeedControl();
            g_nSpeedControlCount = 0;
            g_nSpeedControlPeriod = 0;
        }      
    } else if(g_n1MSEventCount == 4) {   
        g_nDirectionControlCount ++;
        DirectionVoltageSigma();
        if(g_nDirectionControlCount >= DIRECTION_CONTROL_COUNT) {
            DirectionControl();
            g_nDirectionControlCount = 0;
            g_nDirectionControlPeriod = 0;
    }
}

10

主题

110

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2449
QQ
威望
1329
贡献
636
兑换币
349
注册时间
2011-12-9
在线时间
242 小时
2#
发表于 2012-4-13 15:17:25 | 只看该作者
同求啊,我也是用官方的方案,卡在这个中断这里了,加我QQ:19504643
回复 支持 反对

使用道具 举报

2

主题

311

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2811

论坛骨干奖章优秀会员奖章技术大牛奖章

威望
1705
贡献
606
兑换币
245
注册时间
2011-3-28
在线时间
250 小时
3#
发表于 2012-4-13 17:55:43 | 只看该作者
请自行在中断服务程序里增加上g_n1MSEventCount ++语句即可。
这是作者在整理文章是,将原程序进行简化时错删了这个语句。
你们可以从竞赛网站下载DSC程序对照其中该函数即可发现的确是作者遗漏了这个语句了。

回复 支持 反对

使用道具 举报

22

主题

246

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4997
QQ
威望
2596
贡献
1389
兑换币
860
注册时间
2011-12-17
在线时间
506 小时
4#
 楼主| 发表于 2012-4-13 18:08:03 | 只看该作者
吉他手 发表于 2012-4-13 17:55
请自行在中断服务程序里增加上g_n1MSEventCount ++语句即可。
这是作者在整理文章是,将原程序进行简化时错 ...

多谢吉他手老师!!就是看的郁闷了,计数变量怎么就光有条件判断,没有自加语句呢。现在知道了。5个中断片段就是按照标志位顺序执行,第一个片段第一个1ms执行,第二个片段第二个1ms执行……以此类推?不知道我理解的对么?
回复 支持 反对

使用道具 举报

6

主题

125

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2430
威望
1134
贡献
690
兑换币
751
注册时间
2013-11-14
在线时间
303 小时
5#
发表于 2014-3-3 10:00:09 | 只看该作者
吉他手 发表于 2012-4-13 17:55
请自行在中断服务程序里增加上g_n1MSEventCount ++语句即可。
这是作者在整理文章是,将原程序进行简化时错 ...

老师  请问一下你说的那个DSC程序是在官网哪里呢?  我搜索DSC都没看见代码  我也是中断那里卡住了    可以给个链接  或者发到邮箱这里么  1654806081@qq.com
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-1-9 23:31 , Processed in 0.111162 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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