Programmierinformationen zum ATtiny13A

Belegung des 10-poligen Programmiersteckers:
tiny13A    Stecker
 Pin5 ----- 1
 +5V ------ 2  (ev. ueber 100 Ohm)
 Pin1 ----- 5
 Pin7 ----- 7
 GND ------ 8
 Pin6 ----- 9
 GND ------ 10
Auslesen des ATtiny13A mit dem mySmartUSB:
avrdude -p t2313 -F -c avr910 -P /dev/ttyUSB0 -v
avrdude -p t2313 -F -c avr910 -P /dev/ttyUSB0 -U flash:r:flash.hex:i
Statt flash sollte auch noch gehen: eeprom, lock, hfuse, lfuse und signature.

Lock-Bits: auf default (0xFF) lassen.

Fuse-Bits: (Zusammenfassung vom Datenblatt)

hfuse          -     -     -   SELFPRG DWEN BODLEV1 BODLEV0 RSTDISBL
  default:     1     1     1     1      1     1      1      1       = 0xFF
lfuse        SPIEN EESAVE WDTON CKDIV8 SUT1  SUT0 CKSEL1 CKSEL0
  default:     0     1     1     0      1     0      1      0       = 0x6A
Bedeutung der Fuses:
Setzen der Fuses: avrdude -p t2313 -F -c avr910 -P /dev/ttyUSB0 -U hfuse:w:0xFF:m (noch nicht ausprobiert)
Weitere Informationen zu den AVR_Fuses auf mikrocontroller.net

Speicherbelegung:
Der ATtiny13A hat 1KB Flash, 64Byte EEPROM und 64Byte 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
01FF: 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
009F: letztes Byte

EEPROM-Bereich: Byte-weise organisiert
0000:
003F:


Timer des ATtiny13A (Timer0)

Die wichtigsten Informationen zum Timer sind im Datenblatt Seite 73 zu finden.
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:
TIMSK0 Timer-Interrupt-MaSK fuer timer0
(im 13A gibts nur den Timer0, in andern Typen kanns noch z.B. Timer1 geben)
Bit 7  6  5  4   3      2      1   0
    -  -  -  - OCIE0B OCIE0A TOIE0 -
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
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

Letzte Änderung: 11.Mai.2010 / Rolf                                                                                 Validator