programovani ATmega8
pm
konference@crhov.komfi.cz
Pátek Leden 6 14:24:21 CET 2006
dd,
snazim se zacit programovat Atmega8, mam napsany kus kodu ktery by
mel blikat vystupem, programovani probehne OK (v zif patici)
ale po pripojeni brouka na napajeni nic nedela (koukal jsem osciloskopem
kam to jen slo :-))
poradil by pls nekdo kde hledat chybu ? (kod?, parametry pri
programovani? )
zkousel jsem interni 1MHz oscilator i externi krystal, zadne jine
pojistkove bity nemam nastavene, chovani porad stejne
diky moc PM
----------nasleduje kod programu -------------
.include "m8def.inc" ; natahni definici symbolickych jmen
.dseg ; nema tu byt org adresa ?
casovac: .byte 1
.cseg
rjmp start ; RESET
reti ; External Interrupt0 Vector Address
reti ; External Interrupt1 Vector Address
reti ; Output Compare2 Interrupt Vector Address
reti ; Overflow2 Interrupt Vector Address
reti ; Input Capture1 Interrupt Vector Address
reti ; Output Compare1A Interrupt Vector Address
reti ; Output Compare1B Interrupt Vector Address
reti ; Overflow1 Interrupt Vector Address
reti ; Overflow0 Interrupt Vector Address
reti ; SPI Interrupt Vector Address
reti ; USART Receive Complete Interrupt Vector
Address
reti ; USART Data Register Empty Interrupt Vector
Address
reti ; USART Transmit Complete Interrupt Vector
Address
reti ; ADC Interrupt Vector Address
reti ; EEPROM Interrupt Vector Address
reti ; Analog Comparator Interrupt Vector Address
reti ; Irq. vector address for Two-Wire Interface
reti ; SPM complete Interrupt Vector Address
;--------- Deklarace ----------------------
.def REG0=R16 ;pracovní registr
.def REG1=R17 ;pracovní registr
.def REG2=R18 ;pracovní registr
.def CNT1=R21 ;čítače průchodů
.def CNT2=R22 ;pro čekací
.def CNT3=R23 ;rutiny
;--------- Inicializace -------------------
start:
ldi REG0,$02 ; Stack Pointer pro volani
podprogramu a preruseni
out SPH,REG0 ; Stack Pointer High Byte je jen
v 8515
ldi REG0,$5e ; Stack Pointer C0 - 25F (60h
- C0h)je rezerva pro buffer
out SPL,REG0 ; Stack Pointer Low Byte
ldi REG0,$0F ; Watchdog Setup
out WDTCR,REG0 ;
ldi REG0,$80
out ACSR,REG0 ; zakazani analogoveho komparatoru
ldi REG0,$FF ; Nastaveni smeru I/O pinu 0 = IN ,
1 = OUT;
out DDRB,REG0 ; Port C Direction Register
ldi REG0,$FF ; Nastaveni smeru I/O pinu 0 = IN ,
1 = OUT;
out DDRC,REG0 ; Port C Direction Register
ldi REG0,$0 ; Nastaveni smeru I/O pinu 0 = IN
, 1 = OUT;
out DDRD,REG0 ; Port D Direction Register
ldi REG0,$0 ; pocatecni inicializace
promennych
sts casovac,REG0
sei ; Enable All Interrupts
wdr ; watchdog reset
;-------- hlavni programova smycka ----------------
zac:
cbi portc,5 ; potom vyhodit
rcall cek100ms
sbi portc,5
rcall cek100ms
wdr ; watchdog reset
rjmp zac
;--------- čeká CNT1*10us ------------
cek: dec CNT1
nop
nop
nop
nop
nop
nop
nop
brne cek
ret
;--------- čeká 1ms ----------------
cek1ms: ldi CNT1,100
rcall cek
ret
;--------- čeká 100ms ----------------
cek100ms: ldi CNT2,100
cek100ms_a: rcall cek1ms
dec CNT2
brne cek100ms_a
ret
Další informace o konferenci Hw-list