Stránka 1 z 1

problem s AVR asemblerom

Napsal: 21 bře 2010, 16:43
od stano1204
Zdravim, prave sa zoznamujem s AVR Atmel a poprosil by som niekoho o pomoc s riesenim nasledujuceho problemu:

Program pisem a prekladam v AVR studiu v4, napalujem cez Pony Prog2000 do procesora ATMEGA168-20PU. Mam len zakladne zapojenie na rosvietenie dvoch led diod zapojenych na pinoch PD5 a PB0 cez rezistor voci zemi.

Prvy program napisany v c, prelozim aj napalim ok, funguje, ledky svietia:

Kód: Vybrat vše

#include <avr/io.h>

int main(void) {

// enable  PD5,PB0 as output, Set PD5,PB0
    DDRD = 0b00100000;
    PORTD = 0b00100000;

    DDRB = 0b00000001; 
    PORTB = 0b00000001;

   while (1) {

   }
   return 0;
}

ten isty program ale v asemblery, prelozim aj napalim ok, ale nefunguje, tma:

Kód: Vybrat vše

.INCLUDE "m16def.inc"
.DEVICE ATMEGA16

.CSEG
// enable  PD5,PB0 as output, Set PD5,PB0
LDI R16,0b00100000;
OUT DDRD,R16;
OUT PORTD,R16;

LDI R16,0b00000001;
OUT DDRB,R16;
OUT PORTB,R16;

SKOK:   RJMP SKOK



Po nacitani hex suboru do ponyprogu je vidno ze hex subor z asemblera ma len 14 bytov a vsetko ostatne je $ff. hex subor z cecka tam ma toho o dost viac akoby v tom asm nieco chybalo ale neviem co. security bity som nemenil a su rovnake pre obe verzie. device v ponyprogu je nastavene na Atmega168.

Vie mi niekto kto s tym robi vysvetlit co je tam zle?

Napsal: 21 bře 2010, 17:10
od Andrea
Když to strkáš do megy168 tak proč to překládáš pro megu16?

Napsal: 21 bře 2010, 17:19
od stano1204
Andrea píše:Když to strkáš do megy168 tak proč to překládáš pro megu16?


Kód: Vybrat vše

.INCLUDE "m168def.inc"
.device atmega168

// enable  PD5,PB0 as output, Set PD5,PB0
LDI R16,0b00100000;
OUT DDRD,R16;
OUT PORTD,R16;

LDI R16,0b00000001;
OUT DDRB,R16;
OUT PORTB,R16;

SKOK:   RJMP SKOK


Vdaka funguje

Napsal: 21 bře 2010, 17:23
od Andrea
Musíš mít správně ten .include, na .device se vykašli, to už je v tom definičním souboru.

Napsal: 21 bře 2010, 17:26
od stano1204
pri c sa ten typ dal vybrat presne v menu, a pri asm to nebolo tak som niekde nasiel ze m16def je definicia pre celu radu procesorov, ale ako vidno omyl.

Napsal: 21 bře 2010, 18:38
od GeorgeB
stano1204 píše:tak som niekde nasiel ze m16def je definicia pre celu radu procesorov, ale ako vidno omyl.

Ono by to chtělo vědět co vlastně definiční soubory říkají a pak vědět rozdíl mezi ATMEGA16 a ATMEGA168...