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