[[dtlab_t11]]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
dtlab_t11 [2025/06/01 20:22]
beckmanf [Analyse des Assemblercodes] delay
dtlab_t11 [2025/06/02 15:28] (current)
beckmanf [Analyse des Assemblercodes] pfad
Line 108: Line 108:
   * Ändern Sie den Pin von GP25 für die LED auf GP15 für den Pin links unten.   * Ändern Sie den Pin von GP25 für die LED auf GP15 für den Pin links unten.
   * Messen Sie mit dem Oszilloskop die Frequenz und das an/aus Verhältnis des Signals am Pin 15.   * Messen Sie mit dem Oszilloskop die Frequenz und das an/aus Verhältnis des Signals am Pin 15.
 +  * Testen Sie "cargo run" und "cargo run --release"​
  
 ==== Analyse des Assemblercodes ==== ==== Analyse des Assemblercodes ====
Line 117: Line 118:
 </​code>​ </​code>​
  
-den Assemblercode generieren lassen. Der Assemblercode ist im Verzeichnis target/​thumbv6m-none-eabi/​release/​deps und fängt mit dem Projektnamen "​blinky"​ and und endet mit der Endung "​.s"​. ​Z.B.:+den Assemblercode generieren lassen. Der Assemblercode ist im Verzeichnis target/​thumbv6m-none-eabi/​release/​deps und fängt mit dem Projektnamen "​blinky"​ and und endet mit der Endung "​.s"​. ​Ein Pfad kann z.B. so aussehen"​target/​thumbv6m-none-eabi/​release/​deps/​blinky-cbc27bc4200d17af.s"​.
  
-<​code>​ 
-target/​thumbv6m-none-eabi/​release/​deps/​blinky-cbc27bc4200d17af.s 
-</​code>​ 
  
 Ã–ffnen Sie die Datei mit Codium. Die Datei enthält sehr viel Code... Finden Sie die Schleife. Fügen Sie dazu die delay Funktionen nochmal in den Code ein und kompilieren Sie nochmal. Dann sollten Sie etwas ähnliches wie das hier: Ã–ffnen Sie die Datei mit Codium. Die Datei enthält sehr viel Code... Finden Sie die Schleife. Fügen Sie dazu die delay Funktionen nochmal in den Code ein und kompilieren Sie nochmal. Dann sollten Sie etwas ähnliches wie das hier:
Line 168: Line 166:
   * Vergleichen Sie den Graphen mit den Überlegungen aus Vorbereitung für "​prime"​   * Vergleichen Sie den Graphen mit den Überlegungen aus Vorbereitung für "​prime"​
   * Vergleichen Sie die Ausführungszeit auf dem Pi Pico mit der Ausführungszeit auf dem Host.   * Vergleichen Sie die Ausführungszeit auf dem Pi Pico mit der Ausführungszeit auf dem Host.
 +
 +==== Direkter Registerzugriff ====
 +
 +Um die Pins ein- und auszuschalten haben wir im Code die Funktionen wie "​led_pin.set_low().unwrap()"​ aus dem "​Hardware-Abstraction-Layer"​ HAL verwendet. Jetzt soll direkt auf die Register geschrieben werden. Das kann mit der Funktion "​write_volatile(REG,​ 1<<​25)"​ gemacht werden. Die Funktion muss als "​unsafe"​ markiert werden. Kommentieren Sie den Code für die Definition des REG Wertes und das "​write_volatile"​ aus und ersetzten so den "​led_pin.set_low()"​ Code.
 +
 +  * Ersetzten Sie led_pin.set_low() durch einen direkten Registerzugriff
 +  * Prüfen Sie ob der Code noch funktioniert
 +  * Schreiben Sie nun Code, der gleichzeitig GP15 und GP25 in der Loop ändert.
 +  * Schreiben Sie eine Variante mit direktem Registerzugriff und eine Variante mit HAL.
 +  * Gibt es einen Unterschied in der Ausführungszeit?​
  
  
  
  
  • dtlab_t11.1748802165.txt.gz
  • Last modified: 2025/06/01 20:22
  • by beckmanf