Schnittstellen und Zusatzwerke
Rechnerarchitektur, Foliensatz 3
Schnittstellen und Zusatzwerke
G. Kemnitz
Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016
1/77
Inhalt RA-F3: Ein- und Ausgabe
1.1
1.2
1.3
2.1
2.2
2.3
2.4
Prinzip
Ports
Polling
Interrupt
Timer
Normalmodus
CTC-Modus
PWM-Erzeugung
Pulsweitenmessung
2.5 Watchdog
Serielle Schnittstellen
3.1 USART
3.2 SPI-Bus
3.3 JTAG (Testbus)
Speicher
4.1 Externer Speicher
4.2 EEPROM
Analoge Eingaben
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016
2/77
1. Prinzip
Prinzip
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016
3/77
1. Prinzip
Prinzip der Ein- und Ausgabe
Bus
CPU
Steuerwerk
Rechenwerk
Speicher
EA1
EA2
Anschlüsse für externe Geräte
(Tastaturen, Anzeigen, andere Rechner, ...)
Ein Prozessor kommuniziert mit seiner Umgebung
getrennten Werken (Timer, Watchdog, ...),
Benutzer, Sensoren, Aktoren, anderen Rechnern, ...
über EA-Register.
Im einfachsten Fall, z.B. beim Lesen von Schalterwerten und der
Ausgabe auf LEDs legt das Programm die Lese- und
Schreibzeitpunkte fest.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016
4/77
1. Prinzip
Polling und Interrupt
Zur Abstimmung der Ein- und Ausgabezeitpunkte muss das
EA-Gerät warten, bis der Rechner und der Rechner bis das
EA-Gerät bereit ist. Dafür gibt es zwei Prinzipien:
Polling: Zyklische Abfrage aller EA-Geräte durch den
Rechner, ob Datenübergabe angefordert oder zur Übernahme
bereit. Wenn ja, Verzweigung zum Programmbaustein für
den Datenaustausch.
Interrupt: Gerät fordert Datenaustausch an. Rechner ruft,
sobald er dafür bereit ist, eine Interrupt-Routine auf.
Unterbrechungen sind im Programm global und lokal (für jede
Interrupt-Quelle einzeln) freizugeben.
Nach Freigabe kann das externe Gerät das Rechnerprogramm
nach jedem Maschinenbefehl unterbrechen.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016
5/77
1. Prinzip
1. Ports
Ports
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016
6/77
1. Prinzip
1. Ports
Ports (Parallele Schnittstellen)
Ausgaberegister
Richtungsregister
Eingaberegister
Anschluss
Ports (Parallel Schnittstellen) sind EA-Register mit direkt
anschlieÿbaren Leitungen z.B. für Schalterein- LED-Ausgaben.
Datenbreite nach Verarbeitungsbreite des Prozessors 8, 16
oder 32. Überüssige Port-Anschlüsse bleiben ungenutzt.
Die Port-Anschlüsse von Mikrorechnern sind in der Regel
bitweise als Ein- und Ausgänge oder andere Funktionen (z.B.
den seriellern Datenaustausch) kongurierbar.
Über Ports können externe Geräte ohne oder mit
Synchronisation über Polling oder Interrupt kommunizieren.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016
7/77
1. Prinzip
1. Ports
Ports des ATmega 2560
12 Ports mit Richtungsregister DDRx, Ausgaberegister PORTx
und Eingaberegister PINx (x ∈ {A, B, ..., L}). Adressen:
A
PIN
0 / 0x20
DDR 1 / 0x21
PORT 2 / 0x22
B
3 / 0x23
4 / 0x24
5 / 0x25
C
D
E
6 / 0x26 9 / 0x29 0xC / 0x2C
7 / 0x27 0xA / 0x2A 0xD / 0x2D
8 / 0x28 0xB / 0x2B 0xE / 0x2E
DebugAnsicht:
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016
8/77
1. Prinzip
1. Ports
Anschlussbeschaltung im Prozessor
UV
PUD
Pin
Porti.j
DDRi.j
Anschlusslogik weitere EA-Funktionen
Pini.j
Bits in
vom Prozessor
les- und
beschreibbaren EARegister
UV
Schutzdioden gegen
zu große und kleine
Eingangsspannungen
Pullup-Widerstand zu
Erzeugung einer 1 an
ungenutzen Eingängen
Masse (log. 0)
Versorgungsspannung
(log. 1)
Nutzung als Ausgang:
Richtungsbit eins setzen: DDRi.j ← 1:
Ausgabe: PORTi.j ←Rd (Rd Prozessorregister)
Rücklesen des Ausgabewertes: Rd←PORTi.j
Eingabe: Rd←PINi.j . PINi.j 6=PORTi.j ist möglich und
deutet auf Programmier- oder Schaltungsfehler.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016
9/77
1. Prinzip
1. Ports
UV
PUD
Pin
Porti.j
DDRi.j
Anschlusslogik weitere EA-Funktionen
Pini.j
Bits in
vom Prozessor
les- und
beschreibbaren EARegister
UV
Schutzdioden gegen
zu große und kleine
Eingangsspannungen
Pullup-Widerstand zu
Erzeugung einer 1 an
ungenutzen Eingängen
Masse (log. 0)
Versorgungsspannung
(log. 1)
Nutzung als Eingang:
Richtungsbit null setzen: DDRi.j ← 0:
Werte zwischen 0 und 1, z.B. bei ungenutzten Anschlüssen
verursachen erhöhte Stromaufnahme.
Ausgabewert eins (PORTi.j ←1) und SFR-Bit PUD nicht
gesetzt, zieht ungenutzte Eingänge über einen Widerstand
auf eins. Zu empfehlen für alle ungenutzten Eingänge.
Bei externer Signalquelle und vor allem für analoge Eingänge
Pullup-Widerstand mit (PORTi.j ←0) deaktivieren.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 10/77
1. Prinzip
1. Ports
Port-Beschaltung auf der Versuchsbaugruppe
Baugruppe
Prozessor
UV
Porti.j
Pini.j
Pin
externe Beschaltung
Signalempfänger
RS
Signalquelle
DS
Steckverbinder
RS (220 Ω) Schutzwiderstand zur Strombegrenzung bei
falscher externer Beschaltung oder falsch gesetztem DDRi.j .
DS Schutzdiode zur Ableitung neg. Eingangsspannungen.
Für ungenutzte Ports ist die Beibehaltung der Initialwerte
DDRi.j = 0 und Porti.j = 0 wie in den bisherigen Übungen
nicht empfehlenswert.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 11/77
1. Prinzip
1. Ports
Polling und Interrupts für EA-Ports
Ohne Polling oder Interrupt-Freigabe: Das Programm bestimmt
allein, wann Daten ein- oder ausgegeben werden.
Zur Synchronisation bedient das externe Gerät ein Ereignisbit:
Polling: Prozessor fragt das Ereignisbit zyklisch ab und
verzeigt, wenn aktiv1 zur EA-Operation.
Interrupt: Eingänge, z.B. Port B als Ereignis- (Interrupt-)
Bits nutzbar2 . Wenn im Programm Interrupts global und für
das genutzte Ereignisbit freigeschaltet sind, startet der
Prozessor die Interrupt-Routine auf der Adresse, die dem
Ereignisbit zugeordnet ist.
1
Aktiv steht für den Wert, bei dem das Gerät bereit ist. Kann bei
Polling auch ein beliebiger Wert von mehreren Bits sein.
2
Mit Interrupt-Controller verbunden. Interrupt-auslösender (aktiver)
Bitwert/Flanke programmierbar.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 12/77
1. Prinzip
2. Polling
Polling
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 13/77
1. Prinzip
2. Polling
Bedienung von EA-Anforderungen mit Polling
Jede EA-Funktion hat
i.allg. ein Ereignisbit zur Signalisierung der Bereitschaft,
eine Obergrenze für die Reaktionszeit vom Setzen des
Ereignisbits bis zum Datenaustausch,
in der der Prozessor hundete bis tausende Befehle abarbeiten
kann. Programme nutzen meist die Dienste mehrere
EA-Einheiten.
Software-Ablauf mit einem Haupt-Task, mehreren
EA-Funktionen und Polling:
IO-Task 1
IO-Task
2
...
Haupt-Task
...
t
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
nicht bereit
inaktiv, bereit
aktiv
Warteschleife
mit Polling
21. Januar 2016 14/77
1. Prinzip
2. Polling
IO-Task 1
IO-Task
2
...
Haupt-Task
...
t
nicht bereit
inaktiv, bereit
aktiv
Warteschleife
mit Polling
Der Haupt-Task arbeitet einige tausend Befehle ab und
kehrt zur Haupt- (Ereignisabfrage-) Schleife zurück, z.B.
wenn auf EA-Operationen gewartet werden muss.
Die Hauptschleife fragt zyklisch alle Ereignis- (Bereitschafts-)
Bits der aktivierten IO-Tasks und des Haupttasks ab.
Wenn einer bereit, Verzweigung zur Operationsausführung.
Am Ende der Operationsausführung löscht der Task das
eigene und setzt die Ereignisbit der Tasks, die auf diesen
gewartet haben + Rückkehr zur Hauptschleife.
Polling funktioniert gut für EA-Operationen mit groÿen
zulässigen Reaktionszeiten.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 15/77
1. Prinzip
2. Polling
Programmstruktur
int main(){
<Initialisierung, Variablen, ...>
while (1){
// Endlosschleife
if (<Haupt-Task bereit>)
{<Haupt-Task weiter abarbeiten>}
if (<IO-Task 1 bereit>)
{<IO-Task 1 abarbeiten>}
if (<IO-Task 2 bereit>)
{<IO-Task 2 abarbeiten>}
...
}
}
Der Haupt-Task muss sich nach hinreichend kurzer Zeit für
mindesten einen IO-Abfragezyklus unterbrechen.
IO-Tasks max. wenige hundert abzuarbeitende Befehle.
Keine Warteschleifen auÿer der Endlosschleife.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 16/77
1. Prinzip
3. Interrupt
Interrupt
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 17/77
1. Prinzip
3. Interrupt
Interrupts
Haupt-Task
Interrupt-Service-Routinen:
ISR1
ISR2
Haupt-Task
nützliche Arbeit
Warteschleife
Unterbrechung
EA-Operation
Haupt-Task:
Ohne zyklische Abfrage von Ereignisbits.
Lokale (individuelle) und globale Interrupt-Freigabe.
Interrupt-Behandlung:
Unterprogrammaufruf der ISR (feste Hardware-Adresse).
Interrupt-Freigabe global aus. Inhalte genutzter Register
incl. Statusregister, Frame-Pointer, ... retten.
EA-Operation ausführen
gerettete Registerinhalte wiederherstellen und Rücksprung.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 18/77
1. Prinzip
3. Interrupt
Interrupt-Freigabe, Ereignisbits, ... ATmega 2560
Globale Interrupt-Freigabe: Bit I (SREG.7, EA-Adresse 0xFE):
Bitnummer:
Bitname:
7
I
6 5
T H
4
S
3 2
V N
1
Z
0
C
C-Anweisungen für des Setzen und löschen von I:
sei();
cli();
// Interrupts global ein
// Interrupts global aus
Adresse und Kongurationsbits externer Interrupts an Port B:
Interrupt
INT0 (PB0)
INT1 (PB1)
INT7 (PB7)
∗1
∗2
Adresse∗1
0x0002
0x0004
...
0x0010
Ereignisbit
EIFR.0
EIFR.1
...
EIFR.7
Freigabebit
EIMSK.0
EIMSK.1
...
EIMSK.7
weiter Einstellung∗2
EICRA[1:0]
EICRA[3:2]
...
EICRB[7:6]
Startadresse der Interrupt-Service-Routine (ISR)
Interrupt bei null, steigender und/oder fallender Flanke.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 19/77
1. Prinzip
3. Interrupt
Interrupt-Quellen des ATmega 2560
Ingesamt 57 (ATmega2560.pdf3 , Abschn. 14.1 Interrupts):
8×für Port B Anschlüsse. Bei Port B als Eingang auch als
Software-Interrupts nutzbar.
3 ×Port-Change-Interrupts für programmierbare
Bitänderungen auch an anderen Ports.
1×Watchdog (Timeout).
26× für Timer-Funktionen.
4× 3 für die 4 universellen seriellen Schnittstellen (USARTs).
1× SPI (serielle Übertragung abgeschlossen).
1×Analogkomparator.
1×ADC (Digital-Analog-Wandlung abgeschlossen).
1×TWI (2-wire Serial Interface).
1×EEPROM (Schreiboperation abgeschlossen), ...
3
http://techwww.in.tu-clausthal.de/site/Lehre/Rechnerarchitektur...
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 20/77
1. Prinzip
3. Interrupt
Vor- und Nachteile von Interrupts
Vorteile:
Schnellere Reaktion auf externe Ereignisse.
Der Haupt-Task muss nicht aller paar tausend Befehle zur
Hauptschleife zurückkehren, darf Warteschleifen enthalten.
Nachteile:
Haupt-Task wird an zufälligen Programmstellen
unterbrochen,
dadurch kein deterministischer Ablauf.
Viele zusätzliche Fehlermöglichkeiten.
Erschwerter Test, erschwerte Fehlersuche.
Einige Regeln für Interrupt-Routinen:
kurze, vorhersagbare Abarbeitungszeit, keine Warteschleifen.
keine Änderung von Daten und Registerinhalten, die das
unterbrochene Programm möglicherweise gerade bearbeitet.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 21/77
1. Prinzip
3. Interrupt
Interrupt-Sperren
Ein unterbrechbares Programm muss die ISR immer sperren,
während es Übergabedaten bearbeitet:
...
uint8_t tmp=<Interrupt-Freigaberegister>;
<Interrupt-Freigabebit löschen>
<Bearbeitung der Übergabedaten>
<Interrupt-Freigaberegister> = tmp;
Beispiel einer ISR:
#include <interrupts.h> // Header für Int.-Nutzung
#include <avr/io.h>
ISR(INT0_vect){
// Int. bei Tastendruck an PB0
PORTA^=1;
// PA.0 (LED 1) invertieren
}
INT0_vect Startadresse der Interrupt-Service-Routine (ISR).
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 22/77
1. Prinzip
3. Interrupt
Beispiel für ein Hauptprogramm hierzu:
int main(){
DDRB = 1;
// PB0 Eingang
DDRA = 0;
// alle Bits Port A Ausgänge
EIMSK =1<<INT0;// Interrupt-Freigabe PB0
EICRA = 0b11; // Interrupt bei 01-Flanke
sei();
// globale Interrupt-Freigabe
while (1)
// Endlosschleife
uint8_t tmp = EIMSK; // Int.-Freigabe speichern
EIMSK &= ~1; // INT0 an PB.0 sperren
PORTA^=2;
// PA.0 (LED 2) invertieren
EIMSK=tmp;
// Int-Freigabe wiederherstellen
}
}
Wenn INT0 nicht während PORTA^=2 gesperrt wird, wird die
Hälfte der Anweisungen PORTA^=1 in der ISR bei
Tastendruck nicht wirksam. Warum?
⇒ Bearbeitung derselben Daten (PORTA)
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 23/77
1. Prinzip
3. Interrupt
Ohne die drei Anweisungen zur Interrupt-Sperre wird der
Schleifenkörper in die Schrittfolge übersetzt:
Port A lesen,
Wert bearbeiten,
Wert schreiben und
Sprung zum Schleifenbeginn:
Kopiere Port A in ein Register
Invertiere im Register Bit 2
Kopiere Register nach Port A
Sprung zum Schleifenanfang
Interruptroutine:
...
PORTA ∧ = 1;
...
PORTA ∧ = 1
wird überschrieben
bleibt erhalten
An 50% der Unterbrechungsmöglichkeiten wird die Invertierung
von PA.0 in der ISR vom Rückschreibwert für die Invertierung
von PA.1 überschrieben, d.h. Reaktion nur auf 50% Tastendrucke.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 24/77
2. Timer
Timer
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 25/77
2. Timer
Timer
Ein Timer ist eine Hardware-Einheit aus Zähl-, Vergleichs-,
Kongurationsregistern, ... zur
Erzeugung von Wartezeiten,
zeitgesteuerten Ereignisabarbeitung,
Erzeugung pulsweitenmodulierter (PWM-) Signale und
Pulsweitenmessung.
PWM-Signale dienen
zur Informationsübertragung z.B. an Modellbauservos und
zur stufenlosen Leistungssteuerung, z.B. von Elektromotoren.
UV1
Prozessor
PWM-Ausgang
M
x
UV2
UMotor
x
UMotor
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
1
0
UV2
0
tein
TP
t
21. Januar 2016 26/77
2. Timer
Aufbau und Funktionsweise eines Timers
Ereignisbits
Konfigurationsbits
Prozessorausgang
Prozessoreingang
* programmgesteuertes Löschen
Auswahl
Zähltakt
Vergleichsregisterkein Takt
8 MHz
1 MHz
1/8 MHz .
..
000
001
010
011
...
==
gleich
Zählregister
3
CS
Überlauf
Übernahme
Übernahmeregister
*
R
S
R
S
S
R
S
R
S
R
*
Kern eines Timers ist ein Zählregister mit einem vom
Programm zuschaltbaren programmierbaren Takt.
Die Ereignisbits (Überlauf, Gleichheit, externe Flanke) sind
vom Programm les- und löschbar.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 27/77
2. Timer
Timer des ATMega 2560
Zwei 8-Bit Timer (Tmr0 und Tmr2).
Vier 16-Bit-Timer (Tmr1, Tmr3, Tmr4 und Tmr5).
Die Bit-Anzahl beschreibt die Gröÿe der Zähl- und
Vergleichsregister.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 28/77
2. Timer
1. Normalmodus
Normalmodus
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 29/77
2. Timer
1. Normalmodus
Normalmodus
kein Takt
8 MHz
1 MHz
1/8 MHz .
..
000
001
010
011
...
CS
Vergleichsregistergleich
==
Zählregister
Überlauf
*
S
R
S
R
Zählregister zählt zyklisch bis zum Überlauf.
Beim Überlauf wir eine Überlaufbit und bei Gleichheit mit
einem Vergleichsregister ein Vergleichsbit gesetzt.
Beispiel Wartefunktion:
void wait(int32_t tw){
<berechne und setze Taktauswahl und Vergleichswert>
<Lösche Zähler und Vergleichsereignisbit>
<warte bis Ereignisbit wieder gesetzt ist>
<schalte Zähltakt aus> }
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 30/77
2. Timer
2. CTC-Modus
CTC-Modus
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 31/77
2. Timer
2. CTC-Modus
CTC- (Clear on Compare) Modus
kein Takt
8 MHz
1 MHz
1/8 MHz .
..
000
001
010
011
...
CS
Vergleichsregistergleich
S
R
==
Zählregister
Zähler wird bei Gleichheit
mit einem der Vergleichsregister rückgesetzt.
Auslösung zyklischer Ereignisse, z.B. Uhrenprozess:
Überlauf
S
R
*
Vergl. Endwert
Vergl.-Wert A
Ereignis A
Ereignis E
void Schrittfunktion Uhr(){
if (<Vergleichs-Rücksetz-Ereignis>)
<lösche Ereignisbit(s) und schalte Uhr weiter>
}
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 32/77
2. Timer
3. PWM-Erzeugung
PWM-Erzeugung
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 33/77
2. Timer
3. PWM-Erzeugung
PWM-Erzeugung
Auswahl
Zähltakt
kein Takt
8 MHz
1 MHz
1/8 MHz .
..
R
S
R
S
Vergleichsregister-
000
001
010
011
...
Vergleichsereignis setzt
Zählerrücksetzereignis
und löscht Ausgabe.
Pulsgenerierung z.B. zur
Motoransteuerung ohne
Schrittfunktion.
==
gleich
Zählregister
Überlauf
*
S
R
S
R
Vergl. Endwert
Vergleich A
Vergleich B
PWM A
PWM B
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 34/77
2. Timer
3. PWM-Erzeugung
Symmetrische PWM4
Vergl. Endwert
Vergleich A
Vergleich B
PWM A
PWM B
Endvergleichswert schaltet die Zählrichtung um.
Bei Gleichheit und Hochzählen wird die Ausgabe ein- und
bei Gleichheit und Abwärtszählen ausgeschaltet.
Bei dieser und der vorherigen PWM kann auch eine
invertiert Ausgabe programmiert werden, so dass der
Vergleichswert statt der Ausschalt-, die Einschaltzeit festlegt.
Im Datenblatt unseres Prozessors ist das die phasenrichtige und die
vorhergehende normale PWM die schnelle (Fast-) PWM.
4
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 35/77
2. Timer
3. PWM-Erzeugung
Mikrorechner
Typische Motoransteuerung
H-Brücke
Richtung
PWM
U
H-Brücke
Richtung
PWM
V
H-Brücke
Richtung
PWM
W
ηU
Rotor
ηV
ηW
Zeit
Die Erzeugung von 3 sinusförmigen Mittelwertverläufen
erfordert eine PWM-Einheit mit drei Vergleichsregistern.
Ansteuerung über H-Brücken.
Stufenlose Positions-, Geschwindigkeits- und Drehmomentsteuerung für Typen von Elektromotoren.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 36/77
2. Timer
4. Pulsweitenmessung
Pulsweitenmessung
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 37/77
2. Timer
4. Pulsweitenmessung
Pulsweitenmessung
kein Takt
8 MHz
1 MHz
1/8 MHz .
..
000
001
010
011
...
Zählregister
Übernahmeregister
Überlauf
Übernahme
*
S
R
S
R
*
Externes Ereignis (Schaltanke) bewirkt Übernahme des
Zählwerts in das Übernahmeregister.
Programmgesteuerte Dierenzbildung der Übernahmewerte
zwischen den Übernahmeereignissen.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 38/77
2. Timer
5. Watchdog
Watchdog
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 39/77
2. Timer
5. Watchdog
Watchdog-Timer (WDT)
Jedes gröÿere Programm enthält statisch gesehen Fehler, die
unter anderem auch dazu führen, dass das Programm abstürzt.
Der WDT begrenzt die Dauer der Nichtverfügbarkeit durch
Abstürze auf wenige ms bis s.
Funktionsprinzip:
Zeitzähler, der Zeitimpulse zählt und bei Überlauf das
System neuinitialisiert (und/oder Interrupt auslöst).
Um Überläufe (Neuinitialisierungen) zu verhindern, muss
das System in einer vorprogrammierten Mindestzeit
Rücksetzbefehle für den Watchdog ausführen.
Programmierbar sind:
An-/Aus-Zeit bis zum Überlauf und
Reaktion bei Überlauf (Interrupt und/oder Neustart).
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 40/77
2. Timer
5. Watchdog
Watchdog-Timer (WDT) des ATmega 2560
128 kHz
Vorteiler
Oszillator fOsc WDT[3:0]
fWCt
fOsc · 2−1
0000
fOsc · 2−2
0001
Watchdog···
···
fOsc · 2−10
Rücksetz1001
Befehl
WDIE WD-Interrupt-Freigabe
WDE WD-Rücksetz-Freigabebit
10 bit-Zähler
WDE
WDIF
Überlauf
&
WDRF
&
WDIF
WDIF WD-Interrupt-Ereignisbit
WDRF WD-Rücksetz-Ereignisbit
Zeit bis zum Überlauf: programmierbar von 16 ms bis 8 s.
Nur-Interrupt: Wiederbelebung per Software.
Interrupt + Rücksetzen: Datenretten + Neustart.
WDT-Reset mit Fuse-Bit WDTON auch dauerhaft
aktivierbar. Dann keine Deaktivierung durch Software
(-Fehler) möglich.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 41/77
3. Serielle Schnittstellen
Serielle Schnittstellen
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 42/77
3. Serielle Schnittstellen
Serieller Datenaustausch
Der Datenaustausch zwischen Rechnern erfolgt in der Regel
seriell5 . Grundbaustein Schieberegister mit den Funktionen
parallele Übernahme der zu übertragenden Daten,
serielle Übertragung und
parallele Übergabe.
Schaltung einer Schieberegisterzelle:
si
di
A
si+1 Steueraufgabe c
qi
0
Schieben
Übernahme 1
Übergabe
keine
Umschalter (Multiplexer)
zwischen si und di
Schieberegisterzelle
B
Ausgaberegisterzelle
A
B
c
T
u
Steuerung
Auswahl
der Steueraufgabe
5
T u Operation
0 si+1 ← si
0 si+1 ← di
0
qi ← si+1
0 0
interne Takt- und
Steuersignale:
u Update
c Capture
T Takt
Seriell, d.h. hintereinander über eine, statt parallel über viele Leitungen.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 43/77
3. Serielle Schnittstellen
Bidirektionale Kopplung zweier Rechner
Rechner B
D (0x5B)
Rechner A
D (0x1A)
AB
Q
Op.
D
Rechner A
Schieberegister
7 6 5 4 3 2 1 0
c 0x1A
0 0 0 1 1
s
1 0 0 0 1
s
1 1 0 0 0
s
...
...
1 0 1 1 0
s
0 1 0 1 1
u
Q
BA
Q
AB
D
Rechner B
Schieberegister
7 6 5 4 3 2 1 0
Q
BA
0x5B
0 1 0
1 0 1
1 1 0
0
1
0
...
0
1
1 1 0
0 1 1
0 1 0 1 1
0 0 1 0 1
1 0 0 1 0
...
0 0 1 1 0
0 0 0 1 1
0x5B
c Übernahme (Capture)
s Schieben (Shift)
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
0 1 1
1 0 1
1 1 0
1
1
0
...
0
0
1 0 0
0 1 0
0x1A
u Übergabe (Update)
21. Januar 2016 44/77
3. Serielle Schnittstellen
1. USART
USART
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 45/77
3. Serielle Schnittstellen
1. USART
UART (Universal Asynchronous Receiver Transmitter)
Übertragung ohne Takt und Steuersignale.
Daten- 1
b0 b1 b2 b3 b4 b5 b6 b7 P
leitung 0
Start-Flanke am Übertragungsbeginn
b∈ {0, 1} Datenbits
P∈{0, 1} Paritätsbit
Stoppbit (Wert 1)
t
Übertragungspause
Bitzeit, z.B. tBit ≈ 0,1 ms
Übertragungsdauer: 12 · tBit
Der Empfänger erkennt den Übertragungsbeginn an der Stopp-/
Start-Flanke und übernimmt die Werte nach 1,5, 2,5 etc.
Bitzeiten. Voraussetzung: Gleich eingestellte Bitzeit, Bitanzahl,
Stoppbitanzahl und Parität bei Sender und Empfänger. Die
Baudrate b als Kehrwert der Bitzeit tBit wird mit einem Teiler
aus dem Prozessortakt gebildet.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 46/77
3. Serielle Schnittstellen
1. USART
Baudrate b als Funktion der Prozessortaktfrequenz fProz und dem
programmierbaren Teilerfaktor T :
b=
fProz
16 · (T + 1)
Teilerfaktor für fProz = 8 MHz und b = 9600 Baud:
T =
8 MHz
− 1 = 51 = 0x33
16 · 9600 Hz
Initialisierung: 9600 Baud, 8 Daten-, 1 Stoppbit, keine Parität:
asynchron
kein Paritätsbit
1 Stoppbit
8 Datenbit
Baudrate 9600
Teilerwert für 9600 baud
Sender und Empfänger einschalten
Datenformat 8n1
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 47/77
3. Serielle Schnittstellen
1. USART
Sende- und Empfang
Daten erhalten
Daten versendet
Sendepuffer frei
Frame Error
Data Overun
Paritätsfehler
Empfangs- und
Senderegister
Funktionen für den Empfang und das Versenden eines Bytes
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 48/77
3. Serielle Schnittstellen
2. SPI-Bus
SPI-Bus
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 49/77
3. Serielle Schnittstellen
2. SPI-Bus
SPI-Bus
Serieller Bus zur Vernetzung von Schaltkreisen.
Master
MISO
MOSI
SCK
MasterSteuerung /SS
Slave
SlaveSteuerung
Leitungen zwischen den Schaltkreisen
MOSI Master Out Slave In
MISO Master In Slave Out
SCK Schiebetakt
/SS Slave-Auswahl
Aktion
/SS SCK
Übernahme
Schieben
0
Ausgabe
keine
sonst
Ein Schaltkreis ist der Master, der den Takt SCK und die
Slave-Auswahlsignale erzeugt, die anderen sind Slaves, die
diese Signale vom Master erhalten.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 50/77
3. Serielle Schnittstellen
Master
2. SPI-Bus
Slave
MISO
MOSI
SCK
MasterSteuerung /SS
SlaveSteuerung
1
MISO 0
0xD2
MOSI 1
0
0x81
0x01
ohne Bedeutung
SCK 1
0
/SS 1
0
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
zwei weitere Bytes
Beispiel für die Übertragung 0x81 vom Master zum Slave und
von 0xD201...00 vom Slave zum Master:
0x00
21. Januar 2016 51/77
3. Serielle Schnittstellen
2. SPI-Bus
Eine Übertragung beginnt mit Aktivierung von /SS=0
(Übernahme), gefolgt von n Schiebetakten und endet mit
Deaktivierung /SS=1.
Das /SS-Signal des Masters wird über einen Ausgang einer
parallelen Schnittstelle gesteuert.
An einen Master können parallel mehrere Slaves mit
unterschiedlichen /SS-Signalen angesteuert werden.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
MOSI
SCK
/SS
MISO
Slave 2
MOSI
SCK
/SS
MISO
MISO
Slave 1
/SS1
/SS2
SCK
MOSI
Master
21. Januar 2016 52/77
3. Serielle Schnittstellen
2. SPI-Bus
Konguration des SPI-Controllers
SPI aktivieren
Bit 7 zuerst senden
als Master
Steuersignale
wie Folie zuvor
Bittakt = CPU-Takt
durch 128
Ereignisbit
Fehlerbit für Sendedatenüberschreiben
Verdopplung der Bitrate
SPI-Datenregister
Einschalten als Master oder Slave.
Festlegen der Bitrate und Protokollparameter.
Pins für /SS Signale kongurieren, beim Master als
Ausgänge mit Wert eins, beim Slave als Eingänge.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 53/77
3. Serielle Schnittstellen
2. SPI-Bus
Algorithmus für den Datenaustausch
Für jede n-Byte-Übertragung
Aktiviere das Slave-Auswahlsignal /SS (Master) bzw. warte
auf /SS=0 (Slave).
Für jedes Byte
Schreibe Sendewert in das Datenregister.
Warte bis Ereignisbit SPIF eins ist.
Lese empfangenes Byte aus und schreibe nächstes zu
sendende Byte in das SPI-Datenregister SPDR.
Deaktiviere das Slave-Auswahlsignal.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 54/77
3. Serielle Schnittstellen
3. JTAG (Testbus)
JTAG (Testbus)
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 55/77
3. Serielle Schnittstellen
3. JTAG (Testbus)
JTAG
Test-, Diagnose-, Debug- und Programmierbus.
Baugruppe
IC1
IC2
IC3
Tester
Testdateneingang (TDI)
Testtakt (TCK)
Teststeuersignal (TMS)
Testdatenausgang (TDO)
Verschaltung aller Schaltkreise zu einer Kette.
In der Ursprungsidee (Boundary-Scan) waren die
Schieberegister mit den Funktionen Übernahme, Schieben
und Übergabe am Schaltkreisrand angeordnet, um die
Verbindungen zwischen den Schaltkreisen ohne mechanische
Kontaktierung testen zu können.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 56/77
3. Serielle Schnittstellen
Teststeuersignal
(TMS)
Testtakt (TCK)
Mux
Multiplexer
serieller Testbuseingang (TDI)
Datenregister
Boundary-Scan-Register
Bypass-Register
Identifikationsregister
Unterbrech.-Punkt-Reg.
Programmierinterface
3. JTAG (Testbus)
serieller Testbusausgang (TDO)
Befehlsregister
TAP-Controller
Ein Schaltkreis mit JTAG-Bus hat mehrere über ein Befehlswort
auswählbare Datenregister:
Bypass-Register zur Verkürzung der Länge des
Schieberegisters durch den Schaltkreis auf 1 Bit.
Identikationsregister mit Hersteller- und Bauteilnummer.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 57/77
3. Serielle Schnittstellen
Teststeuersignal
(TMS)
Testtakt (TCK)
Mux
Multiplexer
serieller Testbuseingang (TDI)
Datenregister
Boundary-Scan-Register
Bypass-Register
Identifikationsregister
Unterbrech.-Punkt-Reg.
Programmierinterface
3. JTAG (Testbus)
serieller Testbusausgang (TDO)
Befehlsregister
TAP-Controller
Programmier-Interface: Schnittstelle zum Lesen und
Schreiben des Befehls-Flashes, des Daten-EEPROMs und
der Fuse-Register.
Schnittstellenregister zum OCD (On-Chip Debugger), ...
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 58/77
3. Serielle Schnittstellen
TAP-Controller
3. JTAG (Testbus)
0
1
Testfunkt. 1
0 lt. Befehl
Die Auswahl der
6 Busaktionen:
Übernahme, Schieben,
Übergabe für des
Befehls- und das
ausgewählte Datenregister erfolgt über
ein 1-Bit-Steuersignal
und einen Automaten
mit 8 Zuständen. An
den Kanten steht der
Wert des Signals TMS
(Test Mode Select).
normale Funktion
(Testlogik rücksetzen)
1
0
Übernahme
0
1
Schieben
1
1
0
P 0
1
0
1
Übergabe
1
0
Datenübertragung
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
1
0
0
Übernahme
0
1
Schieben
1
1
0
P 0
1
0
1
Übergabe
1
0
0
Befehlsübertragung
21. Januar 2016 59/77
3. Serielle Schnittstellen
3. JTAG (Testbus)
Von der JTAG-Implementierung in unserem Prozessor sind nur
die standardisierten Testfunktionen, die für den Bestückungstest
von Baugruppen vorgesehen sind, öentlich zugänglich
dokumentiert. Die Befehle für die Programmierung und den OCD
(On-Chip Debugger) sind in den Dokumentationen nicht
beschrieben.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 60/77
4. Speicher
Speicher
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 61/77
4. Speicher
Externer Speicher und EEPROM (ATmega 2560)
Externer Datenspeicher:
Max. 64 kByte groÿer an den Prozessor angeschlosser RAM.
Erweitert Adressbereich für interne Variablen von 2 kByte.
Verlängerte Zugriszeit.
Nutzt 2,5 Ports.
Daten-EEPROM:
Gröÿe: 2 kByte
Für Daten, die nach Abschalten der Versorgungsspannung
erhalten bleiben sollen.
Vom Programm byteweise les- und beschreibbar. Über
Programmierschnittstellen seitenweise (8 Byte)
programmierbar.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 62/77
4. Speicher
Programm-Flash (ATmega 2560)
Gröÿe: 128 k × 2 Byte.
Programmierung: JTAG, parallel, seriell oder mit
Bootloader. Seitenweise. Seitengröÿe 128 × 2 Byte.
Bootloader: Programm in einem reservierten oberen
Adressbereich, der bei entsprechender Fuse-Einstellung nach
Reset angesprungen wird. Von diesem Speicherbereich sind
Flash-Seiten des unternen Speicherbereichs programmierbar.
Lesezugri aus dem Programm: LPM- oder ELPM-Befehl
(Foliensatz 2, Abschn. 2.3 Konstanteninitialisierung).
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 63/77
4. Speicher
1. Externer Speicher
Externer Speicher
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 64/77
4. Speicher
Externer Speicher
Zur Erweiterung des Datenspeichers
kann ein max. 64 kByte groÿer
externe Speicher an den Prozessor
angeschlossen werden.
Anschluss an die Ports A, C und G.
Damit Lade- und Speicherbefehle
auf den externen Speicher zugreifen,
sind in SFR-Register XMCRA das Bit
SRE (Bit 7) und gegebenenfalls
weitere Bits in XMCRA und XMCRB
zu setzen.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
1. Externer Speicher
0 r0
1
... ...
EA 1F r31
0 20 PINA
2
1 21 DDRA
2 22 PORTA
... ... ...
3D 5D Stack3E 5E pointer
3F 5F Statusregister
60 416 weitere
. . . Plätze für
1FF EA-Register
200 8 kByte
3
. . . interner
Speicher
21FF
2200 externer
4
. . . Speicher
FFFF
21. Januar 2016 65/77
4. Speicher
AVR-Prozessor
AD 7:0 (PA)
1. Externer Speicher
Adresslatch
(8 Bit)
D
ALE (PG2)
A 15:8 (PC)
RD (PG5)
W R (PG0)
Q
SRAM (64 kByte)
D[7:0]
A[7:0]
G
A[15:8]
RD
WR
Port A liefert das niederwertige Adressbyte und übernimmt
einen Schritt später die Lesedaten bzw. gibt die
Schreibdaten aus.
Port C liefert das höherwertige Adressbyte. Ein Teil von
Port G liefert die Steuersignale.
Wenn der externe, auf der Versuchsbaugruppe vorhandene
Speicher nicht genutzt wird (SRE=0), sind auf Port G5 und
Port G0 jeweils eine 1 auszugeben6
6
Durch falsche Ansteuerung sind bereits auf mehreren
Versuchsbaugruppen im Übungsraum die Speicher-Chips kaputt gegangen.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 66/77
4. Speicher
2. EEPROM
EEPROM
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 67/77
4. Speicher
2. EEPROM
EEPROM
Der Datenspeicher verliert ohne Spannung seine Information.
Die Werte für Konstanten stehen im Befehlsspeicher und
werden vom Startup-Code in den RAM kopiert.
Wo werden während des Betriebs anfallende Daten
gespeichert, die nach Abschalten nicht verloren gehen
dürfen? ⇒ EEPROM (Electrically Erasable and
Programmable Read-Only Memory).
Programmierung über Tunnelströme. Schreibzeit ca. 30.000
Prozessortakte.
D
Aufladen
G
D
Entladen
≈ 12 V
S
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
G
≈ −12 V
S
Tunnelstrom
Isolator (SiO2 )
Polysilizium
n+ -Gebiete
p-Substrat
21. Januar 2016 68/77
4. Speicher
2. EEPROM
EEPROM-Ansteuerung
EEPROMAdressregister
Bit 7
Bit 6
Bit 5
Bit 4
Bit 11 Bit 10
Bit 3 Bit 2
Bit 9
Bit 1
Bit 8
Bit 0
EEARH (0x42)
EEARL (0x41)
Datenregister
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3 Bit 2
Bit 1
Bit 0
EEDR (0x40)
EEPM1EEPM0 EERIEEEMPE EEPE EERE EECR (0x40)
Kontrollregister
0
0
löschen+schreiben
Bits zur Aktivierung und
0
1
nur löschen
Steueung der Programmierung
1
nur schreiben
0
Ablauf zum Schreiben eines Bytes in den EEPROM:
1 Warte bis EEPE null ist7 .
2 Schreibe die Adresse in EEAR und die Daten in EEDR.
3 Schreibe EEMPE← 1 und EEPE← 0.
4 Innerhalb der nächsten 4 Zyklen schreibe auch EEPE← 1.
7
Warte, bis die vorherige EEPROM-Schreiboperation abgeschlossen ist.
Für Schreiboperation ca. 3.3 ms nach letztem Setzen des Bits EEPE. Bei
möglichen Flash-Op. zusätzliche warten, bis SPMEN in SPMCSR null ist.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 69/77
4. Speicher
2. EEPROM
Schreiboperation als C-Funktion:
void EEPROM_write(uint16_t uiAddress, uint8_t ucData)
// Warte auf Abschluss letzte Schreiboperation
while(EECR & (1<<EEPE));
EEAR = uiAddress; // Adressübergabe
EEDR = ucData;
// Datenübergabe
EECR |= (1<<EEMPE);
EECR |= (1<<EEPE); // Start der Schreiboperation
}
Die Leseoperation muss auf den Abschluss der Schreiboperation
warten und ist einen Takt nach Start der Leseoperation fertig:
uint8_t EEPROM_read(uint16_t uiAddress) {
// Warte auf Abschluss letzte Schreiboperation
while(EECR & (1<<EEPE));
EEAR = uiAddress; // Adressübergabe
EECR |= (1<<EERE); // Start der Leseoperation
return EEDR;
// Ergebnisrückgabe
}
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 70/77
5. Analoge Eingaben
Analoge Eingaben
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 71/77
5. Analoge Eingaben
Messung und Überwachung von Analogeingabe
Analog-Digital-Wandler:
Umwandlung einer analogen Eingangsspannung oder
Eingangsspannungsdierenz in einen Bitvektor (beim
ATmega 2560 10 Bit).
Wandlung verlangt 13 bis 25 Zeitschritte der Dauer ≥ 10 µs.
Über einen programmierbaren Eingabemultiplexer kann
zwischen mehreren Signalquellen ausgewählt werden.
Analog-Komparator:
Vergleich zweier analoger Eingangsspannungen.
Das 1-Bit-Vergleichergebnis kann programmgesteuert
ausgewertet, Interrupts auslösen oder Zeitmessungen mit
Timern steuern.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 72/77
5. Analoge Eingaben
Prinzip eines seriellen Analog-Digital-Wandlers
v
UMess
UVgl
Digital/AnalogUmsetzer
v=
digitale
Steuerung
xn−1 ...x0
digitale
Signale
0 wenn UMess < UVgl
1 sonst
Die Vergleichsspannung, die der DAU (Digital-AnalogWandler) ausgibt:
UVgl = Uref ·
x
2n
(Uref Referenzspannung; x Ausgabewert (Bitvektor); n Bitanzahl des Ausgabewerts).
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 73/77
5. Analoge Eingaben
Sukzessive Approximation
für i = n − 1 bis 0
xi = 1
UMess ≥ UVgl
ja
nein
xi = 0
UVgl
U
UMess
1
2
3
4
··· i
Ein Vergleich je Bit. Schnellster serielle Wandlung.
Der Messwert darf sich während der Wandlung nicht ändern.
Erweiterung um eine Sample-and-Hold-Schaltung:
v
UMess
S&H
UVgl
Digital/AnalogUmsetzer
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
digitale
Steuerung
xn−1 ...x0
digitale
Signale
21. Januar 2016 74/77
5. Analoge Eingaben
Analog-Digital-Wandler des ATmega 2560
10 Bit-Wandler.
Eine normale Wandlung benötigt 13 und die erste mit
Initialisierung der Analogschaltung 25 10µs-Schritte.
Mögliche Messeingänge sind die Anschlüsse ADCi (PF, PK)
Programmierbar sind einmalige und kontinuierliche
Messungen. Max. ≈ 104 Messungen pro s.
Bei mehreren Messeingängen erfolgen die Messungen
nacheinander.
Zur Minderung der Messfehler kann der Prozessor während
der Wandlung in den Sleep-Modus versetzt werden
(Abschalten des Prozessortakts).
...
Die Konguration erfolgt über die SFR-Register ADMUX,
ADCSRA, ADCSRB, ...
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 75/77
5. Analoge Eingaben
Beispiel zur ADC-Ansteuerung
ADC-Initialisierung:
Der Sensor ist an ADC3 (PF3) (Kanal 3 auswählen).
Der Wandlertakt als CPU-Takt durch Teilerwert
fADC =
fCPU
≈ 117 kHz
64
Um den Analogwert nicht zur verfälschen, ist PF3 als
Eingang mit Ausgabewert 0 (Pullup aus) zu kongurieren.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 76/77
5. Analoge Eingaben
Funktion zur Rückgabe eines Analogwerts
Wandlungsstart durch Setzen von ADSC in ADCSRA.
Bei Wandlungsabschluss setzt der Prozessor ADIF=1.
ADIF wird durch Schreiben einer Eins gelöscht.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F3)
21. Januar 2016 77/77
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement