Pin de interrupción de entrada asociado con TIMER1 en ATmega168

1

Hace unos días encontré el código fuente de este Medidor de Inductancia basado en ATmega168 de El blog del taller de Dan . A continuación se muestra el código que creo que configura una interrupción ATmega168 para medir una frecuencia externa:

// set up the 16 bit timer as an external frequency counter:
TCCR1B |= (1 << CS10)|(1 << CS11)|(1 << CS12); // External clock, rising edge
TIMSK1 |= (1 << TOIE1); // Enable overflow interrupt, 
                        // it will overflow a few times in counting frequency

Todavía estoy estudiando cómo configurar interrupciones ATmegas, así que no entiendo muy bien qué hace ese código.

Mis preguntas son:

  1. ¿El código anterior determina qué pin proporcionará la frecuencia a medir? ¿Cómo?

  2. ¿Ese mismo código definiría el mismo pin de interrupción de entrada en un ATmega328?

Desde el esquema publicado en el sitio (copiado a continuación) puedo ver que el pin cuya frecuencia se cuenta / mide es PD5 (pin 11 en el IC). ¿Es eso correcto?

Esquema del medidor de inductancia http://www.dansworkshop.com/wp-content/ uploads / 2011/09 / lcmeter_schematic.jpg

    
pregunta Ricardo

1 respuesta

1
  

¿El código anterior determina qué pin proporcionará la frecuencia a medir? ¿Cómo?

No. El temporizador 1 siempre está sincronizado externamente en T1, que está en PD5 en 'XX8. Si en su lugar se utilizara el temporizador 0, el pin externo sería T0 (PD4), y así sucesivamente. La configuración de CSn [2: 1] en 0b11 simplemente selecciona la entrada externa, y CSn0 selecciona el borde.

  

¿Ese mismo código definiría el mismo pin de interrupción de entrada en un ATmega328?

Los '168 y' 328 tienen los mismos periféricos y pinout, solo la memoria difiere (de ahí el "8" al final, con las potencias variables de 2). Pero ningún pin dispara directamente la interrupción; se activa desde el temporizador, que se sincroniza a través de PD5.

    
respondido por el Ignacio Vazquez-Abrams

Lea otras preguntas en las etiquetas