Go Down

Topic: Performance (Read 1 time) previous topic - next topic


While working on a disciplined clock, I decided to check the interrupt response times. I was amazed. With the following code, which does not do a lot of work in either the loop or the interrupt service routine, I was  able to send interrupts at a 10Khz input rate and see the loop run fine. Much superior performance to what I expected. I enjoy this environment.

//works to 20khz interrupt rate and still services the loop

#include <avr/interrupt.h>  
int state = LOW;

void setup()
 attachInterrupt(0, intin, FALLING);

void loop()
 Serial.println("through the loop");

void intin()
 digitalWrite(7,state);    //pin 7 toggles at half input frequency


Triffid Hunter

heh, well the datasheet says it takes 4 clocks to get into the ISR and 4 clocks to get out again. The chip runs at 16MHz. your loop has a delay and a serial.write, both of which take *aaages* compared to a measly couple dozen clocks or so.

In theory, you'd be able to generate frequencies up to almost a megahertz if you hand-tweaked the assembly.

In fact, I've seen projects that directly generated radio frequencies using a PWM output and modulated it from code, then did some gating on the rx side to receive.


True, but what is so nice, at least to my eyes,  is to be able to achieve this performance with just the Arduino programming environment as it is offered.

Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131