Franz Pucher / HIM0Board

You are viewing an older revision! See the latest version

Fragen 2

Inhalt

(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.

Schreiben Sie die folgenden Programme.

  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.

All wikipages