doc(u01): modify some things
This commit is contained in:
parent
f2e3d5422c
commit
a5e4d23026
2 changed files with 79 additions and 77 deletions
File diff suppressed because one or more lines are too long
|
|
@ -234,8 +234,8 @@ Nach der Zerlegung des Mandelbrot-Tasks betrug die Zykluszeit noch 26–27 ms. U
|
|||
table.header([*Stand*], [*Zykluszeit*]),
|
||||
[Vorlage (Mandelbrot blockierend)], [≈ 16,2 s],
|
||||
[Mandelbrot zerlegt, alle Ausgaben in jedem Durchlauf], [26–27 ms],
|
||||
[Endstand (Maßnahmen 1–3)], [≈ 7,0 ms],
|
||||
[Endstand, Durchlauf mit Sekundenwechsel (Watch)], [≈ 9,5 ms],
|
||||
[Endstand (Maßnahmen 1–3)], [7,184 ms],
|
||||
[Endstand, Durchlauf mit Sekundenwechsel (Watch)], [≈ 9,6 ms],
|
||||
),
|
||||
caption: [Zykluszeit der Superloop],
|
||||
) <tab-loop>
|
||||
|
|
@ -259,27 +259,29 @@ Nach der Zerlegung des Mandelbrot-Tasks betrug die Zykluszeit noch 26–27 ms. U
|
|||
caption: [Gemessene Laufzeiten im Endstand (@fig-b)],
|
||||
) <tab-b>
|
||||
|
||||
Die Zykluszeiten in @tab-loop wurden aus dem Abstand zweier steigender Flanken von PB1 (Counter) in @fig-b abgelesen. #todo[Periodendauer von PB1 mit der Saleae-Messfunktion exakt nachmessen.]
|
||||
Die Zykluszeit der Superloop entspricht dem Abstand zweier steigender Flanken von PB1 (Counter) und beträgt 7,184 ms bzw. 139,2 Hz (@fig-cycle). In Durchläufen mit Sekundenwechsel kommt die Laufzeit von Watch hinzu, die Zykluszeit steigt dann auf ≈ 9,6 ms.
|
||||
|
||||
#figure(image("img/cycle_runtime.png", width: 100%), caption: [Zykluszeit der Superloop: 7,184 ms zwischen zwei steigenden Flanken von PB1]) <fig-cycle>
|
||||
|
||||
== Nachweis der Zeitanforderungen
|
||||
|
||||
Der ungünstigste Durchlauf entsteht, wenn Key, Watch und Poti im selben Durchlauf neu zeichnen und Mandelbrot nach dem Löschen des Bildes zusätzlich die Beschriftung (6 Zeichen ≈ 2,8 ms) ausgibt:
|
||||
Der ungünstigste Durchlauf entsteht, wenn zum gemessenen Durchlauf (7,18 ms) hinzukommt, dass Key, Watch und Poti im selben Durchlauf neu zeichnen und Mandelbrot nach dem Löschen des Bildes zusätzlich die Beschriftung (6 Zeichen ≈ 2,8 ms) ausgibt:
|
||||
|
||||
$ T_"Loop,max" approx ("1,95" + "2,4" + "2,44" + "1,9" + "5,04" + "2,83") "ms" approx "16,6 ms" $
|
||||
$ T_"Loop,max" approx ("7,18" + "2,4" + "2,44" + "1,9" + "2,83") "ms" approx "16,8 ms" $
|
||||
|
||||
Für die Reaktionszeit auf einen Tastendruck gilt: Der Druck wird spätestens nach einem Durchlauf erkannt, nach 20 ms Entprellzeit (+1 ms Auflösung des SysTick) beim nächsten Aufruf übernommen und im selben Aufruf angezeigt:
|
||||
|
||||
$ t_"Reaktion,Key" <= T_"Loop,1" + 21 "ms" + T_"Loop,2" + t_"Anzeige" $
|
||||
|
||||
Da Watch nur einmal pro Sekunde und die Mandelbrot-Beschriftung nur einmal pro Bild neu gezeichnet werden, können zwei aufeinanderfolgende Durchläufe nicht beide den Maximalwert erreichen. Realistisch ungünstig ist $T_"Loop,1" approx "14,2 ms"$ (Watch, Poti, Beschriftung) und $T_"Loop,2" approx "8,9 ms"$ (Poti).
|
||||
Da Watch nur einmal pro Sekunde und die Mandelbrot-Beschriftung nur einmal pro Bild neu gezeichnet werden, können zwei aufeinanderfolgende Durchläufe nicht beide den Maximalwert erreichen. Realistisch ungünstig ist $T_"Loop,1" approx "14,4 ms"$ (Watch, Poti, Beschriftung) und $T_"Loop,2" approx "9,1 ms"$ (Poti).
|
||||
|
||||
#figure(
|
||||
table(
|
||||
columns: (auto, auto, 1fr, auto),
|
||||
align: (left, right, left, center),
|
||||
table.header([*Anforderung*], [*Grenze*], [*Ergebnis*], [*erfüllt*]),
|
||||
[Counter Zykluszeit], [≤ 20 ms], [$T_"Loop"$: typ. 7,0 ms, max. ≈ 16,6 ms], [✓],
|
||||
[Key Reaktionszeit], [≤ 50 ms], [typ. 7,0 + 21 + 7,0 + 2,4 ≈ 37 ms; ungünstig 14,2 + 21 + 8,9 + 2,4 ≈ 47 ms], [✓],
|
||||
[Counter Zykluszeit], [≤ 20 ms], [$T_"Loop"$: gemessen 7,18 ms, max. ≈ 16,8 ms], [✓],
|
||||
[Key Reaktionszeit], [≤ 50 ms], [typ. 7,2 + 21 + 7,2 + 2,4 ≈ 38 ms; ungünstig 14,4 + 21 + 9,1 + 2,4 ≈ 47 ms], [✓],
|
||||
[Poti Reaktionszeit], [≤ 50 ms], [Abtastung in jedem Durchlauf: ≤ $T_"Loop,max"$ ≈ 17 ms], [✓],
|
||||
[Watch Aktualisierung], [≤ 1 s], [jede Sekunde, Verzögerung ≤ $T_"Loop"$], [✓],
|
||||
[Led Periode], [100 ms], [Mittelwert exakt, Jitter ≤ $T_"Loop"$], [✓],
|
||||
|
|
@ -287,7 +289,7 @@ Da Watch nur einmal pro Sekunde und die Mandelbrot-Beschriftung nur einmal pro B
|
|||
caption: [Vergleich mit den Zeitanforderungen],
|
||||
) <tab-req>
|
||||
|
||||
Der Preis der Zerlegung ist eine längere Gesamtdauer für das Mandelbrot-Bild: Bei 16,16 s Rechenzeit und 5 ms pro Aufruf sind ≈ 3 230 Aufrufe nötig, bei ≈ 7 ms Zykluszeit dauert ein Bild damit rechnerisch ≈ 23 s statt 16 s. Dafür reagieren alle anderen Tasks innerhalb ihrer Grenzen.
|
||||
Der Preis der Zerlegung ist eine längere Gesamtdauer für das Mandelbrot-Bild: Bei 16,16 s Rechenzeit und 5 ms pro Aufruf sind ≈ 3 230 Aufrufe nötig, bei 7,18 ms Zykluszeit dauert ein Bild damit rechnerisch ≈ 23 s statt 16 s. Dafür reagieren alle anderen Tasks innerhalb ihrer Grenzen.
|
||||
|
||||
#pagebreak(weak: true)
|
||||
= Aufgabe C – Process-Stack (PSP) und Main-Stack (MSP)
|
||||
|
|
|
|||
Loading…
Reference in a new issue