FSST - Hardwarenahe Programmierung
Fragen 2
Theoriefragen¶
(siehe https://developer.mbed.org/users/fpucher/code/HIM0Board/wiki/C%2B%2B-Seite)
- Wie funktioniert der I2C Bus?
- Zeichnen Sie ein vereinfachtes Timing-Diagramm für das Lesen von einem Byte.
- Wie werden die notwendigen Pins des I2C Busses an eine Klasse ClassI2C (z.B. LM75B) übergeben? (Beispiel)
- Wie wird ein neues I2C Bus Objekt im Konstruktor erzeugt? (Beispiel)
- Schreiben Sie in der Klasse ClassI2C die Methode „read“, die von der I2C Adresse ADDR aus Register REG ein Byte liest.
- 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.
- Erzeugen Sie ein neues I2C-Objekt in main mit z.B. der Variablen test der Klasse ClassI2C Klasse und den Pins p27 und p28.
- Geben Sie ein Beispiel für Initialisierungslisten von parametrisierten Konstruktoren an.
- Welche Aufgabe hat ein Konstruktor und wie wird er definiert z.B. für die Klasse ClassI2C?
- Wie wird eine Klasse ClassI2C in C++ erzeugt? (Beispiel)
- Zeichnen Sie ein Klassendiagramm in UML (Unified Modeling Language) für die I2C Klasse ClassI2C mit den obigen Elementen.
- Beschreiben Sie den Unterschied zwischen Polling und Interrupt.
- Was ist eine ISR (Interrupt Service Routine) und beschreiben Sie den prinzipiellen Ablauf?
- Was darf in einer ISR (Interrupt Service Routine) nicht passieren bzw. vorkommen?
- Schreiben Sie den notwendigen C++ Code, der eine ISR (Interrupt Service Routine) z.B. für die Taste sw2 am M0 Board aktiviert.
- Wie kann das Prellen von Tasten verhindert werden?
- Beschreiben Sie die jeweiligen Einsatzgebiete für Timer, Timeout und Ticker
- Beschreiben Sie die Funktionsweise der Pulsweitenmodulation (PWM)
- Was wird bei der PWM unter dem Tastverhältnis (duty cycle) DC verstanden?
- Ein Tastverhältnis (duty cycle) DC von 25% bei einer PWM hat welche Bedeutung?
- Berechnen Sie die mittlere Spannung der PWM wenn die Spannung Vcc für 5ms 10V hat und 10ms 0V. Welchem DC entspricht das?
- Welche Bedeutung haben die Timer im LPC11U24 zu den bereitgestellten PWM-fähigen Pins?
- Die PWM Klasse bietet mehrere Möglichkeiten den DC einzustellen. Welche Methoden können wofür eingesetzt werden?
- Worauf ist bei der PWM DC Einstellung acht zu geben, wenn mehrer Pins mit unterschiedlichen DCs verwendet werden sollen?
- Sollte ein Controller-Board keine PWM an den Pins haben, gibt es trotzdem die Möglichkeit die mittlere Spannung zu regeln?
- Wie wird ein Pwm-Pin an eine Klasse (z.B. MyPwm) übergeben? (Beispiel)
- Wie wird ein neues MyPwm Objekt im Konstruktor erzeugt? (Beispiel)
- Rufen Sie in der Klasse z.B. MyPwm in der Methode LedOn() mit einem MyPwm Objekt die Methode „write“ auf?
- Schreiben Sie eine neue Methode in der Klasse MyPwm, sodass die Led 2 Mal blinkt.
- Erzeugen Sie ein neues Objekt in main mit z.B. der Variablen myPwm der Klasse MyPwm und dem Pin p21.
- Wie wird ein RC Servo Motor mittels einer PWM gesteuert?
Programmieraufgaben¶
- 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.
- 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.
- 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/
- Wie kann man PwmOut ein bzw. ausschalten. Probieren Sie den duty cycle auf 0 bzw. 1 zu setzen?
- Aufgaben I2C