Rust auf dem Raspberry Pi Pico · Teil 9TutorialFortgeschritten

Rust

Rust Pico 09: Timer und asynchrones Programmieren

Nichtblockierende Wartezeiten verstehen. Embedded Rust verständlich erklärt, mit Praxisaufgabe und Musterlösung.

Kapitel: GPIO

Veröffentlicht am

Teil 09: Timer und asynchrones Programmieren

Lernziel: Nichtblockierende Wartezeiten verstehen.

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?

Timer::after(...).await hält die aktuelle asynchrone Task an und ermöglicht anderen Tasks Fortschritt. Eine blockierende Busy-Wait-Schleife kann dagegen CPU-Zeit verschwenden. Embassy verwendet einen Executor, in dem mehrere Tasks kooperativ ausgeführt werden.

Schritt für Schritt

use embassy_time::{Duration, Timer};

loop {
    // Sensor erfassen oder Status aktualisieren
    Timer::after(Duration::from_secs(1)).await;
}

Einordnung: await ist keine feste Echtzeitgarantie; Ausführungszeiten müssen geplant werden.

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 eine lange rechenintensive Schleife ohne .await problematisch?

Musterlösung anzeigen

Sie gibt die Ausführung nicht freiwillig an andere Tasks ab und kann deren Reaktionszeit erhöhen.

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 08 · Teil 10 →