Przesiadka z '51 na AVR - dlaczego nie działa mój program w assemblerze?

AVR -- nie rozumiem !!





Poprzedni Następny
Wiadomość
Spis treści
From: "Adam" <adam_at_nospam_o2.pl>
Subject: AVR -- nie rozumiem !!
Date: Sun, 8 Aug 2004 20:32:51 +0200


Zaczynam przesiadkę z '51 na AVR i piszę swój pierwszy program w
assemblerze:
.org 0x000
rjmp start

.org 0x100

start:

ldi r16,0x060
sts 0x3d,r16 - ustawiam stos

ldi r16,0x0ff - ustawiam portr B jako wyjścia
out 0x17,r16

ldi r16,0x055 - wystawiam przeplatankę
out 0x18,r16

loop2:
jmp loop2 - zapętlam abym widział co jest

Watchdog jest wyłączony.
Spodziewam się na porcie B przeplatanki zapalonych bitów. Ale nie ma.
Program nie działa:

Ten sam program w C i skompilowany pod AVR-GCC działa poprawnie

Myślałem , że taka prosta sprawa pójdzie mie od razu, a tu kicha.
Pomóżcie ślepemu !!
Pozdr.







========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Rafal Baranowski" <rufus_at_nospam_zeus.polsl.gliwice.pl.usun.to>
Subject: Re: AVR -- nie rozumiem !!
Date: Sun, 8 Aug 2004 21:51:38 +0200


Użytkownik "Adam" <adam_at_nospam_o2.pl> napisał w wiadomości
news:cf5rqc$r13$1_at_nospam_nemesis.news.tpi.pl...
Zaczynam przesiadkę z '51 na AVR i piszę swój pierwszy program w
assemblerze:

OK, tylko na jaki konkretny AVR piszesz?
Wrzuciłem to do symulatora, ustawiłem ATmega16 i działa.

Czemu nie używasz bibliotek z definicjami symbolicznych nazw rejestrów?
Czemu bajty ładujesz jakby były słowami (0x0FF zamiast 0xFF) - może z tym
coś mu nie pasuje?

--
Pzdr,
Raf.


========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.atman.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Adam" <adam_at_nospam_o2.pl>
Subject: Re: AVR -- nie rozumiem !!
Date: Sun, 8 Aug 2004 22:03:25 +0200


Nie używam bibliotek bo jeszcze się tak nie znam.
Ładowałem raz tak, raz tak, bo kombinowałem.
Procek to AT90S8515.

A.




========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!news.internetia.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Rafal Baranowski" <rufus_at_nospam_zeus.polsl.gliwice.pl.usun.to>
Subject: Re: AVR -- nie rozumiem !!
Date: Sun, 8 Aug 2004 22:21:49 +0200


Użytkownik "Adam" <adam_at_nospam_o2.pl> napisał w wiadomości
news:cf60v7$o3c$1_at_nospam_atlantis.news.tpi.pl...
Nie używam bibliotek bo jeszcze się tak nie znam.

Z tym jest prościej. :)

Ładowałem raz tak, raz tak, bo kombinowałem.
Procek to AT90S8515.

Aha.
Czy tak czy siak, miałeś ustawiłeś źle stos, bo ładowałeś jego wskaźnik
adresem z pamięci SRAM zaraz za przestrzenią I/O. Normalnie wskaźnik stosu
umieszcza się na koniec SRAM-u - odkładanie danych na stos powoduje
zmniejszanie wskaźnika (stos jest "do góry nogami" ;) ).

Spróbuj tak (nie używasz żadnych przerwań, więc może być bez skoku z wektora
reset-u):
.include "8515def.inc"

ldi R16, high(RAMEND)
out SPH, R16
ldi R16, low(RAMEND)
out SPL, R16

ldi R16,0xFF
out DDRB, R16

ldi R16,0x55
out PORTB, R16

loop:
rjmp loop

Jeśli teraz nie działa, to nie jest to wina programu. Nie wiem tylko czego
miałaby być. :-)

--
Pzdr,
Raf.


========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!news.nask.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Adam" <adam_at_nospam_o2.pl>
Subject: Re: AVR -- nie rozumiem !!
Date: Sun, 8 Aug 2004 22:08:43 +0200


Jest jeszcze coś. W programie uzywałem skoków call i jmp, które potem
okazało się, że nie działają.
Gdy wpisałem rjmp lub rcall to program zachowywał się inaczej.
Nie wiem czy to już tak będzie, ale mam STK500 z AVR Studia i sobie
pomyślałem, żę będzie tak łatwo się nauczyć, a tu okazuje sie, że debuger
pokazuje coś innego niż robi procesor w rzeczywistości.
Już widze te problemy z wieloznacznościami w przypadku usuwania błędów.
A poza tym, skąd mam wiedzieć czy instrukcje które uzyłem są dobre ? Skoro
raz działają a innym raze mnie ?
Czy możesz odnieśc się do tego ?




========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.internetia.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Rafal Baranowski" <rufus_at_nospam_zeus.polsl.gliwice.pl.usun.to>
Subject: Re: AVR -- nie rozumiem !!
Date: Sun, 8 Aug 2004 22:30:51 +0200



Użytkownik "Adam" <adam_at_nospam_o2.pl> napisał w wiadomości
news:cf61e4$r6v$1_at_nospam_nemesis.news.tpi.pl...
Jest jeszcze coś. W programie uzywałem skoków call i jmp, które potem
okazało się, że nie działają.
Gdy wpisałem rjmp lub rcall to program zachowywał się inaczej.

Ano... właśnie widzę, że S8515 nie obsługuje tych rozkazów i program szedł
Ci w maliny. W poście powyżej zmieniłem to na rjmp - sprawdź to.
Do adresowania dłuższych skoków musisz używać ijmp i icall z rejestrem
indeksowym Z.

Nie wiem czy to już tak będzie, ale mam STK500 z AVR Studia i sobie
pomyślałem, żę będzie tak łatwo się nauczyć, a tu okazuje sie, że debuger
pokazuje coś innego niż robi procesor w rzeczywistości.
Już widze te problemy z wieloznacznościami w przypadku usuwania błędów.
A poza tym, skąd mam wiedzieć czy instrukcje które uzyłem są dobre ? Skoro
raz działają a innym raze mnie ?
Czy możesz odnieśc się do tego ?

Hm, trzeba przeglądać zbiór obsługiwanych rozkazów. :-)
Szkoda, że symulator nie sygnalizuje błędu niepoprawnej instrukcji.

Pzdr,
Raf.


========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Adam" <adam_at_nospam_o2.pl>
Subject: Re: AVR -- nie rozumiem !!
Date: Sun, 8 Aug 2004 22:36:03 +0200


Ano... właśnie widzę, że S8515 nie obsługuje tych rozkazów i program szedł
Ci w maliny. W poście powyżej zmieniłem to na rjmp - sprawdź to.
Do adresowania dłuższych skoków musisz używać ijmp i icall z rejestrem
indeksowym Z.


Programy wysypywały mi się z tego właśnie powodu.
Gdy zamieniłem te skoki na inne od razu jest ok.

A co do stosu masz rację ustawiłem go na 0x60 oczywiście instrukcją "out" bo
pomyliły mi się te adresy.


Hm, trzeba przeglądać zbiór obsługiwanych rozkazów. :-)
Szkoda, że symulator nie sygnalizuje błędu niepoprawnej instrukcji.

Pzdr,
Raf.


Atmel pewnie olał ten debuger i dlatego mimo fajnego kitu uruchomieniowego
mam syf. Poprzednio pisałem programy pod '51 intuicyjnie i bez debugera.
Teraz po tej przesiadce nie mogę się pozbierać. Pewnie czeka mnie jeszcze
wpadka w język C dla AVR. Ale to po ćwiczeniach z ass.

Dzieki za sugestie.
Pomogło.





========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!lublin.pl!news.lublin.pl!piot

Poprzedni Następny
Wiadomość
Spis treści
From: Piotr Chmiel <piotr_at_nospam_topaz.zsel.lublin.pl>
Subject: Re: AVR -- nie rozumiem !!
Date: Sun, 8 Aug 2004 23:05:48 +0200


On Sun, 8 Aug 2004, Adam wrote:


ja bym to napisa=B3 tak:

org 0x0
rjmp start

org 0x100

start:
ldi r16,0x80
out 0x3d,r16=09(zamiast sts 0x3d,r16:)

ldi r16,0xff - ustawiam portr B jako wyj=B6cia
out 0x17,r16

ldi r16,0x55 - wystawiam przeplatank=EA
out 0x18,r16

loop2:
jmp loop2

ps. nie ustawiaj stosu na samym pocz=B1tku ramu tylko gdzie=B6 na ko=F1cu

pzdr,


========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!opal.futuro.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "arekg_k" <arekg_k_at_nospam_op.pl>
Subject: Re: AVR -- nie rozumiem !!
Date: Tue, 10 Aug 2004 15:02:34 +0200


Witam
Ja również czegoś nie wie o avr. Własnie zrobiłem swoją pierszą płytkę
z at90s8515 ale nie wiem czy jest
potrzebny reset na pin 9. Jeszcze jedno b.proste pytanie jak podłączy np
diody swięcące do tego scalaka do jakiegoś portu :) trzeba coś dodatkowo?
jestem początkujący . nie chciałem robić nowego wątku na grupie :)
Arek



========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!lublin.pl!news.lublin.pl!piot

Poprzedni Następny
Wiadomość
Spis treści
From: Piotr Chmiel <piotr_at_nospam_topaz.zsel.lublin.pl>
Subject: Re: AVR -- nie rozumiem !!
Date: Tue, 10 Aug 2004 17:12:39 +0200


On Tue, 10 Aug 2004, arekg_k wrote:

Witam
Ja r=F3wnie=BF czego=B6 nie wie o avr. W=B3asnie zrobi=B3em swoj=B1 pi=
ersz=B1 p=B3ytk=EA
z at90s8515 ale nie wiem czy jest
potrzebny reset na pin 9. Jeszcze jedno b.proste pytanie jak pod=B3=
=B1czy np
diody swi=EAc=B1ce do tego scalaka do jakiego=B6 portu :) trzeba co=B6 d=
odatkowo?
jestem pocz=B1tkuj=B1cy .

diode zapinasz na n=F3=BFke portu przez rezysta (np.220om) z tym =BFe dioda
=B6wieci przy niskim stanie na wyj=B6ciu portu .
Czyli plusa dajesz na anode a katode przez rezyst do porta :)

miedzy plus proca a reset daj rezyst 10K
pzdr,


========
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai