erstellt 30.09.2011
|
Registerbeschreibungen
|
|
| Status Register |
SREG
|
Bit
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
|
|
I
|
T
|
H
|
S
|
V
|
N
|
Z
|
C
|
|
Read/Write
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
|
|
1
|
|
|
|
|
|
|
|
Globalen Interrupt Freigeben (SREG.7=1)
|
|
|
Timer/Counter Interrupt Mask Register
|
TIMSK
|
Bit
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
|
|
OCIE2
|
TOIE2
|
TICIE1
|
OCIE1A
|
OCIE1B
|
TOIE1
|
-------
|
TOIE0
|
|
Read/Write
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
R
|
R/W
|
|
|
|
|
1
|
|
|
|
|
|
Timer Counter1 , Input Capture Interrupt Enable
Wenn dieses Bit eine 1 hat und der Interrupt Flag im Status Register
gesetzt ist ( Globale Interrupt freigegeben) dann ist der Interrupt für
Timer 1 Vergelichsregister freigegeben
|
|
|
|
|
1
|
|
|
|
|
Timer/Counter1,Output Compare A Match Interrupt Enable
|
|
|
|
|
|
1
|
|
|
|
Timer/Counter1,Output Compare B Match Interrupt Enable |
|
|
|
|
|
|
1
|
|
|
Timer/Counter1,Overfow Interrupt Enable
|
|
|
|
|
|
|
|
|
1
|
Timer0 Overflow-Interrupt ein Beispiel (TIMSK.TOIE0=1)
|
|
Timer Control Register 0
|
TCCR0
|
Bit
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
|
|
OCF2
|
TOV2
|
ICF1
|
OCF1A
|
OCF1B
|
TOV1
|
-----
|
TOV0
|
|
Read/Write
|
R
|
R
|
R
|
R
|
R
|
R/W
|
R/W
|
R/W
|
|
|
|
|
|
|
|
0
|
0
|
0
|
Timer0 abschalten veringert auch den Stromverbrauch
|
|
|
|
|
|
|
0
|
0
|
1
|
Timer an -keine Takt-Teilung |
|
|
|
|
|
|
0
|
1
|
0
|
Takt durch 8
|
|
|
|
|
|
|
0
|
1
|
1
|
Takt durch 64 (Beispiel TCCR0=B&00000011)
|
|
|
|
|
|
|
1
|
0
|
0
|
Takt durch 256
|
|
|
|
|
|
|
1
|
0
|
1
|
Takt durch 1024
|
|
|
|
|
|
|
1
|
1
|
0
|
Externer Takt an T0 an fallender Flanke detektiert
|
|
|
|
|
|
|
1
|
1
|
1
|
Externer Takt an T0 an steigender Flanke detektiert
|
|
Timer 1 Control Register
|
|
Timer 1 ist
ein
16
Bit
Timer
mit
den
gleichen
Funktionen
wie
der Timer 0 kann
aber im gegensatz zu Timer 0 von 0 bis 65535 zählen.
Darüber hinaus verfügt er über ein zusätzliches
unabhängiges Vergleichsregister.
Des weiteren beherrscht der
Timer1
PWM mit variabler Periode und somit Pulsfrequenzmodulation.
Er besitzt
eine Input Capture Unit um externe Ereignisse zu zählen oder um
auf sie zu reagieren. |
Im
Timer 1 ist das Timer Control Register nicht 8 Bit breit wie beim Timer
0 sondern 16 Bit breit, diese 16 Bit sind aber aufgeteilt in 2 mal 8
Bit und heißen dann
TCCR1A und TCCR1B .
Im Register TCNTx wird der aktueller Registerwert gespeichert.
Und dann gibt es noch das Vergleichsregister OCR1AH+OCR1AL und
OCR1BH+OCR1BL (Output Compare Register A und B).In Bascom greift man
auf diese beiden Register mit Hilfe der 16 Bit Pseudoregister (
COMPARE1A und COMPARE1B) zu. |
| Register
TCCR1A |
Bit
7
|
Bit
6
|
Bit
5
|
Bit
4
|
Bit
3
|
Bit
2
|
Bit
1
|
Bit
0
|
Timer 1
|
COM1A1
|
COM1A0
|
COM1B1
|
COM1B0
|
FOC1A
|
FOC1B
|
WGM11
|
WGM10
|
Normale Port Operation
|
0
|
0
|
|
|
|
|
|
|
Über BIT 6 + 7 wird
der OCR1A
Anschluss konfiguriert ob er mit dem Ausgangspin verbunden wird
oder nicht.
00= nicht verbunden 10= verbunden
Beim Atmega 8 ist Ausgang OC1A
gleich Portb.1 und der muss als Ausgang deklariert werden wenn diese
Funktion genutzt wird.
|
1
|
0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Über Bit 4 + 5 wird
der OC1B Anschluß konfiguriert ob er mit
dem Ausgangspin verbunden wird wenn WGM13=0 ist (00=nicht
verbunden) 01=verbunden
|
|
|
0
|
0
|
|
|
|
|
| Resetiert OC1B
wenn
Vergleichswert erreicht wird |
|
|
1
|
0
|
|
|
|
|
| Der Ausgang OC1A ist beim
hochzählen 1 bis Vergleichswert erreicht wird , dann wird Ausgang
auf 0 gesetzt. |
1
|
1
|
|
|
|
|
|
|
|
|
|
1
|
1
|
|
|
|
|
| Bei Gleichstand des
Zählers und des Vergleichsregister Status am Ausgangpin OC1B
ändern |
|
|
0
|
1
|
|
|
|
|
COM1A1
(Compare Match
Output Mode) diese
Register steuern den
Output Compare Funktionen damit wird entschieden ob der OCR
Ausgang aktiviert ist oder nicht
|
|
|
|
|
|
|
|
|
Force Output
Compare
(FOC) Modus
Der Force Output Compare Modus ist in alle Timer/Counter integriert.
Der FOC Modus kann nur bei nicht-PWM Modi genutzt werden. Beim
Schreiben einer
logischen 1 auf FOCx wird ein sofortiger Compare Match des
Funktionsgenerators
erzwungen. Der OCx Ausgang wird auf den Status des COMx1 Bits gesetzt.
Deshalb
bestimmt der Wert aus COMx1 den Wert des OCx Pins beim Vergleich. |
|
|
|
|
|
|
|
|
| TCNTx
- Timer/Counter Register In diesem Register wird der aktuelle
Zählwert gespeichert. |
|
|
|
|
|
|
|
|
OCRx[A
|
B][H
|
L]
-
Output
Compare
Register
(A
oder
B
und
H
oder
L
nur
Timer1)Wenn TCNTx den Wert dieses Registers erreicht, wird ein Output
Compare
Interrupt Request ausgelöst.
|
|
|
|
|
|
|
|
|
| FOCx (Force Output Compare) Beim
Schreiben einer logischen 1
auf FOCx wird
ein sofortiger compare match des Funktionsgenerators
erzwungen. |
|
|
|
|
|
|
|
|
Der
Zählwert des Timers also die gezählten Takte werden im
Zähl-Register TCNT0 abgelegt mit jedem Takt wird der Wert im
Register CNT0 um eins erhöht.
Es gibt zwei Möglichkeiten den Timern zu sagen was sie machen
sollen,
zum einen funktioniert das mit Bascom Befehle, und zum anderen gibt es
die Möglichkeit Registereinstellungen direkt zu ändern. |
|
|
|
|
|
|
|
|
TIMSK
- Timer/Counter Interrupt Mask RegisterZur Auswahl, welche Interrupts
aktiviert werden sollen.
|
|
|
|
|
|
|
|
|
ICR1[H
|
L]
-
Input
Capture
Register
1
Hi
oder
Low
(nur
Timer1)Wird
bei
jedem
Input
Capture
Event
mit
TCNT
abgeglichen.
Kann
zur
Festlegung des Maximalwertes genutzt werden.
|
|
|
|
|
|
|
|
|
TIFR
- Timer/Counter Interrupt Flag RegisterHier werden bestimmte Bits
gesetzt, wenn ein Interrupt ausgeführt werden soll.
|
|
|
|
|
|
|
|
|
ASSR
- Asynchronous Status Register (nur Timer2)Register zur Steuerung des
asynchronen Modus
|
|
|
|
|
|
|
|
|
SFIOR
- Special Function IO RegisterPSR2 Bit setzt den Prescaler des Timer2
zurück
|
|
|
|
|
|
|
|
|
|
|
|
| Register
TCCR1B |
Bit
7
|
Bit
6
|
Bit
5
|
Bit
4
|
Bit
3
|
Bit
2
|
Bit
1
|
Bit
0
|
|
ICNC1
|
ICES1
|
|
WGM13
|
WGM12
|
CS12
|
CS11
|
CS10
|
| Bei 1 wird
steigende Flanke registriert bei 0 die fallende |
|
1
|
|
|
|
|
|
|
CSxx (Clock Select) konfiguriert den
Prescaler
CS10,CS11,Cs12.
Mit den Bits 0-1-2
(CS10,CS11,CS12) wird der Prescaler ( Vorteiler ) eingestellt
also in wie weit der Tackt des Atmegas herunter geteilt soll , oder
aber
wenn der Takt von Außerhalb angelegt wird , an welcher Flanke der
Takt registriert werden soll bei abfallender oder Steigender
Flanke.(000 =Timer
/
Counter
hält
an) |
|
|
|
|
|
0
|
0
|
0
|
| Voller
Takt
wird
genutzt |
|
|
|
|
|
0
|
0
|
1
|
| Takt
durch
8 |
|
|
|
|
|
0
|
1
|
0
|
| Takt
durch
64 |
|
|
|
|
|
0
|
1
|
1
|
| Takt
durch
256 |
|
|
|
|
|
1
|
0
|
0
|
| Takt
durch
1024 |
|
|
|
|
|
1
|
0
|
1
|
| Externer
Takt
an
Pin
T1 bei fallender Flanke |
|
|
|
|
|
1
|
1
|
0
|
| Externer
Takt
an
Pin
T1 bei steigender Flanke |
|
|
|
|
|
1
|
1
|
1
|
Register
(ICES1)
wird
festgelegt
ob
bei
aufsteigender
Flanke
(
ICES1=1)
oder fallender
Flanke (ICES1=0 )der Eingangspin ausgewertet werden soll.
ICES1
(Input Capture Edge Select)
Bestimmt, welche Flanke ein
Capture
Ereignis auslöst. Bei 0 löst eine fallende Flanke ein Capture
Ereignis aus, bei 1 eine steigende Flanke 1 = Triggert
bei
steigender Flanke 0 Triggert bei fallender Flanke1 |
|
1
|
|
|
|
|
|
|
ICNC1 (Input Capture Noice Canceler)
Ist die
Störunterdrückung (ICNC1=1) eingeschaltet, wird der
Eingangspin viermal hintereinander abgetastet und muss auch 4 mal den
gleichen Wert aufweisen also 4 mal 0 oder 4 mal 1 je nach welche Flanke
er erkannt werden soll damit der Eingangsimpuls als solcher gewertet
wird.
Bei ausgeschalteter Störunterdrückung (ICNC1=0) wird jede
Flanke als Eingangsimpuls erkannt, so kann es beispielsweise bei nicht
entprellten Signale zu Störungen durch mehrfach Erkennung kommen. Störunterdrückung
eingeschaltet
0
ist
ausgeschaltet |
1
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
Status Register für Analog Digital Controller
|
| ADC Steuerungs und Status Register A |
| Die
Abtastfrequenz der Analogeingänge sollte zwischen 50Khz und 200Khz
liegen und wird über den Vorteiler (Bit 0,1,2) eingestellt |
| ADCSRA
|
Bit
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
|
| ADEN | ADSC | ADFR | ADIF | ADIE | ADPS2 | ADPS1 | ADPS0 |
|
Read/Write
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
|
|
|
|
|
|
|
0
|
0
|
0
|
Teilfaktor für Analogabtastung =2 ( Systemntakt durch 2)
|
|
|
|
|
|
|
0
|
0
|
1
|
Teilfaktor für Analogabtastung =2
|
|
|
|
|
|
|
0
|
1
|
0
|
Teilfaktor für Analogabtastung =4
|
|
|
|
|
|
|
0
|
1
|
1
|
Teilfaktor für Analogabtastung =8
|
|
|
|
|
|
|
1
|
0
|
0
|
Teilfaktor für Analogabtastung =16
|
|
|
|
|
|
| 1 | 0 | 1 | Teilfaktor für Analogabtastung =32 |
|
|
|
|
|
| 1 | 1 | 0 | Teilfaktor für Analogabtastung =54 |
|
|
|
|
|
| 1 | 1 | 1 | Teilfaktor für Analogabtastung =128 |
| 1 |
|
|
|
|
|
|
| Analog-Digital Converter aktivieren mit 1 |
|
| 1 |
|
|
|
|
|
| Eine 1 startet die Wandlung danach wird ADCS wieder auf Null gesetzt |
|
|
| 1 |
|
|
|
|
| Eine 1 betreibt eine Free Running Modus , eine Messung nach der anderen. |
|
|
|
| 1 |
|
|
|
| Nach jeder Messung wird das Bit gesetzt |
|
|
|
|
| 1 |
|
|
| Nach jeder Messung wird ein Interrupt ausgelöst |
|
Register für Multiplexer der Analog Eingänge
|
| ADC (Analog Digital Converter )Multiplexer Selection Register
|
| ADMUX
|
Bit
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
|
|
REFS1
|
REFS0
|
ADLAR
|
MUX4
|
MUX3
|
MUX2
|
MUX1
|
MUX0
|
|
|
|
|
|
0
|
0
|
0
|
0
|
0
|
Spannungeingang (Kanal) auswählen hier Kanal ADC0
|
|
|
|
|
0
|
0
|
0
|
0
|
1
|
Spannungeingang (Kanal) auswählen hier Kanal ADC1
|
|
|
|
|
0
|
0
|
0
|
1
|
0
|
Spannungeingang (Kanal) auswählen hier Kanal ADC2
|
|
|
|
|
0
|
0
|
0
|
1
|
1
|
Spannungeingang (Kanal) auswählen hier Kanal ADC3
|
|
|
|
|
0
|
0
|
1
|
0
|
0
|
Spannungeingang (Kanal) auswählen hier Kanal ADC4
|
|
|
|
| 0 | 0 | 1 | 0 | 1 | Spannungeingang (Kanal) auswählen hier Kanal ADC5 |
|
|
|
| 0 | 0 | 1 | 1 | 0 | Spannungeingang (Kanal) auswählen hier Kanal ADC6 |
|
|
|
| 0 | 0 | 1 | 1 | 1 | Spannungeingang (Kanal) auswählen hier Kanal ADC7 |
| 0 | 0 |
|
|
|
|
|
| Referenzspannung einstellen hier =5 Volt Betriebsspannung oder jede andere Spannung zwischen 0 V und Betriebsspannung. |
| 0 | 1 |
|
|
|
|
|
| interne Referenzspannung |
| 1 | 0 |
|
|
|
|
|
| Nicht benutzt |
| 1 | 1 |
|
|
|
|
|
| interne Referenzspannung von 2,56 Volt | | ADCW | 16 Bit Pseudo Register in den nach der Umwandlung der Digitalwert gespeichert wird | | ADCL | davon werden real die untersten 8 Bit hier abgelegt | | ADCH | und die höherwertigen 2 Bits hier |
|
|
|
Analog Comperator Status Register
|
| Hiermit wird das Verhalten der beiden Comparator Eingänge beeinflusst |
Register ACSR
|
ACD
|
ACBG
|
ACO
|
ACI
|
ACIE
|
ACIC
|
ACIS1
|
ACIS0
|
Funktion
|
Bit 7
|
Bit 6
|
Bit 5
|
Bit 4
|
Bit 3
|
Bit 2
|
Bit 1
|
Bit 0
|
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
Bei
0 ist der Komparator eingeschaltet ( Default) , bei 1
ausgeschaltet.
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
Bei 1 ist die
Interne Referenzspannung eingeschaltet und liegt am AIN0 an, bei 0 aus.
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
Augang des Komparators ,
kann nur ausgelesen werden
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
Wenn 0 dann ist der
Komparator Interrupt ausgeschaltet
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
Interrupt wird bei
steigender und bei fallender Flanke ausgelöst
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
Verwendung des Interrupt ist ausgeschaltet
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
Interrupt bei fallender Flanke aktiviert
|
0
|
0
|
0
|
0
|
0
|
|
1
|
1
|
Interrupt bei steigender Flanke aktiviert
|
|
MCUCR Register
|
| Legt die Funktion der Interrupt Eingänge fest. Beim Atmega 8 sind das Pin 4 für Interrupt 0 und Pin 5 für Interrupt 1. |
Register MCUCR
|
Bit 7
|
Bit 6
|
Bit 5
|
Bit 4
|
Bit 3
|
Bit 2
|
Bit 1
|
Bit 0
|
|
X
|
X
|
X
|
X
|
X
|
X
|
0
|
0
|
wiederholt solange L-Pegel
|
X
|
x
|
X
|
X
|
X
|
X
|
0
|
1
|
INT0 bei Wechsel von H zu L oder L zu H
|
X
|
X
|
X
|
X
|
X
|
X
|
1
|
0
|
INT0 bei Wechsel von H zu L
|
X
|
X
|
X
|
X
|
X
|
X
|
1
|
1
|
INT 0 bei Wechsel von L zu H
|
X
|
X
|
X
|
X
|
0
|
0
|
X
|
X
|
INT1 wiederholt solange L Pegel
|
X
|
X
|
X
|
X
|
0
|
1
|
X
|
X
|
INT1 bei Wechsel von H zu L oder L zu H |
X
|
X
|
X
|
X
|
1
|
0
|
X
|
X
|
INT1 bei Wechsel von H zu L |
X
|
X
|
X
|
X
|
1
|
1
|
X
|
X
|
INT1 bei Wechsel von L zu H |
|
GICR Register
|
GICR = General Interrupt Control Register
|
Bit 7
|
Bit 6
|
Bit 5
|
Bit 4
|
Bit 3
|
Bit 2
|
Bit 1
|
Bit 0
|
|
1
|
1
|
X
|
X
|
X
|
X
|
X
|
X
|
Interrupt 0 und 1 einschalten
|
0
|
1
|
X
|
X
|
X
|
X
|
X
|
X
|
Interrupt 0 einschalten
|
1
|
0
|
X
|
X
|
X
|
X
|
X
|
X
|
Interrupt 1 einschalten
|
|
|
|
|
|
|
|
|
Aktualisiert 10.01.2023
|
Copyright by ms
|