In this example for Teensy4.0 I have two timer interrupts with 200 Hz and 200 kHz, and I want the 200 kHz interrupt to have the higher priority.
But as you can see in the scope screenshot, the 200 Hz interrupt has higher priority. Yellow is D0 main loop, cyan is D1 200 kHz and magenta is D2 200 Hz.
What's wrong in my code?
Thanks, Michael
But as you can see in the scope screenshot, the 200 Hz interrupt has higher priority. Yellow is D0 main loop, cyan is D1 200 kHz and magenta is D2 200 Hz.
What's wrong in my code?
Thanks, Michael
Code:
IntervalTimer myTimer1;
IntervalTimer myTimer2;
void setup()
{
pinMode(0, OUTPUT); // Main loop
pinMode(1, OUTPUT); // 200 kHz Interrupt
pinMode(2, OUTPUT); // 200 Hz Interrupt
myTimer1.begin(timer1, 5); // 200 kHz
myTimer1.priority(64); // set higher priority
myTimer2.begin(timer2, 5000); // 200 Hz
myTimer2.priority(160); // set lower priority
}
void timer1(void)
{
digitalWriteFast(1, HIGH);
delayNanoseconds(500); // 500 ns pulse
digitalWriteFast(1, LOW);
}
void timer2(void)
{
digitalWriteFast(2, HIGH);
delay(1); // 1 ms pulse
digitalWriteFast(2, LOW);
}
void loop()
{
digitalWriteFast(0, HIGH); // toggle D0 as fast as possible
digitalWriteFast(0, LOW);
digitalWriteFast(0, HIGH);
digitalWriteFast(0, LOW);
digitalWriteFast(0, HIGH);
digitalWriteFast(0, LOW);
digitalWriteFast(0, HIGH);
digitalWriteFast(0, LOW);
digitalWriteFast(0, HIGH);
digitalWriteFast(0, LOW);
digitalWriteFast(0, HIGH);
digitalWriteFast(0, LOW);
digitalWriteFast(0, HIGH);
digitalWriteFast(0, LOW);
digitalWriteFast(0, HIGH);
digitalWriteFast(0, LOW);
}