Mi pregunta es de nuevo sobre la modificación de variables dentro del ISR. Si la variable se usa solo dentro de ISR, no tengo que declararla como volátil, ¿verdad? Después de investigar un poco, descubrí que la variable debía declararse como estática y dentro de la función ISR. Pero tampoco ayudó.
Estoy usando Arduino Ide, así que no tengo muchas opciones de depuración. Estoy usando un indicador LED para verificar si la variable se ha incrementado, como puede ver a continuación:
ISR(TIMER2_COMPA_vect) {
static unsigned int count20ms = 0;
count20ms += 5;
PORTD ^= (1 << PD6); // Indicates that ISR executes
if (count20ms == 10) {
PORTD ^= (1 << PD7); // Indicates that counter incremented
count20ms = 0;
}
}
Puedo observar que ISR se ejecuta a través de un LED parpadeante en el PD6. Pero Condición cuenta20ms == 10 nunca es cierto. Y así, el LED conectado al PD7 nunca parpadea.
¿Cómo debe comportarse una variable estática?