problem s AVR asemblerom

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
stano1204
Příspěvky: 5
Registrován: 21 bře 2010, 00:00

problem s AVR asemblerom

#1 Příspěvek 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?
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#2 Příspěvek od Andrea »

Když to strkáš do megy168 tak proč to překládáš pro megu16?
Uživatelský avatar
stano1204
Příspěvky: 5
Registrován: 21 bře 2010, 00:00

#3 Příspěvek 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
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#4 Příspěvek od Andrea »

Musíš mít správně ten .include, na .device se vykašli, to už je v tom definičním souboru.
Uživatelský avatar
stano1204
Příspěvky: 5
Registrován: 21 bře 2010, 00:00

#5 Příspěvek 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.
Uživatelský avatar
GeorgeB
Příspěvky: 1248
Registrován: 21 lis 2005, 00:00
Bydliště: Pardubice
Kontaktovat uživatele:

#6 Příspěvek 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...
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“