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







nach oben







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


ADENADSCADFRADIFADIEADPS2ADPS1ADPS0
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






101Teilfaktor für Analogabtastung =32






110Teilfaktor für Analogabtastung =54






111Teilfaktor 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




00101Spannungeingang  (Kanal)  auswählen hier Kanal ADC5




00110Spannungeingang  (Kanal)  auswählen hier Kanal ADC6




00111Spannungeingang  (Kanal)  auswählen hier Kanal ADC7

00





Referenzspannung einstellen hier =5 Volt Betriebsspannung oder jede andere Spannung zwischen 0 V und Betriebsspannung.

01





interne Referenzspannung

10





Nicht benutzt

11





interne Referenzspannung von 2,56 Volt
ADCW16 Bit Pseudo Register in den nach der Umwandlung der Digitalwert gespeichert wird
ADCLdavon werden real die untersten 8 Bit hier abgelegt
ADCHund 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