首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在8位处理器上“假”多任务处理?

如何在8位处理器上“假”多任务处理?
EN

Stack Overflow用户
提问于 2011-06-12 08:01:29
回答 3查看 1.5K关注 0票数 4

我有一个Arduino与Adafruit马达盾牌作为我的机器人的一部分。我想在运行电机的同时,在压电元件上播放一个音调。

问题是我不太知道如何在代码中伪造/模拟多任务处理。我尝试了这样的东西:

代码语言:javascript
复制
void goForward(int duration) {

    for (int i; i<duration; i++) {
        tl.run(FORWARD);
        tr.run(BACKWARD);
        bl.run(FORWARD);
        br.run(BACKWARD);
        counter++;

        if (counter%4==0) {
            piezo != piezo;
        }

        delay(1);
    }
}

这启动了马达,但是它没有在我的压电元件上产生音调。有什么更好的方法来对此进行编程,以便在电机命令运行时以440 Hz的频率打开/关闭压电陶瓷?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-12 08:17:53

我不知道Arduino板,但大多数微控制器都有一些定时器中断。你试过设置这样的计时器吗?在定时器中断处理程序中,您可以启用/禁用压电元件,而主回路可用于控制电机。

票数 3
EN

Stack Overflow用户

发布于 2011-06-13 18:56:46

普通的Arduino板只有3个定时器。这将“多任务”功能限制为3个“线程”。Arduino Mega有16个定时器。换句话说,Arduino Mega可以成为您的解决方案。不是吗?

票数 0
EN

Stack Overflow用户

发布于 2011-06-27 08:36:19

创建调度器来创建并行任务,并为您的电机使用两个计时器,如果您有第三个计时器,则将其用作蜂鸣器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6319272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档