Rust auf dem Raspberry Pi Pico · Teil 17TutorialFortgeschritten

Rust

Rust Pico 17: Mehrere Aufgaben mit Embassy

Tasks und geteilte Zustände kennenlernen. Embedded Rust verständlich erklärt, mit Praxisaufgabe und Musterlösung.

Kapitel: Fortgeschritten

Veröffentlicht am

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


← Teil 16 · Teil 18 →