Noch mehr Befehle sparen

Die gelesenen Daten müssen erst einmal in die Empfangs-FIFO übertragen werden. Dazu existiert der Push-Befehl, der dies explizit erledigt, allerdings gibt es noch eine implizite Methode. Die PIO-Module haben ein weiteres nützliches Feature, das Befehle spart: Auto-Push. Damit wird der Inhalt des ISR automatisch in die FIFO verschoben, sobald eine vorgegebene Anzahl Bits eingelesen wurde. Genau das nutze ich hier. Die äquivalente Funktion für die Ausgabe heißt Auto-Pull.

Stellenmarkt
  1. Beraterinnen / Berater (w/m/d) für den Bereich "Informationssicherheitsbera- tung für den ... (m/w/d)
    Bundesamt für Sicherheit in der Informationstechnik (BSI), Bonn
  2. Scientific IT Gruppenleitung (m/w/d)
    Fraunhofer-Institut für Kurzzeitdynamik, Ernst-Mach-Institut EMI, Freiburg
Detailsuche

Bleiben noch ein paar Fragen zu klären: Was sollen die eckigen Klammern und die Zeilen mit Punkt? Über die eckigen Klammern kann man Anweisungen eine zusätzliche Verzögerung mitgeben. Normalerweise wird jede Anweisung innerhalb eines PIO-Takts ausgeführt. Manchmal kann es aber erforderlich sein, eine Wartezeit einzufügen, um ein bestimmtes zeitliches Verhalten zu erreichen. Hier dauert jede Anweisung vier Takte (einer für die Ausführung, drei Verzögerung), den Grund sehen wir gleich.

Jede Anweisung kann bis zu 32 zusätzliche Wartetakte haben – es sei denn, Side Set wird verwendet. Für beide zusammen sind in den Befehlscodes fünf Bits vorgesehen. Werden Bits für Side Set genutzt, stehen entsprechend weniger für die Angabe der Wartetakte zur Verfügung. In diesem Beispiel sind nur noch vier Bits für die Wartetakte nutzbar, entsprechend sind maximal 16 möglich.

Anweisungen für den Assembler

Alle Zeilen, die mit einem Punkt beginnen, sind Anweisungen für den Assembler. Er übersetzt den PIO-Programmcode und erstellt daraus eine C-Header-Datei. Dafür braucht er ein paar zusätzliche Informationen, mindestens den Programmnamen. Der steht ganz oben. Danach teile ich ihm mit, dass das Programm ein Side-Set-Bit nutzt. Damit wird automatisch Code eingefügt, der das Feature grundlegend konfiguriert.

Golem Karrierewelt
  1. DP-203 Data Engineering on Microsoft Azure: virtueller Vier-Tage-Workshop
    24.-27.10.2022, virtuell
  2. Adobe Premiere Pro Aufbaukurs: virtueller Zwei-Tage-Workshop
    17./18.10.2022, Virtuell
Weitere IT-Trainings

Dann finden sich noch die Anweisungen .wrap und .wrap_target. Sie sind wieder ein Feature zum Einsparen von Befehlen: Mit ihnen lässt sich ein Punkt festlegen, an dem das Programm automatisch an einen anderen springt – ohne explizites Jmp. Meist sind das wie hier Anfang und Ende des Programms, die Punkte können aber beliebig definiert werden. Allerdings kann das Feature nur einmal pro Programm genutzt werden.

Übersetzen und Einbinden in ein Projekt

PIO-Programme zu übersetzen ist nicht besonders schwer, sofern das Build-System Cmake genutzt wird. Es wird vom Software Development Kit (SDK) des RP2040 verwendet, daher liegt es nahe, es für die eigenen Projekte ebenfalls zu nutzen. Hierfür ist ein Eintrag in der Konfigurationsdatei CMakeLists.txt erforderlich, die dem Build-System sagt, was zu tun ist, um aus dem Quellcode ein Programm für den Mikrocontroller zu machen. Lediglich folgende Zeile muss eingefügt werden:

  1. pico_generate_pio_header(gptest ${CMAKE_CURRENT_LIST_DIR}/nes_gamepad.pio)

Damit erledigt Cmake alles Erforderliche, das Ergebnis ist eine C-Header-Datei im build-Verzeichnis. Die heißt so wie die PIO-Quellcode-Datei, lediglich mit angehängtem .h, und enthält den übersetzten Programmcode, einige Konstanten und eine Hilfsfunktion, die eine Standardkonfiguration für einen Zustandsautomaten erzeugt. Darüber hinaus kann zusätzlicher C-Code in die PIO-Quellcode-Datei eingefügt werden, der weitere Konfigurationen vornimmt. Er wird einfach in die erstellte Header-Datei kopiert und ermöglicht es, alles erforderliche Wissen in eine Datei zu packen – sinnvoll, wenn man seine PIO-Programme teilen will.

Sehen wir uns als nächstes an, wie das PIO-Programm genutzt wird und was noch an Konfiguration erforderlich ist.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Das PIO-ProgrammKonfiguration der State Machine 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8.  


Aktuell auf der Startseite von Golem.de
Tiktok-Video
Witz über große Brüste kostet Apple-Manager den Job

Er befummle von Berufs wegen großbrüstige Frauen, hatte ein Apple Vice President bei Tiktok gewitzelt. Das kostete ihn den Job.

Tiktok-Video: Witz über große Brüste kostet Apple-Manager den Job
Artikel
  1. Cloudgaming: Google Stadia scheiterte nur an sich selbst
    Cloudgaming
    Google Stadia scheiterte nur an sich selbst

    Die Technik war nicht das Problem von Alphabets ambitioniertem Cloudgaming-Dienst. Das Problem liegt bei Google. Ein Nachruf.
    Eine Analyse von Daniel Ziegener

  2. Copilot, Java, RISC-V, Javascript, Tor: KI macht produktiver und Rust gewinnt wichtige Unterstützer
    Copilot, Java, RISC-V, Javascript, Tor
    KI macht produktiver und Rust gewinnt wichtige Unterstützer

    Dev-Update Die Diskussion um die kommerzielle Verwertbarkeit von Open Source erreicht Akka und Apache Flink, OpenAI macht Spracherkennung, Facebook hilft Javascript-Enwicklern und Rust wird immer siegreicher.
    Von Sebastian Grüner

  3. Elektromobilität: Superschnelles Laden mit zwölf Megawatt
    Elektromobilität
    Superschnelles Laden mit zwölf Megawatt

    Das Unternehmen Paxos hat ein Hochleistungsladegerät mit Spezialstecker entwickelt. Der Industrie genügt eine weit geringere Leistung, aber autonome Fahrzeuge könnten das ändern.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • LG OLED TV 2022 65" 120 Hz 1.799€ • ASRock Mainboard f. Ryzen 7000 319€ • MindStar (G.Skill DDR5-6000 32GB 299€, Mega Fastro SSD 2TB 135€) • Alternate (G.Skill DDR5-6000 32GB 219,90€) • Xbox Series S + FIFA 23 259€ • PCGH-Ratgeber-PC 3000€ Radeon Edition 2.500€ [Werbung]
    •  /