Teil 16: Interrupts und Ereignisse
Lernziel: Interrupts von Polling unterscheiden.
Voraussetzungen: Der Rust-PC-Grundlagenkurs bzw. Grundkenntnisse in Rust; außerdem die vorangegangenen Pico-Lektionen. Zielboard: Pico 2 / Pico 2 W (ARM); Hinweise für RP2040 in der Kursübersicht.
Worum geht es?
Beim Polling fragt Software regelmäßig einen Eingang ab. Interrupts reagieren auf ein Ereignis, ohne permanent in einer Schleife zu prüfen. Bei Embassy kann auch auf Pinflanken asynchron gewartet werden. Die eigentliche Ereignisverarbeitung gehört möglichst nicht in lange Interrupt-Handler.
Schritt für Schritt
// Für einen passend erzeugten Input:
loop {
taste.wait_for_falling_edge().await;
// Ereignis behandeln; ggf. entprellen
}
Einordnung: Input-Variable muss passend zugeordnet und mit Pull-up eingerichtet sein.
Hintergrund und häufige Fehler
- Board prüfen: Pico/Pico W (RP2040) und Pico 2/Pico 2 W (RP2350) brauchen unterschiedliche Compilerziele und Boardkonfigurationen.
- Hardware zuerst: Vor dem Flashen Pinbelegung, gemeinsame Masse und 3,3-V-Pegel prüfen.
- Versionsstand: Übernehme die passenden Embassy-Beispiele und Abhängigkeiten aus demselben Repository-Stand; APIs ändern sich zwischen Releases.
- Schrittweise testen: Erst ein kleines funktionsfähiges Beispiel, danach jeweils genau eine Änderung vornehmen.
Selbst ausprobieren
Warum ist das Warten auf eine Flanke oft besser als Abfragen alle 1 ms?
Musterlösung anzeigen
Die Task kann während des Wartens andere Aufgaben ermöglichen; durch kurze Impulse wird sie ereignisgetrieben geweckt.
Dokumentation für deine Versuche
Notiere verwendetes Board, Verdrahtung, Git-Commit oder Bibliotheksversion, Build-Befehl, Ergebnis und aufgetretene Fehlermeldungen. Halte dazu ein Foto oder einen Screenshot fest, der später in den Website-Beitrag übernommen werden kann.
Weiterführende Informationen
- Embassy – offizielles Repository und RP-Beispiele
- Embassy-Dokumentation
- RP-HAL mit RP2040-/RP235x-Hinweisen
