Lock-Bits: auf default (0xFF) lassen.
Fuse-Bits: (Zusammenfassung vom Datenblatt)
xfuse - - - - - - - SELFPRG default: 1 1 1 1 1 1 1 1 = 0xFF hfuse DWEN EESAVE SPIEN WDTON BODLEV2 BODLEV1 BODLEV0 RSTDISBL default: 1 1 0 1 1 1 1 1 = 0xDF lfuse CKDIV8 CKOUT SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0 default: 0 1 1 0 0 1 0 0 = 0x64Bedeutung der Fuses:
Speicherbelegung:
Der ATtiny2313 hat 2KB Flash, 128Byte EEPROM und 128Byte SRAM.
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
03FF: letztes Word im Flash
RAM-Bereich: Byte-weise organisiert
0000: r0
0001: r1
...
001F: r31
0020: IO-Bereich
005F: letztes Byte im IO-Bereich
0060: SRAM
00DF: letztes Byte
EEPROM-Bereich: Byte-weise organisiert
0000:
007F:
Zusammenfassung der Tabelle 11-8:
Mode WGM2:1:0 Modus TOP Update TOV-Flag bei
0 0 0 0 normal 0xFF sofort 0xFF
1 0 0 1 PWM 0xFF 0xFF 0x00
2 0 1 0 CTC OCR0A sofort 0xFF (also nie wenn OCRA!=0xFF !!)
3 0 1 1 FastPWM 0xFF 0xFF 0xFF
5 1 0 1 FastPWM OCR0A TOP 0x00
7 1 1 1 FastPWM OCR0A TOP TOP
Relevante Register:
TIMSK Timer-Interrupt-MaSK (letzte 3 Bits fuer Timer0)
Bit 7 6 5 4 3 2 1 0
TOIE1 OCIE1A OCIE1B - ICIE1 OCIE0B TOIE0 OCIE0A
TCCR0A
Bit 7 6 5 4 3 2 1 0
COM0A1 COM0A0 COM0B1 COM0B0 - - WGM01 WGM00
TCCR0B
Bit 7 6 5 4 3 2 1 0
FOC0A FOC0B - - WGM02 CS02 CS01 CS00
Bedeutung der Bits in TCCR0A/TCCR0B:
WGM02-0: Modus (Waveform Generation Mode), siehe obige Tabelle.
COM0A1-0/COM0B1-0: Modus fuer PWM-Pins, bei Benutzung PB2 und PD5 im DDRB/DDRD setzen
00 PWM-Pins OC0A (PB2) und OC0B (PD5) nicht verwendet
01 OC0A wechseln wenn OCR0A erreicht wird (nur in FastPWM-Modi?, nur fuer OC0A erlaubt?)
10 OC0A/OC0B setzen wenn TCNT0 bei 0 startet, loeschen wenn OCR0A/OCR0B erreicht,
in Modus 1 zusaetzlich noch setzen beim runterzaehlen.
11 OC0A/OC0B loeschen wenn TCNT0 bei 0 startet, setzen wenn OCR0A/OCR0B erreicht,
in Modus 1 zusaetzlich noch loeschen beim runterzaehlen.
TCNT0 Timer CouNTer 0
Zaehlerwert lesbar und schreibbar
OCR0A Output Compare Register timer0 A
Vergleichsregister A, wird dauernd mit TCNT0 verglichen
OCR0B Output Compare Register timer0 B
Vergleichsregister B, wird dauernd mit TCNT0 verglichen
TIMSK Timer-Interrupt-MaSK (letzte 3 Bits fuer Timer0)
Bit 7 6 5 4 3 2 1 0
TOIE1 OCIE1A OCIE1B - ICIE1 OCIE0B TOIE0 OCIE0A
TOIE1: Timer Overflow Interrupt Enable, Interrupt bei Ueberlauf eingeschaltet
OCIE1A/OCIE1B: Output Compare Interrupt Enable
ICIE1: Input Capture Interrupt Enable
TCCR1A Timer Counter Control Register
Bit 7 6 5 4 3 2 1 0
COM1A1 COM1A0 COM1B1 COM1B0 - - WGM11 WGM10
TCCR1B
Bit 7 6 5 4 3 2 1 0
ICNC1 ICES1 - WGM13 WGM12 CS12 CS11 CS10
TCCR1C
Bit 7 6 5 4 3 2 1 0
FOC1A FOC1B - - - - - -
Bedeutung der Bits in TCCR1A-C:
WGM13-0: Modus (Waveform Generation Mode)
Auszug aus Tabelle 46:
0 Normal 0xFFFF Immediate MAX
4 CTC OCR1A Immediate MAX
12 CTC ICR1 Immediate MAX
14 Fast PWM ICR1 TOP TOP
CS12-0: Vorteiler
0 Timer ausgeschaltet
1 Teiler=1, es wird also F_CPU direkt verwendet
2 Teiler=8
3 Teiler=64
4 Teiler=256
5 Teiler=1024
6 Externer Takt an T1, fallende Flanke
7 Externer Takt an T1, steigende Flanke
COM1A1-0/COM1B1-0: Modus fuer PWM-Pins, bei Benutzung PB3 und PB4 im DDRB setzen
00 PWM-Pins OC1A (PB3) und OC1B (PB4) nicht verwendet
01 in PWM-Modus: nur wenn WGM13=1: OC1A wechseln wenn OCR1A==TCNT1, OC1B nicht verwendet
in andern Modi: OC1A/OC1B wechseln wenn OCR1A/OCR1B erreicht
10 loeschen von OC1A/OC1B beim raufzaehlen wenn OCR1X erreicht, setzen beim runterzaehlen
11 setzen von OC1A/OC1B beim raufzaehlen wenn OCR1X erreicht, loeschen beim runterzaehlen
ICNC1: Input Capture Noise Canceler, Rauschunterdrückung fuer den ICP1-Pin
ICES1: Input Capture Edge Select, Flanke vom ICP1-Pin: 0=fallende, 1=steigende Flanke.
Wenn ICIE1 in TIMSK gesetzt ist wird dann TCNT1 nach ICR1 kopiert.
FOC1A: In nicht-PWM-Modi setzen/loeschen von OC1A (setzen wenn COM1A1/COM1A0 11, loeschen wenn 10)
FOC1B: In nicht-PWM-Modi setzen/loeschen von OC1B (setzen wenn COM1B1/COM1B0 11, loeschen wenn 10)
TCNT1H Timer CouNTer 1 (Bits 15 bis 8)
TCNT1L Timer CouNTer 1 (Bits 7 bis 0)
OCR1AH Output Compare Register timer1 A
OCR1AL Output Compare Register timer1 A
OCR1BH Output Compare Register timer1 B
OCR1BL Output Compare Register timer1 B
ICR1H Input Capture Register timer1 Wenn ICP1-Pin aktiviert, wird TCNT1 hierher kopiert (siehe ICES1)
ICR1L Input Capture Register timer1 Im Datenblatt wird ICP1 manchmal auch als ICPI bezeichnet
(Statt ICP1 kann auch der Analog-Comperator verwendet werden, wenn dort das entsprechende Bit gesetzt)
TIFR Timer Interrupt Flag Register
Bit 7 6 5 4 3 2 1 0
TOV1 OCF1A OCF1B - ICF1 0CF0B TOV0 OCF0A
Bei Verwendung von Interruptsubroutinen (ISR) werden diese
Flags automatisch gesetzt und geloescht. Somit ist das
Register TIFR zum Programmieren nicht wirklich relevant.