在Arduino上并行执行

时间:2013-12-27 14:54:44

标签: c parallel-processing arduino

假设我想控制2个输出:

应发送PWM调制信号(50Hz)。另一个应该发送一个音频信号(比如一个正弦信号)(比方说2kHz)。

这两项任务中的一项很简单:只需循环运行:

  1. 将一些值发送给输出
  2. 延迟执行一些ms并再次跳转到1.
  3. 但是你如何解决发送2个信号的问题(比方说不同的环路频率,如我们的例子 - 50Hz-2kHz)?

1 个答案:

答案 0 :(得分:1)

我不确定输出正弦信号需要什么,但这是我对解决方案的看法。首先,我理解你的内容:

void loop() {
    update_pwm_output();
    delay(1000/50); // 50 Hz
}

可能的解决方案:

int last_update = 0;
void loop() {
    int mill = millis();
    if (mill-last_update > (1000/50)) {
        last_update = mill;
        update_pwm_output();
    }
}

此解决方案允许您在更新PWM信号之间执行其他代码。

在运行其他代码时,有几种方法可以保持PWM更新。我使用的库SoftwareServo允许您定期调用其refresh()方法并且它将更新,其中Servo库占用一个计时器并使用中断来执行它的更新。