FSST - Hardwarenahe Programmierung

Fragen 2

Inhalt

Theoriefragen

(siehe https://developer.mbed.org/users/fpucher/code/HIM0Board/wiki/C%2B%2B-Seite)

  1. Wie funktioniert der I2C Bus?
  2. Zeichnen Sie ein vereinfachtes Timing-Diagramm für das Lesen von einem Byte.
  3. Wie werden die notwendigen Pins des I2C Busses an eine Klasse ClassI2C (z.B. LM75B) übergeben? (Beispiel)
  4. Wie wird ein neues I2C Bus Objekt im Konstruktor erzeugt? (Beispiel)
  5. Schreiben Sie in der Klasse ClassI2C die Methode „read“, die von der I2C Adresse ADDR aus Register REG ein Byte liest.
  6. Schreiben Sie in der Klasse ClassI2C die Methode „write“, die auf den I2C Bus für die Adresse ADDR das Register REG den Wert VALUE schreibt.
  7. Erzeugen Sie ein neues I2C-Objekt in main mit z.B. der Variablen test der Klasse ClassI2C Klasse und den Pins p27 und p28.
  8. Geben Sie ein Beispiel für Initialisierungslisten von parametrisierten Konstruktoren an.
  9. Welche Aufgabe hat ein Konstruktor und wie wird er definiert z.B. für die Klasse ClassI2C?
  10. Wie wird eine Klasse ClassI2C in C++ erzeugt? (Beispiel)
  11. Zeichnen Sie ein Klassendiagramm in UML (Unified Modeling Language) für die I2C Klasse ClassI2C mit den obigen Elementen.
  12. Beschreiben Sie den Unterschied zwischen Polling und Interrupt.
  13. Was ist eine ISR (Interrupt Service Routine) und beschreiben Sie den prinzipiellen Ablauf?
  14. Was darf in einer ISR (Interrupt Service Routine) nicht passieren bzw. vorkommen?
  15. Schreiben Sie den notwendigen C++ Code, der eine ISR (Interrupt Service Routine) z.B. für die Taste sw2 am M0 Board aktiviert.
  16. Wie kann das Prellen von Tasten verhindert werden?
  17. Beschreiben Sie die jeweiligen Einsatzgebiete für Timer, Timeout und Ticker
  18. Beschreiben Sie die Funktionsweise der Pulsweitenmodulation (PWM)
  19. Was wird bei der PWM unter dem Tastverhältnis (duty cycle) DC verstanden?
  20. Ein Tastverhältnis (duty cycle) DC von 25% bei einer PWM hat welche Bedeutung?
  21. Berechnen Sie die mittlere Spannung der PWM wenn die Spannung Vcc für 5ms 10V hat und 10ms 0V. Welchem DC entspricht das?
  22. Welche Bedeutung haben die Timer im LPC11U24 zu den bereitgestellten PWM-fähigen Pins?
  23. Die PWM Klasse bietet mehrere Möglichkeiten den DC einzustellen. Welche Methoden können wofür eingesetzt werden?
  24. Worauf ist bei der PWM DC Einstellung acht zu geben, wenn mehrer Pins mit unterschiedlichen DCs verwendet werden sollen?
  25. Sollte ein Controller-Board keine PWM an den Pins haben, gibt es trotzdem die Möglichkeit die mittlere Spannung zu regeln?
  26. Wie wird ein Pwm-Pin an eine Klasse (z.B. MyPwm) übergeben? (Beispiel)
  27. Wie wird ein neues MyPwm Objekt im Konstruktor erzeugt? (Beispiel)
  28. Rufen Sie in der Klasse z.B. MyPwm in der Methode LedOn() mit einem MyPwm Objekt die Methode „write“ auf?
  29. Schreiben Sie eine neue Methode in der Klasse MyPwm, sodass die Led 2 Mal blinkt.
  30. Erzeugen Sie ein neues Objekt in main mit z.B. der Variablen myPwm der Klasse MyPwm und dem Pin p21.
  31. Wie wird ein RC Servo Motor mittels einer PWM gesteuert?

Programmieraufgaben

  1. Schreiben Sie ein C++ Programm, das eine 100Hz Rechteckschwingung an der LED1 ausgibt. Wird die Taste SW2 gedrückt soll die Frequenz verdoppelt werden. Bei einem weiteren Tastendruck sollen wieder die 100Hz ausgegeben werden.
  2. Schreiben Sie ein C++ Programm, das Anzahl wie oft die Taste SW2 gedrückt wurde zählt und die LED1 leuchten soll wenn die Taste 10 Mal gedrückt wurde.
  3. An den Rot-Anteil der RGB-LED (R-LED) sollen 10.000 Pulse gesendet werden, wobei die R-LED eine geringe Helligkeit haben soll, nach weiteren 10.000 Pulsen etwas heller werden usw. bis sie ganz Hell ist. https://developer.mbed.org/forum/helloworld/topic/3329/
  4. Wie kann man PwmOut ein bzw. ausschalten. Probieren Sie den duty cycle auf 0 bzw. 1 zu setzen?
  5. Aufgaben I2C

All wikipages