www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik rcall und ähnliches funktioniert nicht


Autor: derwissel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tag auch

ich bin momentan dabei, mir das programmieren von AVR's anzueignen, 
benutze zu dem zweck das AVR studio, möchte einen ATMega8 programmieren 
und habe da so ein problem:

der befehl rcall wird übersprungen: wenn ich assemble und run auswähle, 
und dann mit F10 jeden schritt einzeln abspule, wandert er vom ende der 
stackpointer initialisierung einfach weiter zur routine reset.. woran 
liegt das?
nochwas: auch ältere programme, bei denen der rcall funktioniert hat, 
funktionieren nun nicht mehr.. was hab ich kaputtgemacht?

dann im anschluss gleich noch ne 2. frage: es ist ja möglich, mit 
.include weitere .asm dateien einzubinden.. nur verändert sich dabei in 
einem anderen programm irgendwie das "hauptfile" also das, welches beim 
assemble zuerst ausgeführt werden sollte.. das sollte "main.asm" sein, 
der assembler fängt aber immer mit "tools.asm" an.. was kann man da tun?

danke schonmal
derwissel

.include "m8def.inc"         ;Befehlssatz für ATMega8 laden



;Definitions

.def temp =r16
.def ram  =r17
.def ctr1 =r18
.def ctr2 =r19
.def ctr3 =r20
.def ctr4 =r21
.cseg

.equ ena=1

;Main

ldi temp, $FF
out DDRD, temp
ldi temp, $3
out DDRB, temp

ldi ram, high(RamEnd)
out SPH, ram
ldi ram, low(RamEnd)
out SPL, ram

rcall init

;LCD

reset:
ldi temp, $00
out portD,temp
ret

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
erstmal gar nichts, F10 bewirkt ein step over, d.h. alles, was sich 
dahinter verbirgt, wird nicht step für step simuliert. F11 macht echte 
Einzelschritte.

Autor: derwissel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
omg das is arm.. aber naja..

hat denn noch jemand ne idee warum diese verknüfungen zwischen den 
programmen nicht klappen? habs mittlerweile nochmal aber mit den 
gleichen namen für die files getestet.. das will einfach nicht gehen.. 
ich weise ihm als initial file main.asm zu, aber egal was ich mache, er 
startet in tools.asm

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst im Project Explorer die gewünschte Datei als Hauptdatei 
festlegen, da gibts ein Menu (Rechte Maustaste?) "Set assembler entry 
file" oder so.

MFG
Falk

Autor: D. W. (dave) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stehen die .include-Anweisungen am Anfang oder am Ende von der 
Hauptdatei?

Autor: Topsoft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die Sprungmarke Init ist bei dir nicht vorhanden, gehe aber mal davon 
aus das du sie hier nur nicht gepostet hast. Sonnst würde es ja auch zu 
einem Compiler Fehler kommen. Wenn ich die Marke einfüge kann ich das 
Stück Programmcode im Simulator nachvollziehen, alles funzt wie zu 
erwarten.

Gruß Topsoft

Autor: derwissel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also: im project explorer ist als entry file die main.asm angegeben, und 
die includes stehen am anfang (ich kenns nur so?)
trotzdem wird halt die tools.asm scheinbar als entry file benutzt..

@topsoft: crazy horse hats ja schon gepostet, war falsche 
programmbenutzung XD
das geht jetzt auch alles

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
.include-Anweisungen werden da ausgeführt wo sie stehen.
Definitionen sollten schon am Anfang stehen, andere Programme an genau 
der Stelle wo sie eingefügt werden sollen.

Viel Erfolg, Uwe

Autor: derwissel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sauber das geht danke

so jetzt tritt ein neues problem zutage:

ich benutze im main.asm einen rcall, der in dem file lcd.asm eine 
routine anspricht, die wiederum per rcall routinen aus tools aufruft.. 
die ret's von diesen routinen bringen mich aber direkt ins main.asm, was 
nicht so soll..
nochmal in code

main.asm
rcall init
anderes file
init:
rcall wait5ms
anderes file
wait5ms:
ret -> geht nach rcall init zurück

ich würde mir das so erklären, dass da der stackpointer nicht greift..
was macht man da? stackpointer in die betreffenden .asm files einbauen?

oder liegts an was anderem

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das liegt mit Sicherheit an was anderem.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.