Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |
arduino:tutorial:hardware:interrupts [2025/02/13 07:20] – [Und der Pin Change Interrupt (PCINT)?] admin | arduino:tutorial:hardware:interrupts [2025/02/13 07:44] (aktuell) – [Und der Pin Change Interrupt (PCINT)?] admin |
---|
| |
Wichtig ist hier, man sollte beim Aktivieren von Interrupts in der Setup Routine immer zunächst die Interrupts abschalten (''cli()'') und nachdem alles eingestellt ist wieder aktivieren (''sei()''). Vor dem Start der Service Routine (ISR) werden alle Interrupt ausgeschaltet und danach wieder eingeschaltet. Will man während der ISR andere Interrupts weiter verarbeiten, kann man das auch mit ''cli()'' und ''sei()'' steuern. Will man nur auf einen bestimmten Pegel, low oder high, muss zunächst einmal der aktuelle Pegel abgefragt werden. Denn der PCINT wird ja bei jedem Flankenwechsel ausgelöst. (Im Gegensatz zum ISR, wo man das per Maske setzen kann) | Wichtig ist hier, man sollte beim Aktivieren von Interrupts in der Setup Routine immer zunächst die Interrupts abschalten (''cli()'') und nachdem alles eingestellt ist wieder aktivieren (''sei()''). Vor dem Start der Service Routine (ISR) werden alle Interrupt ausgeschaltet und danach wieder eingeschaltet. Will man während der ISR andere Interrupts weiter verarbeiten, kann man das auch mit ''cli()'' und ''sei()'' steuern. Will man nur auf einen bestimmten Pegel, low oder high, muss zunächst einmal der aktuelle Pegel abgefragt werden. Denn der PCINT wird ja bei jedem Flankenwechsel ausgelöst. (Im Gegensatz zum ISR, wo man das per Maske setzen kann) |
| |
| Statt ''sei();'' und ''cli();'' kann an gerne auch ''interrupts();'' und ''noInterrupts();'' benutzen, wenn einem cli und sei zu kryptisch sind. |
| |
Setzt man den PCINT für mehrere Pins (auf einem Port), muss als erstes natürlich zunächst festgestellt werden, welcher Pin der Auslöser war. | Setzt man den PCINT für mehrere Pins (auf einem Port), muss als erstes natürlich zunächst festgestellt werden, welcher Pin der Auslöser war. |
| |