avanzando con el arduino, interrupcion puerto serie

Una duda mas, a ver, he leido que el arduino tiene por defecto un buffer de 64 bytes de lectura del puerto serie, que la llegada de un dato va llenando el buffer.
A ver lo que yo quiero hacer es que solo llegue un bye cuando yo lo envie desde el terminal COM y este interrumpa el programa para hacer ese dato igual a una variable, al parecer el terminal COM va mandando caracter Nulo
Me explico mejor, variar una variable como "velocidad" introduciendo caracteres del 0 al 9 en el terminal COM y que eso interrumpa el bucle Loop variando el valor de la variable cada vez que pulse un caracter del 0 al 9 en el teclado del terminal Com y si no pulso nada que el valor continue igual.
Si incluyo Serial.read() en el loop va leyendo a cada momento nulos, con la consecuente perdida de tiempos ademas de que va llenando el buffer y si hay una rutina de tiempos en el loop como delay(), no se ejecuta interrupcion alguna sino que se llena el hasta rebosar el buffer .
Como puedo hacer que eso sea como yo quiero? Algun ejemplo?
No veo ningun ejemplo sobre interrupciones mas que las de los pines 2 y 3.
Gracias

No te puedo ayudar mucho, pero creo que para hacer eso hay que mirarse el datasheet del micro (atmega 328p-pu). Suele ser tema de registros y flags, por lo que aunque no suele ser muy complicado hace falta descifrarlo. Haber si alguien que lo haya trabajado puede comentarlo. Salu2

algec:
Si incluyo Serial.read() en el loop va leyendo a cada momento nulos, con la consecuente perdida de tiempos ademas de que va llenando el buffer

int incomingByte = 0;   // for incoming serial data

void setup() {
        Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
}

void loop() {

        // send data only when you receive data:
 -------->>>>>if (Serial.available() > 0) <<<<-------------Usa esto para leer solo cuando se reciba algo
                  // read the incoming byte:
                  incomingByte = Serial.read();

                  // y luego switch (incomingByte)

        }
}

...y para llamar un ISR (interrupt service routine) vía software usa esta librería:

http://code.google.com/p/arduino-pinchangeint/

Aunque yo te aconsejo realizar tu programa usando "ticks" creados por uno de los timers:

Mil gracias lo miro todo