|
Created by karl_herber
over 8 years ago
|
|
150. Sie verwenden den 12-Bit ADC auf dem C8051F020/21 und erhalten bei einer Messung den Wert 0400hex. – Welche Spannung in Bezug auf die Referenzspannung VREF haben Sie gemessen?
151. Sie verwenden den 12-Bit ADC auf dem C8051F020/21 und erhalten bei einer Messung den Wert 4095. – Welche Spannung in Bezug auf die Referenzspannung VREF haben Sie gemessen?
152. Sie verwenden den 12-Bit ADC auf dem C8051F020/21 und schließen den ADC-Eingang gegen Masse kurz. Welchen Wert erwarten Sie beim Auslesen des ADCs?
153. Bei dem 12-Bit ADC des C8051F020/21 errechnet sich der ausgelesen ADC-Wert nach der folgenden Beziehung:
ADCCODE=V_in⋅Gain/V_REF ⋅2^16
(a) Wofür steht Gain in obiger Formel? Welchen Schaltungsteil kann ich mit Gain beeinflussen?
(b) Warum wird der Wert 216 in obiger Formel angegeben, obwohl es sich doch um einen 12-Bit ADC handelt?
154. Auf dem C8051F020/21 befindet sich ein interner Temperatur-Sensor, der mit dem 12-Bit ADC abgefragt werden kann. Zur Umrechnung der Temperatur in eine äquivalente Spannung wird im Datenblatt der nachfolgende Ausdruck angegeben:
V_temp=(2,86 mV/(°C))⋅Temp[°C]+776 mV
Müssen Sie eine Linearisierung vornehmen, um eine möglichst genaue Temperatur zu erhalten? Begründen Sie Ihre Antwort!
155. Beschreiben Sie Funktion des analogen Multiplexers vor dem ADC auf dem C8051F020/21. – Wozu und für welche Anwendungen wird er benötigt?
156. Sie möchten mit dem 12-Bit ADC des C8051F020/21 zwei analoge Spannungen erfassen. Die erste Spannung liegt in einem Bereich von 0 – 1 Volt, die zweite Spannung im Bereich 0 – 5 Volt. – Was können Sie unternehmen, um beide Spannungen mit bestmöglicher Auflösung zu messen?
157. Mikrocontroller enthalten ein oder mehrere Zeitgeber/Zähler (Timer/Counter). Nennen Sie drei typische Anwendungen, bei denen Timer/Counter verwendet werden.
158. Verzögerungen in Mikrocontroller-Programmen lassen sich auch durch sogenannte delay-loops realisieren. Warum ist aber in vielen Fällen besser, die Timer eines Mikrocontrollers für Verzögerungen zu verwenden?
159. Erklären Sie mit wenigen Worten, wie ein Timer innerhalb eines Programms verwendet werden kann.
160. Erklären Sie den Unterschied zwischen den beiden Betriebsarten Zeitgeber (Timer) und Zähler (Counter).
161. Gegeben ist das nachfolgenden Prinzipschaltbild einer Zeitgeber-/Zähler-Einheit. Sie haben die Aufgabe bekommen, Pulsdauern von einem externen unbekannten Digitalsignal präzise auszumessen. Wie würden Sie diese Aufgabe lösen und wie müssten dazu die beiden Umschalter im Schaltbild gesetzt werden?
162. Timer/Counter können für verschiedene Aufgaben konfiguriert werden. Beschreiben Sie den Modus auto-reload und erörtern Sie, wozu dieser Mode eingesetzt werden kann.
163. Ihr Mikrocontroller besitzt einen 16-Bit Zeitgeber/Zähler mit auto-reload Funktion, der mit 10 kHz getaktet wird. Auf welchen Wert müssen Sie das Reload-Register setzen, damit Ihr Timer alle 5 Sekunden das Overflow-Flag setzt?
164. Viele Timer/Counter unterstützen auch einen Capture-Mode. Erklären Sie, wie dieser Mode funktioniert. Für welche Anwendung kann der Capture-Mode sinnvoll eingesetzt werden?
165. In vielen Anwendungen werden Timer verwendet, um PWM-Signale zu generieren. Was sind PWM-Signale? Nennen Sie eine type Anwendung!
166. Sie möchten die Drehzahl von einem DC-Motor mittels PWM-Ansteuerung regeln. Damit der DC-Motor „sauber“ dreht, muss Ihr PWM-Signal eine Frequenz von ca. 1 kHz haben. Ihnen steht ein 8-Bit Timer mit PWM-Funktion zur Verfügung. (a) Mit welcher Taktfrequenz lassen Sie Ihren Timer laufen? (b) Der DC-Motor soll mit ca. 80% seiner maximalen Drehzahl arbeiten. Welchen Wert tragen Sie dazu in dem Compare-Register ein? (Annahme: Drehzahl und Tastverhältnis verhalten sich linear!)
167. Abgebildet ist das Diagramm einer PWM-Erzeugung. Ersetzen Sie die blauen Fragezeichen durch sinnvolle Bezeichnungen!
168. Mit der Hilfe von Zeitgebern/Zählern ist es möglich Programmunterbrechungen (Interrupts) auszulösen. Wie und in welcher Situation kann ein Timer einen Interrupt erzeugen?
169. Erklären Sie den Begriff „Interrupt“ bei Mikroprozessoren / Mikrocontrollern!
170. Für welche Aufgaben kann ein Interrupt bei der Programmierung von Mikrocontrollern genutzt werden? Geben Sie ein Anwendungsbeispiel!
171. Erklären Sie den Begriff „Polling“ im Rahmen der Mikrocontroller-Programmierung und diskutieren Sie die Nachteile dieser Methode in Programmen.
172. Erklären Sie, was eine „Interrupt-Service-Routine“ (ISR) ist. Diskutieren Sie den Unterschied zwischen einem Funktionsaufruf und einer ISR.
173. Zu den „besonderen Betriebsarten“ von Mikroprozessoren und vielen Mikrocontrollern zählen Interrupts und Exceptions (auch oft als Traps bezeichnet). Erklären Sie den Unterschied zwischen Interrupt und Trap und führen Sie für beide Begriffe ein Beispiel auf!
174. Sie verwenden in Ihrem Programm einen der beiden ADCs des C8051F02x. Weil ein ADC nicht beliebig schnell in der Umsetzung ist, müssen Sie auf das Ergebnis warten. Welche Möglichkeiten gibt es dazu? Skizzieren Sie Ihre Lösung durch ein geeignetes Flussdiagramm!
175. Erklären Sie den Begriff „Seiteneffekt“ im Rahmen der Interrupt-Programmierung.
176. Im Rahmen der Interrupt-Programmierung wird auch gerne der Begriff „Nebenläufigkeit“ verwendet. Was ist damit gemeint? Laufen Programme, die Interrupts verwenden „parallel“? Erörtern Sie ausführlich!
177. Zählen sie vier typische Interrupt-Quellen bei Mikrocontrollern auf und erklären Sie, wann und wodurch der Interrupt aufgerufen wird.
178. Sie haben an ein I/O-Port-Pin Ihres Mikrocontrollers einen Taster angeschlossen. Der Taster schaltet gegen Masse und der Port-Pin wird mit einem Pull-Up-Widerstand gegen VCC gezogen. Der Port-Pin wird als pegel-sensitiver Interrupt konfiguriert, so dass bei Tasterbetätigung Interrupts erzeugen kann. Innerhalb Ihrer Taster-ISR inkrementieren Sie einen Counter. – Beim Testen von Ihrem Programm stellen Sie fest, dass der Counter sich um mehr als einen Wert beim Betätigen des Tasters erhöht.
(a) Wie kommt das?
(b) Was können Sie ändern, um dieses Fehlverhalten zu beseitigen?
179. Bezug vorherige Aufgabe: Sie ändern die Interrupt-Auslösung auf „negative Flanke“ ab und hoffen damit, Ihr Programm korrigiert zu haben. – Leider erhöht sich der Counter immer noch um mehr als einen Wert beim Betätigen des Tasters! Was können Sie noch unternehmen? Skizzieren Sie eine Lösung, die ohne Delays in der ISR auskommt!
180. Aus Programmsicht können Programmunterbrechungen synchron oder asynchron auftreten. Erörtern Sie, welche Art von Programmunterbrechung synchron bzw. asynchron auftreten!
181. Beschreiben Sie, z.B. in Form von einem Flussdiagramm, wie genau die Abarbeitung eines Interrupts funktioniert.
182. Beim Auftreten eines Interrupts wird der Programcounter (PC) auf dem Stack abgelegt. Macht dies der Mikrocontroller oder sind Sie als Programmierer dafür verantwortlich? Begründen Sie Ihre Antwort!
183. Im Assember-Befehlssatz der 8051-Familie gibt es die beiden Befehle RET und RETI. Erklären Sie die Unterschiede der beiden Befehle und erklären Sie, in welcher Programmsituation welcher der beiden Befehle verwendet wird.
184. Der Mikrocontroller C80151F020/21 unterstützt insgesamt 22 Interrupt-Quellen, die man in 6 Gruppen aufteilen kann. Nennen Sie einige der Gruppen und der interrupt-auslösenden Peripherie-Einheiten.
185. Warum können die seriellen Schnittstellen des C8051F020/21 Interrupts auslösen? Wozu kann das sinnvoll sein?
186. Wurde beim C8051F2020/21 ein Interrupt ausgelöst, so wird das zugeordnete Interrupt-Pending-Flag gesetzt. Wozu dient dieses Pending-Flag?
187. Eine Interrupt-Service-Routine (ISR) sollte zu Beginn das Program-Status-Word (PSW) auf dem Stack sichern und später wieder restaurieren.
(a) Warum ist das für einen sicheren Programmablauf wichtig?
(b) Ist es auch denkbar eine ISR zu programmieren, die das PSW nicht sichert, aber trotzdem fehlerfrei funktioniert?
(c) Welche Bedingung muss bei der Programmierung von so einer ISR dann eingehalten werden?
188. Der C8051F2020/21 unterstützt priorisierte Interrupts. Erklären Sie, wozu es sinnvoll sein kann, einem Interrupt eine höhere Priorität gegenüber anderen Interrupts einzuräumen.
189. Sie haben in Ihrem Programm für den C8051F020/21 zwei Interrupts die gleiche Priorität gegeben. – Welcher Interrupt wird zuerst ausgeführt, falls beide Interrupts gleichzeitig ausgelöst werden?
190. Kann eine Interrupt-Service-Routine (ISR), die gerade ausgeführt wird, von einem weiteren Interrupt unterbrochen werden? Erklären Sie den Ablauf der ISRs in diesem Fall!
191. Was ist unter dem Begriff „Polling-Sequenz“ im Rahmen der 8051-Mikrocontroller-Familie zu verstehen?
192. (a) Erklären Sie wie der Begriff „Interrupt-Latency“ definiert ist.
(b) Beschreiben Sie welche Überlegungen man aufstellen muss, um die minimale und maximale Interrupt-Latency zu bestimmen.
193. Für das Programmverhalten ist die Interrupt-Latency im Mikrocontroller-Umfeld eine wichtige Größe. Ist hierbei die minimale oder maximale Interrupt-Latency die kritischere Größe? Begründen Sie Ihre Antwort!
194. Beim Eintreffen eines Interrupts springt der 8051 zu einer dem Interrupt zugeordneten Speicherstelle. Diese Speicherstelle wird mit einem Fachbegriff bezeichnet. Nennen sie den gesuchten Begriff und erklären Sie, welcher Assembler-Befehl an der besagten Speicherstelle (Adresse) stehen wird.
195: Interrupts können durch spezielle Syntax-Erweiterungen auch in der Programmiersprache C implementiert werden. Beschreiben Sie wie eine InterruptRoutine in C programmiert wird!
196: Die Mikrocontroller der 8051-Familie unterstützen insgesamt 4 Register-Bänke mit jeweils 8 Registern. Beschreiben Sie wie die vier Register-Bänke im Rahmen der Interrupt-Programmierung sinnvoll genutzt werden können!
197: Wie können Sie aus der Programmiersprache C heraus, eine der vier Registerbänke für Ihre Interrupt-Funktion auswählen? Geben Sie ein Beispiel!
198: Geben Sie die Formel an, um aus der Interrupt-Nummer n den entsprechenden Interrupts-Vektor für einen Mikrocontroller der 8051-Familie zu berechnen!
199: Erklären Sie, was mit „atomaren Befehlen“ gemeint ist!
200: Muss der C-Programmierer beim Implementieren von Interrupt-Service-Routinen darauf achten, dass verwendete Register zunächst gesichert werden?
201: Gegeben ist die folgende Interrupt-Funktion in C:
void ISRtime2 ( void ) interrupt 5 using 2 //
{
static unsigned short cnt = 0; //
if ( --cnt & 2 ) P5 = 0x55; //
else P5 = 0xAA; //
TF2 = 0; //
}
Kommentieren sie nach dem //!
202: Können Sie an Interrupt-Funktionen in C Parameter übergeben? Begründen Sie Ihre Antwort!
203: Was ist zu beachten, wenn Sie aus Ihrer Interrupt-Funktion auf globale Variablen zugreifen? Gibt es bei dieser Betrachtung einen Unterschied, ob Sie auf 8-Bit oder 16-/32-Bit Variablen zugreifen?
204: Erklären Sie mit einem Beispiel den Begriff „critical section“!
205: Der 8051 bieten den Assembler-Befehl JBC (jump and clear if bit is set). Was ist das Besondere an diesem Befehl und für welche Programmsituationen kann er verwendet werden?