Der Titel ist ziemlich selbsterklärend. Ich stelle diese Frage, weil ich auf der Atmel-Webseite widersprüchliche Informationen gefunden habe. Ich brauche zwei externe Interrupts, um einen Drehgeber zu steuern. Einer unterbricht Steuerimpulse von einem Pin (sowohl steigend als auch fallend) und der andere unterbricht das gleiche für den anderen Pin. Wenn ich also nur 1 habe, funktioniert es bei mir nicht.
Beim Besuch der Produktseite bei Atmel habe ich gelesen, dass es 6 Ext. Unterbrechungen: http://www.atmel.com/devices/attiny85.aspx
Das Datenblatt Ich sehe nur int0- Referenzen (Seite 47) und verstehe das Datenblatt http://www.atmel.com/Images/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet nicht ganz .pdf
Es gibt INT0 und dann gibt es PCINT[0:5]. INT0 erhält seine eigene Interrupt-Routine, und PCINT hat eine Routine für alle Pins, die für die Verwendung durch den Interrupt konfiguriert sind. Das bedeutet, dass eines der ersten Dinge, die die Interrupt-Routine tun muss, herauszufinden, welche Pins sich tatsächlich geändert haben, um den Interrupt auszulösen. Sollte eigentlich bequemer sein, diesen Weg für Ihren Encoder zu verwenden, da Sie wirklich möchten, dass jede Encoder-Änderung dieselbe Interrupt-Routine auslöst.
Ich habe keine Ahnung, ob dies alles über die Arduino-Plattform zugänglich ist oder ob Sie den Controller selbst programmieren müssen (da ich kein Arduino-Benutzer bin).
Sie können dies bei Bedarf mit einem einzelnen Interrupt tun, indem Sie die beiden Pins in den einen Interrupt ODERn ("etwas hat sich geändert"). Sie benötigen immer noch zwei digitale Eingänge, um die Encoder-Pins zu lesen, und die ISR (oder eine Hilfsroutine auf Exec-Ebene) muss die Verantwortung dafür übernehmen, herauszufinden, welche Encoder-Pins sich geändert haben, aber es ist machbar.
Scott Seidman
Terrik
Scott Seidman