Title: Standard für Mikro19
Course: A. Technische Informatik II

Standardkategorie für Fragen, die im Kontext 'Mikro19' freigegeben sind.

Feedback shared by this category's questions, if right: Die Antwort ist richtig.
Feedback shared by this category's questions, if partly right: Die Antwort ist teilweise richtig.
Feedback shared by this category's questions, if wrong: Die Antwort ist falsch.

Q: Programmieren Sie in Assembler einen Sprung zur Sprungmarke (Label) m1: wenn PA10=1 ist
- jnb PA10,m1
- jb PA10,m1
- jb m1,PA10
- mov PA10,m1
A: jb PA10,m1

Q: Programmieren Sie in Assembler einen Sprung zur Sprungmarke m1: wenn PA10=0 ist.
- jnb PA10,m1
- jb PA10,m1
- b PA10,m1
- jnb m1,PA10
A: jnb PA10,m1

Q: Übersetzen Sie in Assembler:

[Image]
- 1. | mainasm:
- 2. | schleife:
- 3. | jb PA10,m1
- 4. | setb PC0
- 5. | b weiter:
- 6. | m1:
- 7. | clr PC0
- 8. | weiter:
- 9. | b schleife

Q: Welche Befehlsausführungszeit in ns (Nanosekunden) hat eine typusche Instruktion wie z.B. subs R1,R0?
A: 31.25

Q: Ein Unterprogramm warte10s soll geschrieben werden
- 1. | warte10s:
- 2. Zeitwert | ldr R1,=(32000000/5)*10
- 3. Step | mov R2,#1
- 4. | w10s:
- 5. | subs R1.R2
- 6. | bne w10s
- 7. | bx lr

Q: Was versteht man unter dem Begriff "Datenbus" im unserem Mikrocontroller?
- Ein speziell gesichertes Fahrzeug mit dem Großfirmen ihre sensiblen Daten z. B. zu einem Banktresor transportieren
- Anschluss eines Backuplaufwerks an einen Rechner
- 32 Verbindungsleitungen zwischen Speicher (RAM/ROM) und Prozessorkern über die der Datenaustausch zwischen Prozessorkern und Speicher erfolgt.
- BUS steht für Broadband Unified SerialInterface. Standartisierte Komunikationsschnittstelle für Mikrocontroller. Sehr ähnlich dem USB-Interface
A: 32 Verbindungsleitungen zwischen Speicher (RAM/ROM) und Prozessorkern über die der Datenaustausch zwischen Prozessorkern und Speicher erfolgt.

Welche Instruktionen dienen dem Datentransport?

Q: Erläutern Sie den Begriff Adressbus in unserem Mikrocontroller
- Bit Ultra Speed Adresse. Spezielle Adressen (Codes) werden benötigt um Daten mit erhöhter Geschwindigkeit über Alu-Leitungen zu übertragen und, falls entsprechen konfiguriert, dabei auf Konsistenz zu überprüfen.
- Transporter für die Kundenadressdateien von Datenverarbeitungsfirmen
- Ringleitung bei der Gebäudeautomation um reihum die jewilige Gebäudeadresse weiter zu geben.
- 32 Auswahlleitungen zur Auswahl eines Bytes im Speicher (RAM/ROM/Peripherie)
A: 32 Auswahlleitungen zur Auswahl eines Bytes im Speicher (RAM/ROM/Peripherie)

Q: Welche Information ist im Programcounter (PC) enthalten?
- Die Speicheradresse im Codespeicher der aktuell abgearbeiteten Instruktion
- Die Anzahl der aktuell gleichzeitig geöffneten Programme
- Die Anzahl der Programme, die seit Power-On verarbeitet wurden.
- Ein Zähler für Progammzeilen speziell in XML-Dateien
A: Die Speicheradresse im Codespeicher der aktuell abgearbeiteten Instruktion

Q: Welche Auswirkungen hat folgende Instruktion: add PC,R0, wenn in R0 der Zahlenwert 6 steht?
- Dadurch wird dem core-system die Anzahl der installierten Interruptprogramme (ISR=Interrupt-Service-Routine) mitgeteilt, damit diese beim scheduling berücksichtigt werden können (hier meist first come first serve)
- Dadurch wird die zulässige Anzahl der gleichzeitig geöffneten Anwendungen um 6 erhöht. diese Instruktion kann nur im Supervisormode ausgeführt werde.
- Zum Programcounter wird ein Wert hinzugezählt. Da der PC immer auf die aktuelle Programmstelle zeigt, entspricht dies einem Sprung zu einer anderen Programmstelle, oft 8 Bytes weiter hinten im Codespeicher
- Generell bewirkt eine Veränderung des Programmcounters ein Systemreset. Mit dem addierten Wert kann die Resetpriorität festgelegt werden (0 niedrig, 10 hoch). Bei 10 würden alle laufenden Prozesse sofort beendet, bei 0 erfolgt der Reset erst wenn alle laufenden Prozesse zu einem Ende kommen.
A: Zum Programcounter wird ein Wert hinzugezählt. Da der PC immer auf die aktuelle Programmstelle zeigt, entspricht dies einem Sprung zu einer anderen Programmstelle, oft 8 Bytes weiter hinten im Codespeicher

Q: Welche Informationen werden über den Steuerbus übertragen?
- WR: Speicher auf Schreiben einstellen
- RD: Speicher auf Lesen einstellen
- CS bzw. CE: Chipselect bzw. Chipenable: Auswahl des Speichers z.B. ROM oder RAM
- UP: Hochfahren der Taktfrequenz
- Down: Verringern der Taktfrequenz
- ROOT: Ansprechen geschützter Dateien
- DDR: Übergang zur doppelten Datenrate
- SB: Startbit der Kommunikation liegt an
A: WR: Speicher auf Schreiben einstellen; RD: Speicher auf Lesen einstellen; CS bzw. CE: Chipselect bzw. Chipenable: Auswahl des Speichers z.B. ROM oder RAM

Q: Initialisieren Sie TIM6 dafür, dass alle 20ms die ISR: void isr20ms() aufgerufen wird.
- writeBit(CEN6,1);
- writeBit(EX6,1);
- readBit(UIF6);
- TIM6->ARR=20;
- TIM6->ARR=20000;
- writeBit(EA,1);
- writeBit(UIE6,0)
- writeBit(UIE6,1);
- setIntVector(isr20ms,uie6Vector);
- setIntVector(&isr20ms,uie6Vector);
- writeBit(CEN6,0);
A: writeBit(CEN6,1);; TIM6->ARR=20000;; writeBit(EA,1);; writeBit(UIE6,1);; setIntVector(&isr20ms,uie6Vector);

Q: Schreiben Sie eine minimale TimerISR.
- 1. | void TimerISR()
- 2. | {
- 3. | writeBit(UIF6,0);
- 4. | }

Q: Berechnen Sie die Dauer des Timerintervalls in ms, wenn TIM6->ARR=12345;
A: 12.345

Q: Schreiben Sie eine ISR, die einmal in einer Sekunde GPIOC->ODR hochzählt.

TIM6->ARR ist auf 50000 eingestellt. Es steht die globale Variable int zeitzaehler zur verfügung.
- 1. | void ISR_1sek()
- 2. | {
- 3. Updateinterruptflag zurücksetzen | writeBit(UIF6,0);
- 4. | zeitzaehler++;
- 5. | if (zeitzaehler>=20)
- 6. | { zeitzaehler=0;
- 7. | GPIOC->ODR++; }
- 8. | }

Q: Ein Rechtecksignal hat eine Periodendauer T= 125µs. Berechnen Sie die Frequenz f in Hz
A: 8000

Q: Ein Rechtecksignal hat eine Periodendauer T=16,66ms. Berechnen Sie die Frequenz in Hz.
A: 60 (± 0.1)

Q: Ein Rechtecksignal hat eine Periodendauer T=0,000008s. Berechnen Sie die Frequenz in kHz.
A: 125

Q: Ein Rechtecksignal hat eine Frequenz von 1 MHz. Berechnen Sie die Periodendauer in µs
A: 1

Q: Ein Rechtecksignal hat eine Frequenz f=20Hz. Berechnen Sie die Periodendauer in ms
A: 50

Q: Ein Rechtecksignal hat die Frequenz f=250 kHz. Berechnen Sie die Periodendauer in µs.
A: 4

Q: Ein Rechtecksignal mit der Periodendauer T=100µs soll erzeugt werden. Welchen Wert stellen Sie bei TIM6->ARR ein?
A: 50

Q: Ein Rechtecksignal mit einer Frequenz f=50Hz soll erzeugt werden. Welchen Wert stellen Sie bei ARR ein?
A: 10000

Q: Ein Rechtecksignal mit einer Frequenz von 0,025 MHz soll erzeugt werden. Welchen Wert stellen Sie bei ARR ein?
A: 20

Q: Initialisieren Sie Timer TIM6 für eine Frequenz f=100Hz
- TIM6->ARR=100;
- TIM6->ARR=10;
- TIM6->ARR=10000;
- TIM6->ARR=5000;
- writeBit(CEN6,0);
- writeBit(CEN6,1);
- writeBit(UIE6,1);
- writeBit(UIE6,0);
- writeBit(EA,0);
- writeBit(EA,1);
- setIntVector(&T6isr,uie6Vector);
- setIntVector(T6isr,uie6Vector);
A: TIM6->ARR=5000;; writeBit(CEN6,1);; writeBit(UIE6,1);; writeBit(EA,1);; setIntVector(&T6isr,uie6Vector);

Q: Schreiben Sie eine ISR, die an PC0 ein Rechtecksignal erzeugt. Das Interrupt-Pending-Bit soll am Ende der ISR zurückgesetzte werden.
- 1. | void T6isr(void)
- 2. | {
- 3. | writeBit(PC0,!readBit(PC6));
- 4. | writeBit(uif6,0);
- 5. | }

Q: Wofür steht die Abkürzung PWM?
- Puls Weiten Modulation
- Puls Weiten Mittelwert
- pulse width modulation
- post wire mediation
A: Puls Weiten Modulation; pulse width modulation

Q: Erklären Sie das PWM-Verfahren
- Ein Digitalausgang wird nach einem bestimmten Bittmuster 00110101001101 gepulst. Dabei muss auf eine konstante Bitrate geachtet werden
- Bei konstanter Impulsbreite wird die Frequenz verändert um einen variablen Spannungsmittelwert zu erzielen
- Ein Spannungsmittelwert kann stufenlos eingestellt werden, indem eine Impulsbreite verändert wird, die Frequenz aber beibehalten wird.
- Ein Datenstrom wird so moduliert, dass niemals mehr als 2 Nullen oder Einsen nacheinander auf den Port ausgegeben werden.
A: Ein Spannungsmittelwert kann stufenlos eingestellt werden, indem eine Impulsbreite verändert wird, die Frequenz aber beibehalten wird.

Q: Wie wird eine feste Periodendauer erreicht?
- Die beiden Nachladewerte ergeben zusammen immer den selben Wert.
- TIM6->ARR wird immer auf den letzten Wert von TIM6->CNT gesetzt
- TIM6->ARR wird zu 1/TIM6-ARR gesetzt
- TIM6->ARR = 1/f *2
A: Die beiden Nachladewerte ergeben zusammen immer den selben Wert.

Q: Programmieren Sie die ISR für eine PWM von 1kHz an PC0. Die Hightime ist in der globalen Variablen int th gespeichert.

Am Ende der ISR wird das Anforderungsbitt zurückgesetzt
- 1. | void TIM6isr(void)
- 2. | {
- 3. | writeBit(PC0,!readBit(PC0));
- 4. | if (readBit(PC0==1) TIM6->ARR=th;
- 5. | else TIM6->ARR=1000-th;
- 6. | writteBit(uif6,0);
- 7. | }

Q: Initialisieren Sie TIM6 für eine PWM von 1kHz. Die PWM soll mit Tastgrad g=0,5 beginnen.
- setIntVector(TIM6isr,uie6Vector);
- setIntVector(&TIM6isr,uie6Vector);
- writeBit(CEN6,0);
- writeBit(CEN6,1);
- writeBit(uie6,1);
- writeBit(uie6,0);
- writeBit(EA,0);
- writeBit(EA,1);
- TIM6->ARR=500;
- TIM6->ARR=1000;
A: setIntVector(&TIM6isr,uie6Vector);; writeBit(CEN6,1);; writeBit(uie6,1);; writeBit(EA,1);; TIM6->ARR=500;

Q: Welche Frequenz in kHz weist eine PWM auf, bei der abwechselnd die Zahlenwerte 25 und 75 in das ARR eingetragen werden?
A: 10

Q: Welches Problem könnte auftreten, wenn ARR nahe 0 oder nahe der Periodendauer eingestellt ist?
- Der Flash-Codespeicher könnte gelöscht werden (back-trace-error)
- Das Hauptprogramm könnte abstürzen
- Der Ausgangsport z.B. PC0 könnte überlastet werden
- 2 Timerinterrupts könnten schneller hintereinander folgen, als der Mikrocontroller die ISR ausführen kann. Dadurch kann die PWM in der Periodendauer oder der Pulsweite gestört sein.
A: 2 Timerinterrupts könnten schneller hintereinander folgen, als der Mikrocontroller die ISR ausführen kann. Dadurch kann die PWM in der Periodendauer oder der Pulsweite gestört sein.