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.
Visitando la página del producto en atmel leí que tiene 6 Ext. Interrupciones: http://www.atmel.com/devices/attiny85.aspx
La hoja de datos solo veo referencias int0 (página 47), y no entiendo muy bien la hoja de datos http://www.atmel.com/Images/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet .pdf
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).
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.
scott seidman
Terrik
scott seidman