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