ich versuche gerade zu verstehen, wie interrupts funktionieren. Auf dem Uni gibts ja 2 externe Interrupts, welche verwendet werden können (soweit kein Thema, das habe ich verstanden).
Was ich nicht verstehe (oder mein English ist zu schlecht) ist die Pinchangeint library. Setzt die die zur verfügung stehenden Interrupts nur auf einen anderen Pin, oder kann ich damit für jeden Pin einen (zumindest) change interrupt machen?
Nicht das ich 20 Pins benötigen würde, aber mehr als 2 wären schon fein
Externe Interrups (durch ein Signal von Außen) funktionieren nur auf pin 2 und 3. Der Interrupt kann auf die steigende (RISING), die fallende (FALLING) oder beide (CHANGE) Flanken des Signals getriggert werden oder solandge das signal LOW ist (LOW). http://arduino.cc/en/Reference/AttachInterrupt
Andere interne Quellen (timer, counter ecc) können auf viele Pins einen Interrupt auslösen. Genaueres findest Du im Datenblatt des Controllers.
Neben den 2 Interrupts für Pin2 und Pin3 kannst du so einfach einen dritten Interrupt-Handler für andere Pins definieren.
Wenn einer der definierten Pins sich wie erwartet ändert, wird diese Funktion aufgerufen. Sie muss dann ( bei mehreren Pins rauskriegen, welcher Pin es war und ) auf das Ereignis schnell reagieren. Längere Aktionen nur vormerken und später in der loop() ausführen - wie bei "normalen" Interrupten auch.
Im Zweifelsfall hilft ein Blick ins Datenblatt. Pinchangeinterrupts werden bei jedem Pin unterstützt. Levelinterrupts nur bei 2 Pins.
Pinchange bedeutet der Interrupt wird bei einer Flanke ausgelöst. Also low->high oder high->low.
Level bedeutet der Interrupt wird bei einem Zustand ausgelöst. Also low oder high.
so hatten nun Zeit mich mit allem genauer zu beschäftigen. Dank eurer Infos habe ich meinen kompletten Plan nochmal umgeworfen und von Vorne begeonnen. War zwar mehr arbeit hat sich aber gelohnt, da nun dieser Teil des Projektes auch das macht was ich möchte