Hallo,
ich verstehe C auch kaum, aber ein anderer Gedanke:
Der PCF8574 zieht INT nach LOW, wenn ein Taster gedrückt wird.
Das verursacht ein PCINT am ATMega und der springt in die ISR und der PCF wird ausgelesen.
Nach Datenblatt des PCF8574 wird dessen INT Leitung resettet, wenn Daten von seinem Datenport gelesen werden.
Das bedeutet, das am PCINT Pin der Pegel wechselt und ein neuer PCINT ansteht.
Sobald aus der ISR zurückgekehrt wird muß µC da sofort wieder rein.
Das Ganze ist davon abhängig, ob der µC das PCI Flag zu Beginn der ISR oder bei Rücksprung löscht. Das weis ich leider nicht.
SEI und CLI in der ISR macht für mich keinen Sinn, da die sowieso während der ISR geblockt sind. Statt dessen eher Verhindern von PCINTs (im Maskenregister) und vor Rücksprung sicherheitshalber Löschen des PCI Flags und Wiederzulassen von PCINTs.
Entprellung von Tasten?
Gruß
Searcher
Lesezeichen