Forum 2005-2010 (read only)
(Read 1 time)
Apr 02, 2008, 11:54 pm
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
int state = LOW;
attachInterrupt(0, intin, FALLING);
Serial.println("through the loop");
digitalWrite(7,state); //pin 7 toggles at half input frequency
Apr 03, 2008, 01:53 am
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.
Apr 03, 2008, 02:43 am
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.