PortMapping, mehrere Ports gleichzeitig einlesen, Interrupts

Hallo,

leider ist mir kein passenderer Topic eingefallen. Ich hab mal wieder einen Knoten im Gedankenverarbeiterer ...

Ich möchte gerne an 8 Pins (Pin 0-7) jeweils eine Signalquelle anschließen - sagen wir mal, das wären Taster (Schließer). Nun möchte ich gerne, dass sobald sich ein Port ändert eine Interruptroutine aufgerufen wird, die den Status aller 8 Pins einliest.

Bei den neueren Atmels gibt es doch PinChangeInterrupts. Sind die beim Arduino Uno wirklich nur für die Pins 2 & 3 verfügbar? Aus der Frage ergeben sich direkt zwei weitere. Gibt es ein Tutorial, welches sich mit dem Thema Interrupt beschäftigt? Wie würdet Ihr die Sache mit den 8 Eingangspins lösen. Ich möchte eigentlich ganz bewußt auf eine permanente Abfrage der Ports in einer Endlosschleife und ein Vergleich der Zustände verzichten.

Zweites Problem: mit digitalRead() kann ich immer nur einen Pin abfragen. Aus meinen ersten AVR Versuchen in C weiß ich aber noch, das ich den Status eines Ports (also aller 8 Pins) auf einen Schlag als 1Byte auslesen konnte. Geht das beim Arduino auch irgendwie? Oder muss ich 8 mal digitalRead() nutzen?

Martin

Interrupt auf beliebigen Pins: http://www.arduino.cc/playground/Main/PinChangeInt Port mapping: http://www.arduino.cc/playground/Learning/PortManipulation