Embedded Systems

Mündliche Prüfung, 3. Semester

Mündliche Prüfung, 3. Semester


L. E.
Diese Lernkarten bieten einen Überblick über die Funktionsweise und Fehlerquellen von Analog-Digital-Wandlern, die in eingebetteten Systemen verwendet werden. Sie behandeln Themen wie Quantisierungsfehler, Nichtlinearitäten, Verstärkungs- und Nullpunktfehler, sowie die Verwendung von Interrupts und PWM-Signalen. Die Karteikarten sind ideal für Studierende der Informatik, die sich mit der Programmierung und dem Verhalten von eingebetteten Systemen vertraut machen möchten.
Flashcards
18
Students
2
Language
German
Category
Computer Science
Level
University
Created / Updated
28.10.2016 / 04.01.2021

Flashcards

Was macht die Funktion delay()?

Unterbricht das Programm für die Zeit (in Millisekunden), die als Parameter angegeben ist.

Was für einen Nachteil hat delay()?

Viele Aktivitäten können nicht weiterlaufen.

Was macht die Funktion millis()?

Gibt die Anzahl der Millisekunden zurück, seit das laufende Programm auf dem Arduino-Board ausgeführt führt. Rückgabewert mit unsigned long.

Was macht die Funktion digitalWrite()?

Schreibt einen HIGH- oder LOW-Wert auf einen digitalen Pin.

Was bedeutet Prellen?

Als Prellen wird ein mechanisch ausgelöster Störeffekt bei elektromechanischen Schaltern und Tastern bezeichnet: Statt des sofortigen elektrischen Kontaktes ruft die Betätigung des Schalters kurzzeitig ein mehrfaches Schließen und Öffnen des Kontakts hervor. Ursache ist elastisches Zurückprallen gegen die Federung.

Wie kann man entprellen?

- Einfügen eines kurzen delays nach der Abfrage des Tasterstatus: funktioniert allerdings nicht bei zeitkritischen Funktionen oder parallelen Abfragen, da so der komplette Ablauf für eine kurze Zeit gestoppt wird und so alle Eingaben oder Ereignisse in dieser Zeit ignoriert werden

- Verwenden von millis(): siehe LED_taster_entprellt

Was ist PWM?

- Pulweitenmodulation

- Modulationsart, bei der eine technische Größe (z. B. elektrische Spannung) zwischen zwei Werten wechselt

- Technik, um analoge Ergebnisse mit digitalen Mitteln zu erhalten

- man nimmt ein Rechtecksignal mit einer festen Frequenz und variiert die Breite der jeweiligen Pulse, Verhältnis zwischen Ein- und Ausschaltzeit verändert sich

- Periodendauer: Abstand zweier aufeinander folgender Pulse

- Pulsweite: Breite des aktiven Pulses (a)

- mittlere Spannung, welche an diesem Pin anliegt: Verhältnis von a zu (a+b)

- a nur halb so breit wie die Periodendauer --> 50% der Signalspannung im Mittel zur Verfügung

- "Duty Cycle" (Tastverhältnis): Verhältnis von Pulsweite zu Periodendauer

- Vorteil: geringerer Leistungsverbrauch, da nicht permanent eine Eingangsspannung anliegt, die von einer Elektronik auf die gewünschte Motorspannung heruntergeregelt wird, sondern der Motor durch die Breite der Schaltimpulse gesteuert wird

Was ist der Scan-Code?

- eine Nummer, die von der Tastatur eines Rechners an diesen gesendet wird, wenn eine Taste gedrückt oder losgelassen wird

- jede Taste wird mehrmals pro Sekunde abgefragt --> falls Taste gedrückt, Zuordnung eines Scan-Codes, unabhängig vom aufgedruckten Tastensymbol --> serielle Übertragung an Tastatur-Controller --> Controller speichert Code und löst Hardware-Interrupt IRQ1 aus --> Aufruf des Software-Interrupts 09H --> Start des Tastaturtreibers --> Umwandlung des empfangenen Scan-Code in das entsprechende ASCII-Zeichen

- synchtone, serielle Datenübertragung zum PC: Drücken der Taste --> Datenleitung auf L-Potential + Start des Taktgenerators --> bei L-Phase des Takts Datenpegel gültig --> Senden des Startbits (immer log "0") --> Senden der 8 Datenbits, beginnend mit LSB --> Senden des Paritätsbits --> Senden des Stoppbits (Immer H-Pegel)

- Datenübertragung bidirektional

- drei Scan-Code-Sätze: kann man durch Steuerbefehle umschalten, bestimmter Code-Satz vom Hersteller voreingestellt

- zur Ermittlung, ob mehrere Tasten gleichzeitig gedrückt sind: Tastatur sendet in Abhängigkeit vom eingestellten Code-Satz für jede Taste zwei unterschiedliche Scan-Codes, beim Drücken Make-Code, beim Loslassen Break-Code (nicht bei allen Herstellern gleich, oft F0H + Make-Code)

- Bsp.: Space-Taste: Bit-Muster: 1001|0100 --> umdrehen: 101001 --> aus binär hex: 10 ist 2, 1001 ist 9 --> Make Code: 29 -> Break Code: F0, 29

 

Was machen die Funktionen attachInterrupt() und detachInterrupt()?

- attachInterrpt(interrupt, function, mode) aktiviert Interrupt

- detachInterrupt(interrupt, function, mode) deaktiviert Interrupt

- interrupt:

  • Inter. 0 = Digitaler Pin 2
  • Inter. 1 = Digitaler Pin 3
  • Inter. 2 = Digitaler Pin 21
  • Inter. 3 = Digitaler Pin 20
  • Inter. 4 = Digitaler Pin 19
  • Inter. 5 = Digitaler Pin 18

- function: beliebige Funktion, die ausgeführt werden soll, sobald ein Ereignis eintritt, delay() und millis() funktionieren nicht, Variablen, die innerhalb der angehängten Funktion geändert werden sollen, als "volatile" deklarieren

- mode: definiert, wann Alarm oder Ereignis ausgelöst werden soll

  • LOW = Löst aus wenn sich der Wert von HIGH auf LOW ändert
  • CHANGE = Löst aus wenn sich der Werte am Pin ändert
  • RISING = Löst aus wenn der Wert des Pins von LOW auf HIGH wechselt
  • FALLING = Löst aus wenn sich der Wert des Pins von HIGH auf LOW ändert
  • HIGH = Löst aus wenn sich der Wert von LOW auf HIGH ändert.

Was ist ein Interrupt?

- vorübergehende Unterbrechung eines laufenden Programms, um einen anderen, in der Regel kurzen, aber zeitkritischen, Vorgang abzuarbeiten

- auslösendes Ereignis: Interrupt Request (IRQ, Unterbrechungsanforderung)

- nach Anforderung ausgelöst: Interrupt Service Routine (ISR, Unterbrechungsroutine)

- danach wird das unterbrochene Programm dort fortgeführt, wo es unterbrochen wurde

Wozu dient "volatile"?

- Schlüsselwort vor Datentyp einer Variable, um Art und Weise zu ändern, in der der Compiler und das nachfolgende Programm die Variable behandelt

- Anweisung an Compiler, die Variable aus RAM und nicht aus temporären Speicherregister zu laden

- Variable soll als volatile deklariert werden, wann immer ihr Wert durch etwas geändert werden kann, das über die Kontrolle des Codeabschnitts, in dem sie erscheint, hinausgeht; z. B. ein gleichzeitig ausführender Thread, bei Arduinos bei Interrupts

Was ist ein Analog-Digital-Wandler?

- wandelt analoge EIngangssignale in einen digitalen Datenstrom um, der dann weiterverareitet oder gespeichert werden kann

- zeit-kontinuierliches EIngangssignal wird in der Signalhöhe und der Zeit quantisiert

- Hauptparameter: Auflösung (Zahl der möglichen Werte, die ein digitalisierter Wert annehmen kann, 2^Bits) und Abtastrate (Zahl der Wandlungen pro Sekunde)

- digitale Auflösung: Genauigkeitsgrenze für die Umsetzung, nutzbare Genauigkeit / Auflösung wird durch weitere Fehlerquellen verringert (Nullpunkt-, Verstärkungs-, Linearitäts-, Quantisierungsfehler), liegt üblicherweise zwischen 8 Bit pro Wert (256 mögliche Stufen) und 24 Bit pro Wert (16 Millionen mögliche Stufen)

- Umsetzungsdauer: maximal mögliche Umsetzungsrate, vielfach konstant, kann je nach Realisierungsverfahren aber vom Wert der anliegenden Spannung abhängen, maximale Abtastastrate kommerzieller Analog-Digital-Wandler reicht von einigen Kilohertz bis über 1 GHz

Wie heißen die vier typsichen Fehler bei Analog-Digital-Wandlern?

Nullpunktfehler, Verstärkungsfehler, Linearitätsfehler, Quantisierungsfehler

Was passiert beim Nullpunktfehler?

 

- der digitale und der analoge Wert stehen linear miteinander in Beziehung

- die Gerade, die die Stufen der Übertragungsfunktion verbindet, verläuft jedoch nicht wie bei der idealen Übertragungsfunktion durch den Ursprung des Koordinatensystems

- Übertragungsfunktion nach links oder rechts entlang der EIngangsspannungsache verschoben

- kann kompensiert werden

 

Was passiert beim Verstärkungsfehler?

- ideale Kennlinie weist Steigung von 45° auf (bei gleicher Teilung)

- Verstärkungsfehler bewirkt eine vom Idealfall abweichende Steigung der Übertragungskennlinie

- Größe des Fehlers wird als Differenz zwischen dem realen und dem idealen analogen Eingangswert ermittelt, der jeweils den letzten Wechsel des Ausgangscodes verursacht

- Offsetfehler von Null wird angenommen

- beeinflusst die Werte um denselben prozentualen Betrag, kann abgeglichen werden

Was passiert bei der differenziellen Nichtlinearität?

- Betrag der Abweichung vom Sollwert LSB, Spannungsdifferenz zwischen jedem Stufenübergang sollte 1 LSB entsprechen, bei differenzielle Nichtlinearität jedoch ungleiche Stufenbreiten oder -übergänge in Übertragungsfunktions-Kennlinie
 

Was passiert bei der integralen Nichtlinearität?

- Abweichung der Übertragungsfunktion von einer geraden Linie

- Linie entspricht häufig der Ausgleichsgeraden zwischen den Punkten über die Stufenkanten in der Kennlinie, kann aber auch eine Linie sein, die den höchsten und niedrigsten Datenpunkt oder die Endpunkte miteinander verbindet

- wird über eine Spannungsmessung bestimmt, über die die maximale Abweichung der Eingangsspannung von der idealen Geraden ermittelt wird

Was passiert beim Quantisierungsfehler?

- systembedingter Fehler

- Abweichung der wahren Spannung von der durch den AD-Wandler gemessene Spannung

- äußert sich als Rauschen

Study