Forum: Mikrocontroller und Digitale Elektronik Rcall -Befehl im AVRStudio4.04??


von Max (Gast)


Lesenswert?

Wenn ich dieses Prog. im Studio simuliere, dann springt nach dem ret 
Befehl der PCounter zu rjmp main, und nicht eine Zeile nach dem 
rcall-Befehl.
Ich muß irgendwas vergessen haben, nur was?!
Es funktioniert nämlich im Studio und im Prozessor nicht.
Vielleicht kann sich das mal jemand durchsehen.
Danke
max

.device AT90S8515
.include "8515def.inc"

.def temp =r16
.def LED =r17
.def delay =r18
.def delay1 =r19
.def cmp =r20

.cseg
.org 0x00
  rjmp main

main:
  ser temp
  out DDRB,temp
  ldi cmp,0
  ldi LED,0xFF

LEDout:
  out PORTB,LED
  com LED
  rcall waittime
  rjmp LEDout

waittime:
  ldi delay,2
wait:
  dec delay
  ldi delay1,2
wait1:
  dec delay1
  cpse delay1,cmp
  rjmp wait1
  cpse delay,cmp
  rjmp wait
  ret

von Thomas F. (Gast)


Lesenswert?

Hi!

Hast du den Stackpointer initialisiert? Siehe Tutorium -> Stack:

ldi temp, RAMEND  ;Stackpointer initialisieren
out SPL, temp

ciao, Thomas

von Max (Gast)


Lesenswert?

Ha, jetzt gehts.
Hab das in einem anderen Prog gesehen und dachte mir, das brauch ich eh 
nicht
Danke
max

von Holger (Gast)


Lesenswert?

8515: 16 Bit-Stackpointer. Ich würde SPH auch initialisieren.
---
Holger

von Frankl (Gast)


Lesenswert?

Warum benutzen soviele Leute das 4.04 wo doch es noch nicht mal Beta 
ist, wenn ich den Leuten im www.avrfreaks.net forum 4.0 glauben kann.

von Max (Gast)


Lesenswert?

Ja den SPH hab ich auch initialisiert, wie es bei den Appnotes von Atmel 
gemacht wurde. Haut super hin.
Hab mir das Studio 4.04 frisch runtergeladen, und nicht auf die Version 
geachtet.
Danke
max

von Michael (Gast)


Lesenswert?

Laut Atmel ist das Studio4 jetzt die aktuelle Version und hat vor allem 
schon Features die das 3er nicht hat!

Das mit dem Stackpointer ist wichtig! Auch wenn du nur ein uC hast, der 
nur den SPL benötigt muss SPH immer initialisiert werden!!!

von Mark Hämmerling (Gast)


Lesenswert?

Salut,

@Michael: hmm? Verfügen AVRs mit <=256B RAM überhaupt über ein 
SPH-Register? Und wieso kommentiert Atmel selbst in seinen AppNotes die 
SPH-Initialisierung für 2313 und Co. aus? Und an welcher Stelle wird SPH 
vom AVR referenziert? Da existieren doch intern gar keine 
Adressleitungen für das Hi-Byte der RAM-Adresse... ? Oder hab ich was 
falsch verstanden?

Etwas verwirrt,
Mark H. -- http://markh.de/avr/

von Michael (Gast)


Lesenswert?

sorry wenn ich dich verwirrt hab, aber wir haben hier eine Menge 
Beispielprogramme für verschiedene Controller (von Atmel) und bei allen 
wird maximal der SPL initialisiert, was durchaus funktioniert, 
allerdings nur im AVRStudio(ob Ver.3 oder 4 ist egal). Das hat uns schon 
einige Nerven gekostet, deswegen wollte ich das nur mal erwähnen.
wenn der assembler das nicht macht (bei den kleineren atmels), dann muss 
man das auskommentieren!

sorry für die verwirrung

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.