Probeklausur 1 - Lösungen
← Probeklausur 1 (Aufgaben) · Startseite · Cliff Notes
Vollständige Lösungen mit Rechenweg, Begründung und Kapitelverweis. Bewertungshinweis: Teilpunkte für erkennbaren Lösungsweg auch bei Zahlenfehler.
Aufgabe 1 - Mikroprozessorsysteme (18 P) Kap. 1
| Teil | richtig angekreuzt | Begründung |
|---|---|---|
| 1.1 | a [x], b [ ], c [x] | b falsch: MCs haben gerade oft keine MMU. |
| 1.2 | a [x], b [x], c [ ] | c falsch: Casten ist hardwarenah notwendig (Adresse → Zeiger). |
| 1.3 | a [x], b [x], c [ ] | c falsch: DMA ≠ Memory-Mapped I/O. |
| 1.4 | a [x], b [x], c [x] | alle richtig (ARM). |
| 1.5 | a [x], b [x], c [ ] | c falsch: Optimierung erkennt keine externen HW-Einflüsse (→ volatile). |
| 1.6 | a [x], b [x], c [x] | alle richtig. |
([x] = ankreuzen, [ ] = nicht ankreuzen. Pro Teilaufgabe 3 P nur bei vollständig korrekter Bewertung aller drei Aussagen.)
Aufgabe 2 - Timer (24 P) Kap. 5
Gegeben: f_CLK = 8 MHz, 16-Bit (2¹⁶ = 65536), T = 4 ms, Duty 25 %.
2.1 Frequenz (2 P): f = 1/T = 1/4 ms = **250 Hz**.
2.2 Optimaler Prescaler (4 P):
Prescaler_ideal = f_CLK/(f_A·2¹⁶) = 8·10⁶/(250·65536) = 8·10⁶/16.384.000 ≈ 0,488.
Nächstgrößerer verfügbarer Wert: Prescaler = 2.
(Kontrolle: RC = 16000 ≤ 65536 [x].)
2.3 ns pro Schritt (3 P): T_step = Prescaler/f_CLK = 2/8·10⁶ = 0,25·10⁻⁶ s = **250 ns**.
2.4 RC (4 P): RC = f_CLK/(Prescaler·f_A) = 8·10⁶/(2·250) = **16.000**.
(= T/T_step = 4 ms/250 ns = 16.000.)
2.5 RA (25 %) (4 P): RA = 0,25 · RC = 0,25 · 16.000 = **4.000**.
2.6 RB (50 %) (3 P): RB = 0,50 · 16.000 = **8.000**.
2.7 Modus (2 P): Wave(form)-Modus; Zähler wird zurückgesetzt, wenn Counter == RC (RC-Compare, CPCTRG).
2.8 Capture-Messdauer (2 P): Register C (RC) - begrenzt die Messdauer / dient als Timeout.
Aufgabe 3 - Parallele I/O (16 P) Kap. 3
Segmentmuster (a..g): 0=abcdef, 1=bc, 2=abged, 3=abgcd, 4=fgbc, 5=afgcd, 6=afgedc, 7=abc, 8=alle, 9=abcdfg.
3.1 (4 P): SODR setzt a, b, c auf High → nur Segmente a, b, c leuchten → Ziffer 7.
3.2 (6 P): SODR=0x7F → alle 7 Segmente an (8). Dann CODR löscht b und e. Übrig: a, c, d, f, g → das ist das Muster von 5. → Ziffer 5.
3.3 (3 P): Segmente a, f, g, c, d an = Muster 5 → Ziffer 5.
3.4 (3 P): Bei low-aktiver Ansteuerung leuchtet die LED, wenn der Ausgang Low ist; der Strom fließt von +UB in den Pin (Sink). Der Prozessor muss den LED-Strom nicht selbst liefern (Source), was für die Ausgangstreiber günstiger ist → deshalb häufiger.
Aufgabe 4 - Signalverarbeitung (17 P) Kap. 7
4.1 (3 P): S(t) = 3·sin(2π·100·t) + 1·sin(2π·200·t) + 2·sin(2π·400·t).
4.2 (2 P): sin(400π·t) → f = 400π/(2π) = 200 Hz → enthalten, Amplitude 1.
4.3 (4 P): Höchste Frequenz f_max = 400 Hz. Abtasttheorem: f_s > 2·f_max = 800 Hz (strikt). Minimale sinnvolle Wahl: etwas über 800 Hz (z. B. 801 Hz / praktisch 850 Hz). f_s = 800 Hz reicht nicht.
4.4 (3 P): Alias = |f_s − f| = |700 − 400| = **300 Hz**.
4.5 (2 P): Um die 400-Hz-Komponente zu unterdrücken, aber 200 Hz noch korrekt zu erfassen: 2·200 Hz < f_s ≤ 2·400 Hz → 400 Hz < f_s ≤ 800 Hz (z. B. 700 Hz).
4.6 (3 P): 2000 /s · 30 s · 8 bit = 480.000 bit = 480.000/8 = **60.000 Byte**. (8 Bit = 1 Byte.)
Aufgabe 5 - CRC (12 P) Kap. 10 §7
5.1 (2 P): x⁴+x+1 → Terme x⁴, x¹, x⁰ → 10011.
5.2 (5 P): Nachricht 11010110 + 4 Nullen = 11010110 0000. Mod-2-Division durch 10011:
110101100000
10011
-----
010011100000 (11010 ^ 10011 = 01001, nachgezogen)
10011
-----
000001100000
10011
-----
000000010000 ...
Restregister-Kette: 11010→01001, 10011→00000 (weiter), …, Endrest = 0110.
Prüfbits = 0110. Gesendet: 11010110 0110. (rechnerisch bestätigt).
5.3 (3 P): Empfangen 11010110 0110 ÷ 10011 (mod 2) → Rest 0000 → da Rest 0, ist die Nachricht gültig.
5.4 (2 P): EXOR-Gatter und ein Schieberegister (zusammen ein LFSR). (Nicht: UND/ODER/Volladdierer/CPU.)
Aufgabe 6 - Seriell & Leitungscodes (15 P) Kap. 4, Kap. 10
| Nr. | Antwort | Begründung |
|---|---|---|
| 6.1 | Wahr | Startbit dient der Synchronisation (kein separater Takt). |
| 6.2 | Wahr | RSR deserialisiert → Byte aus RHR lesen. |
| 6.3 | Falsch | Das Shift Register (TSR) serialisiert, nicht das THR. |
| 6.4 | Wahr | Start = fallende SDA-Flanke bei SCL = High. |
| 6.5 | Falsch | ACK = Low (0), NACK = High. |
6.6 (2 P): 9600 Baud, 8 Datenbits, keine (None) Parität, 1 Stoppbit.
6.7 (3 P) IEEE 802.3 (fallend=0, steigend=1): fallend, steigend, steigend, fallend → 0 1 1 0.
6.8 (2 P) G. E. Thomas (invertiert: fallend=1, steigend=0): → 1 0 0 1 (bitweises Komplement von 6.7).
6.9 (3 P): Manchester: 1 Bit = 2 Symbole → Baudrate = 2·Bitrate = 4 MBaud. (Preis: doppelte Bandbreite; Vorteil: selbsttaktend, gleichspannungsfrei.)
Aufgabe 7 - Hardware-Interrupts (12 P) Kap. 6
7.1 (6 P): Reihenfolge: C → E → D → A → B → F
(Anforderung → Kontext sichern → ISR-Adresse aus IVR → ISR ausführen → EOICR bestätigen → Kontext wiederherstellen + Rücksprung SUBS pc, lr, #4).
7.2 (3 P): z. B. (1) AIC = externe Hardware, NVIC = im Kern integriert; (2) AIC 8 Prioritäten + FIQ, NVIC 16 Prioritäten; (3) NVIC sichert Kontext automatisch (Stacking) und unterstützt Tail-Chaining/Late-Arrival/nested, AIC nicht (nur mit expliziter Programmierung).
7.3 (3 P): Shared-Data-Problem: Hauptprogramm und ISR greifen auf dieselben Daten zu; eine Unterbrechung mitten in einer Berechnung führt zu inkonsistenten Werten (Race Condition). Lösung: kritischen Abschnitt schützen → Interrupts kurz sperren (critical section); gemeinsame Variablen volatile deklarieren.
Punkteschlüssel (Orientierung)
| Punkte | ≥ 95 | ≥ 82 | ≥ 68 | ≥ 57 | ≥ 46 | < 46 |
|---|---|---|---|---|---|---|
| Note | 1,x | 2,x | 3,x | 4,0 | 4,x knapp | 5,0 |