Lock-Bits: auf 0x3F lassen.
Fuse-Bits: (Zusammenfassung vom Datenblatt)
hfuse Reset/PC6 WDTON SPIEN CKOPT EESAVE BOOTSZ1/SZ0 BOOTRST default: 1 1 0 1 1 0 0 1 = 0xD9 lfuse BODLEVEL BODEN SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0 default: 1 1 1 0 0 0 0 1 = 0xE1 CeramicOsz: 1 1 1 0 1 1 1 0 = 0xEE fuer Quarz: 1 1 1 1 1 1 1 1 = 0xFFBedeutung der Fuses:
Speicherbelegung:
Der Atmega8 hat 8KB Flash, 512Byte EEPROM und 1KB RAM.
Beim Ausschalten bleiben die Daten im Flash und EEPROM erhalten,
Daten im RAM gehen verloren.
Programmbereich: Word-weise organisiert (16-Bit Worte)
0000: Application-Flash
0C00: Start Boot-Flash (siehe BOOTSZ)
0FFF: letztes Word im Boot-Flash
RAM-Bereich: Byte-weise organisiert
0000: r0
0001: r1
...
001F: r31
0020: IO-Bereich
005F: letztes Byte im IO-Bereich
0060: SRAM
045F: letztes Byte
EEPROM-Bereich: Byte-weise organisiert
0000:
01FF:
TCCR0: - - - - - CS02 CS01 CS00
Bits2-0: 000 = Timer gestoppt
001 = ohne Prescaler, direkt mit Quarzfrequenz gezaehlt
010 = Prescaler=8, Timertakt=Quarzfrequenz/8
011 = Prescaler=64
100 = Prescaler=256
101 = Prescaler=1024
110 = Externer Takt, fallende Flanke
111 = Externer Takt, steigende Flanke
TCNT0: Zaehler (8-Bit)
TIMSK: OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 - TOIE0
Bit0: TOIE0 = Timer Overflow Interrupt Enable fuer timer0
TIFR: OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 - TOV0
Bit0: TOV0 = Timer Overflow timer0
Wird automatisch gesetzt wenn der Zaehler von 0xFF auf 0 wechselt.
Wenn TOIE0 gesetzt auch automatisch rueckgesetzt wenn die
Interruptroutine ausgefuehrt wird.
Sonst ruecksetzen durch schreiben von 1 in dieses Bit.
TIMSK: OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 - TOIE0
Bit2: TOIE1 = Timer Overflow Interrupt Enable fuer timer1
Bit3: OCIE1B = Output Compare Interrupt Enable fuer Vergleichsregister B
Bit4: OCIE1A = Output Compare Interrupt Enable fuer Vergleichsregister A
Bit5: TICIE1 = Timer1 Input Capture Interrupt Enable. Interrupt bei
entsprechendem Signal am ICP1-Pin, oder im WGM-Modus 12
wenn ICR1 erreicht wird.
TIFR: OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 - TOV0
Bit2: TOV1 = Timer Overflow timer1
Bit5: ICF1 = Input Capture Flag
SFIOR: - - - - ACME PUD PSR2 PSR10
PSR10 = PreScaler Reset (fuer timer1 und timer0)
Verwirrende Definitionen im Manual:
BOTTOM=0 MAX=0xFFFF (Maximaler Maximalwert) TOP=einstellbarer Maximalwert
TCNT1H:TCNT1L: Zaehler (16-Bit)
TCCR1A: COM1A1 COM1A0 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM10
COM1A1:0 = Ausgaenge fuer Vergleichsregister A
COM1B1:0 = Ausgaenge fuer Vergleichsregister B
00 = keine Ausgaenge geschaltet (Normalfall)
01 = Ausgang wechselt wenn Vergleichswert erreicht wird
10 = Ausgang wird auf 0 gesetzt
11 = Ausgang wird auf 1 gesetzt
TCCR1B: ICNC1 ICES1 - WGM13 WGM12 CS12 CS11 CS10
ICNC1 = Input Capture Noise Canceler
ICES1 = Input Caprure Edge Select
CS12:CS11:CS10 = Clock Select, gleich wie CS02:CS01:CS00 in TCCR0
WGM13:WGM12:WGM11:WGM10 = Laufmodus des Timers
0000 = 0 = Normal, TOP=0xFFFF, TOV1 wird bei MAX gesetzt
0100 = 4 = CTC, TOP=OCR1A, TOV1 wird bei MAX gesetzt
1100 = 12 = CTC, TOP=ICR1, TOV1 wird bei MAX gesetzt
1101 = 13 = Reserviert
0101 = 5 = Fast-PWM, TOP=0x0FF, TOV1 wird bei TOP gesetzt
0110 = 6 = Fast-PWM, TOP=0x1FF, TOV1 wird bei TOP gesetzt
0111 = 7 = Fast-PWM, TOP=0x3FF, TOV1 wird bei TOP gesetzt
1110 = 14 = Fast-PWM, TOP=ICR1, TOV1 wird bei TOP gesetzt
1111 = 15 = Fast-PWM, TOP=OCR1A, TOV1 wird bei TOP gesetzt
Nachdem TOP erreicht wurde wird der Zaehler wieder bei 0 gestartet.
(Also z.B. mit Modus 4 wird von 0 bis OCR1A gezaehlt, und somit
also alle OCR1A+1 Takte ein Interrupt ausgeloest)
In den Fast-PWM Moden wird jeweils der Pin OCnx (PB1 oder PB2 beim ATmega8)
bei erreichen von 0 auf LOW gesetzt und bei erreichen von OCRnx wieder auf HIGH.
(mit COMnx1:0 = 2, umgekehrt wenn COMnx1:0 = 3 ist).
Beim ATmega8 ist nx gleich 1A oder 1B, Ausgabepins OC1A (PB1) oder OC1B (PB2).
Diese Pins muessen noch in DDRB auf Ausgang gesetzt werden.
OCR1AH:OCR1AL: Output Compare Register A fuer timer1
OCR1BH:OCR1BL: Output Compare Register B fuer timer1
Diese Register werden dauernd mit TCNT1 verglichen
um entsprechende Interrupts auszuloesen.
ICR1H:ICR1L: Input Capture Register