2008-11-08

První experimenty s ATtiny15L

Tak jsem se konečně přiměl k tomu, sestavit si jednoduchý programátor a skusit naprogramovat ATtiny15L. Programátor je to nejjednodušší co jsem našel, programátor na pralelní port. Takže vzal jsem konektor na parallení port, napájel 5 drátků a toť vše.



Na nepájivém poli jsem pak zapojil drátky i ATtiny15L.

From ATtiny15 Parallel Port Programmer


V počítači sice nemám paralelní port, ale je v jednom malém servříku za mnou, tak jsem na ten srvřík nainstaloval programátor uisp a avrdude.

From ATtiny15 Parallel Port Programmer


S uisp mi to funguje příkazy:

# uisp -dlpt=/dev/.static/dev/parport0 -dprog=dapa --download
# uisp -dlpt=/dev/.static/dev/parport0 -dprog=dapa --erase --upload --verify if=/tmp/blik15.hex -v=3

A s avrdude pak příkazy:
# avrdude -c dapa -p t15
# avrdude -c dapa -p t15 -U flash:w:/tmp/blik15.hex

Program který na to maličkém obvodu právě běží je následující. Jen sem z něj vystříhl definice periferií aby byl kratší.

.... definice periferií
.def w=r16

;; Tabulka vektorů přerušení
.ORG 0
RESET: RJMP MAIN ; Reset Handle
V_INT0: rjmp RESET ; External Interrupt Request 0
V_IOPCH:rjmp RESET ; Pin Change Interrupt
V_T1CM: rjmp RESET ; Timer/Counter1 Compare Match A
V_T1OVF:rjmp RESET ; Timer/Counter1 Overflow
V_T0OVF:rjmp RESET ; Timer/Counter0 Overflow
V_EERDY:rjmp RESET ; EEPROM Ready
V_ANAC: rjmp RESET ; Analog Comparator
V_ADCCC:rjmp RESET ; ADC Conversion Complete


; Main code executed after power on and/or reset.
.ORG $009
MAIN:

; We don't initialize stack (SPL,SPH) because ATtiny15
; contains hardware stack 3 level deep.

;; Initialize
LDI W,$18 ; PB3,PB4 out, only
OUT DDRB,W

;; Main Program Loop
LOOP:
SBI PORTB,3

LDI R22,1
RCALL DLY3

SBI PORTB,4
LDI R22,2
RCALL DLY3

CBI PORTB,3
CBI PORTB,4
RCALL DLY
RCALL DLY
RCALL DLY
RCALL DLY
RCALL DLY

RJMP LOOP

Žádné komentáře: