¿Cuántas interrupciones externas tiene attiny85?

El título es bastante autodescriptivo. Hago esta pregunta porque encontré información contradictoria en la página web de atmel. Necesito dos interrupciones externas para controlar un codificador rotatorio. Un control de interrupción pulsa desde un pin (tanto ascendente como descendente) y el otro interrumpe lo mismo para el otro pin. Entonces, si solo tengo 1, no me funciona.

¿Qué tan rápido cambia el codificador? Pasé un mal rato tratando de hacer que una función de codificador cambiara rápidamente con interrupciones, y me cambié a un controlador que manejaba las entradas del codificador más directamente (imagen 18f4331, en este caso). Las interrupciones están bien para cosas como las perillas frob, pero si está buscando motores de giro rápido, puede buscar un chip diseñado para manejarlos.
Es una perilla, 4 pulsos en cada posición, 20 posiciones cada vuelta. Mi suposición es que 300 pulsos por segundo como máximo son muy rápidos con los dedos. Lo conseguí funcionando bastante bien en el ATmega32U4 del arduino leonardo. Pero estoy usando 2 interrupciones, y ese es el problema con attiny85. Gracias de todos modos, no lo había pensado.
¡Entonces no hay problema!

Respuestas (2)

Está INT0 y luego está PCINT[0:5]. INT0 obtiene su propia rutina de interrupción, y PCINT tiene una rutina para todos los pines configurados para ser utilizados por la interrupción. Eso significa que una de las primeras cosas que debe hacer la rutina de interrupción es averiguar qué pines realmente cambiaron para activar la interrupción. En realidad, debería ser más conveniente usar esta forma para su codificador, ya que realmente desea que cualquier cambio de codificador active la misma rutina de interrupción.

No tengo idea si todo esto es accesible a través de la plataforma arduino, o si necesita programar el controlador usted mismo (ya que no soy un usuario de Arduino).

Lo intentaré usando la interfaz de arduino. Si no funciona tendré que ensuciarme las manos programando haciendo uso de las bibliotecas avr nativas. Gracias, realmente ayuda.

Puede hacer esto con una sola interrupción si es necesario haciendo OR entre los dos pines en la única interrupción ("algo cambió"). Todavía necesitará dos entradas digitales para leer los pines del codificador, y el ISR (o una rutina auxiliar de nivel ejecutivo) tendrá que asumir la responsabilidad de averiguar qué pines del codificador cambiaron, pero es factible.

Tuve dificultades para leer los pines después de que se llama la interrupción. Fue mi primer acercamiento. El codificador rebota y tal vez lea cuando no es estable. Lo dejo como último recurso. Gracias