Teil 17: Mehrere Aufgaben mit Embassy
Lernziel: Tasks und geteilte Zustände kennenlernen.
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?
Ein Mikrocontroller kann beispielsweise gleichzeitig die LED blinken lassen, einen Taster überwachen und ein Display aktualisieren. In Embassy werden Aufgaben mit #[embassy_executor::task] definiert und über einen Spawner gestartet. Geteilte Daten müssen synchronisiert werden; dafür existieren z. B. Channels, Signals und Mutex-Typen.
Schritt für Schritt
#[embassy_executor::task]
async fn status_task() {
loop {
embassy_time::Timer::after_millis(500).await;
// Statusarbeit
}
}
// In main (mit vorhandener Spawner-Variable):
// spawner.spawn(status_task()).unwrap();
Einordnung: Für das Starten der Tasks muss das gewählte Projekt eine passende Embassy-main-Signatur besitzen.
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
Skizziere drei Tasks eines Sensor-Knotens und wie Messwerte von der Sensor- zur Anzeige-Task gelangen.
Musterlösung anzeigen
Eine Sensor-Task misst, eine Anzeige-Task zeigt an, eine Kommunikations-Task sendet. Ein Channel oder Signal verbindet die Aufgaben.
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
