unsigned long nlines = 0; // length of message to generate #define MLEN 60 char diagmsg[MLEN+1]; volatile unsigned long cnt = 0; // number of ISR routine calls so far void setup() { Serial.begin(500000); delay(100); // generate timer 4 interrupt every 0.5ms cli(); TCCR4A = 0; TCCR4B = (1 << WGM42) | (1 << CS40) | (1 << CS42); // prescale by 1024 and set CTC mode TCNT4 = 0; OCR4A = 8; // compare with 8 to get interrupt every 0.5 ms TIMSK4 = (1 << OCIE4A); // enable timer overflow interrupt (and no others) sei(); } void loop() { nlines++; char c = '0' + nlines % 10; int i=0; while(i