Probeklausur 3 - Lösungen

Zurück zu den Aufgaben · Formelsammlung

Teilpunkte für erkennbaren Rechenweg auch bei Zahlenfehler.


Aufgabe 1 - Grundlagen (16 P) [Kap. 1]

TeilAntwortBegründung
1.1richtigKern + Speicher + Peripherie auf einem Chip = Mikrocontroller/SoC.
1.2falschvolatile bewirkt das Gegenteil: bei jedem Zugriff neu aus dem Speicher lesen (nicht wegoptimieren).
1.3richtigDefinition von Memory-Mapped I/O.
1.4richtigDefinition von DMA.
1.5falschDas beschreibt weiche Echtzeit; harte Echtzeit = garantierte Einhaltung.
1.6richtigWatchdog löst bei fehlendem Lebenszeichen einen Reset aus.

Aufgabe 2 - Timer (22 P) [Kap. 5]

Gegeben: fCLK=16MHzf_{CLK}=16\,\text{MHz}, 16-Bit, fA=500Hzf_A=500\,\text{Hz}, Duty 20 %.

2.1 TA=1/fA=1/500Hz=2msT_A = 1/f_A = 1/500\,\text{Hz} = 2\,\text{ms}.

2.2 Prescalerideal=fCLKfA216=1610650065536=16106327680000,49\text{Prescaler}_{ideal} = \dfrac{f_{CLK}}{f_A\cdot 2^{16}} = \dfrac{16\cdot10^6}{500\cdot 65536} = \dfrac{16\cdot10^6}{32\,768\,000} \approx 0{,}49 -> nächstgrößerer verfügbarer Wert: Prescaler = 2. (Kontrolle: RC = 16000 <= 65536.)

2.3 Tstep=Prescaler/fCLK=2/16106=0,125μs=125 nsT_{step} = \text{Prescaler}/f_{CLK} = 2/16\cdot10^6 = 0{,}125\,\mu\text{s} = \mathbf{125\ ns}.

2.4 RC=fCLKPrescalerfA=161062500=16000RC = \dfrac{f_{CLK}}{\text{Prescaler}\cdot f_A} = \dfrac{16\cdot10^6}{2\cdot 500} = \mathbf{16\,000} (= TA/Tstep=2ms/125nsT_A/T_{step} = 2\,\text{ms}/125\,\text{ns}).

2.5 RA=0,20RC=0,2016000=3200RA = 0{,}20 \cdot RC = 0{,}20 \cdot 16\,000 = \mathbf{3\,200}.

2.6 RB=0,5016000=8000RB = 0{,}50 \cdot 16\,000 = \mathbf{8\,000}.

2.7 Wave-Modus; der Zähler wird bei Counter == RC (RC-Compare, CPCTRG) zurückgesetzt.

Aufgabe 3 - Parallele I/O (14 P) [Kap. 3]

Segmentbits: a=0, b=1, c=2, d=3, e=4, f=5, g=6.

3.1 0x5B = 0b1011011 -> Bits 0,1,3,4,6 = Segmente a, b, d, e, g -> Ziffer 2.

3.2 Start {a, b, d, e, g}. CODR=0x10 löscht e, SODR=0x04 setzt c -> {a, b, c, d, g} -> Ziffer 3.

3.3 SODR/CODR erlauben atomares Setzen/Löschen einzelner Bits ohne Read-Modify-Write. So kann eine ISR gleichzeitig ein anderes Bit schalten, ohne dass es zu Race Conditions kommt; man muss den bisherigen Portzustand nicht kennen.

Aufgabe 4 - Signalverarbeitung (18 P) [Kap. 7]

4.1 Diskretes Spektrum mit drei Linien: 50 Hz (Amplitude 2), 150 Hz (Amplitude 4), 300 Hz (Amplitude 1).

4.2 sin(600πt)\sin(600\pi t) -> f=600π/(2π)=300Hzf = 600\pi/(2\pi) = 300\,\text{Hz} -> enthalten, Amplitude 1.

4.3 fmax=300Hzf_{max} = 300\,\text{Hz} -> fs>2300=600Hzf_s > 2\cdot 300 = 600\,\text{Hz} -> minimal knapp über 600 Hz (z. B. 601 Hz; 600 Hz reicht nicht, da strikt größer).

4.4 falias=fsf=400300=100 Hzf_{alias} = |f_s - f| = |400 - 300| = \mathbf{100\ Hz}.

4.5 ΔU=U/2n=5V/210=5V/10244,88 mV\Delta U = U/2^{n} = 5\,\text{V}/2^{10} = 5\,\text{V}/1024 \approx \mathbf{4{,}88\ mV}.

4.6 D=fstBytes=12005128Byte=60001,5=9000 ByteD = f_s \cdot t \cdot \text{Bytes} = 1200\cdot 5 \cdot \tfrac{12}{8}\,\text{Byte} = 6000 \cdot 1{,}5 = \mathbf{9\,000\ Byte}.

Aufgabe 5 - CRC (14 P) [Kap. 10]

5.1 x3+x+1x^3 + x + 1 -> Bits 3, 1, 0 -> 1011.

5.2 Nachricht 1101 + 3 Nullen = 1101000, Division (mod 2) durch 1011:

1101000
1011
----
0110000
 1011
 ----
 0011100    -> weiter
  1011
  ----
  0001010   -> nächste 1
   1011
   ----
   0000001

Rest (3 Bit) = 001 -> Prüfbits = 001. Gesendet: 1101 001.

5.3 1101001 ÷ 1011 (mod 2) ergibt Rest 000 -> Übertragung gültig.

5.4 LFSR (Schieberegister + XOR-Gatter). Iterationen = Anzahl der Nutzdatenbits = 4.

Aufgabe 6 - Seriell & Leitungscodes (10 P) [Kap. 4, Kap. 10]

6.1 19200 Baud, 8 Datenbits, E = gerade Parität (even), 1 Stoppbit.

6.2 Start (1) + Daten (8) + Parität (1) + Stopp (1) = 11 Bit.

6.3 Wahr - das Startbit (fallende Flanke aus dem Ruhezustand High) synchronisiert den Empfänger; er tastet danach in Bitmitte ab.

6.4 IEEE 802.3: steigend = 1, fallend = 0 -> Flanken (steigend, fallend, fallend, steigend) = 1 0 0 1.

Aufgabe 7 - Interrupts (6 P) [Kap. 6]

7.1 Zwei Vorteile (beliebige zwei): (a) CPU kann andere Aufgaben erledigen bzw. schlafen (stromsparend), bis das Ereignis eintritt; (b) Ereignisse werden immer überwacht, nicht nur zu Abfragezeitpunkten; (c) übersichtlicheres Hauptprogramm; (d) Entlastung von Bus/Peripherie.

7.2 Shared-Data-Problem: Hauptprogramm und ISR greifen auf dieselben Daten zu; eine Unterbrechung mitten in einer Berechnung führt zu inkonsistenten Werten. Lösung: kritischen Abschnitt schützen (Interrupts kurz sperren) und gemeinsame Variablen volatile deklarieren.


Zurück zu den Aufgaben · Weiter: Probeklausur 4