mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik R8C / HEW - Rücksprung


Autor: Andreas Weschenfelder (Firma: andreas-weschenfelder.de.vu) (rupplyn) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

arbeite gerade mit dem R8C und dem HEW. Leider habe ich das Problem, 
dass funktionen zwar aufgrufen werden, allerdings am Ende der Fkt nicht 
mehr in die Main-Routine zurueckgesprungen wird...

Beispiel

void main(void)
{

test();
//hier kommt man nicht mehr an
}

void test(void)
{

//Bis hier läuft alles
}

jemand ne idee woran das liegen könnte?

Autor: olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vermute mal du hast dir irgendwie deinen Stack vergurkt.

Olaf

Autor: Rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas,

du hast aber schon eine Endlosschleife eingebaut??

Etwa so:

void main (void)
{
  while(1)
  {
    test();
  }
}


void test(void)
{

//Bis hier läuft alles
}

...ansonsten läuft der Programmzeiger 'theoretisch' ins unendliche....

Rudi

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielleicht solltest du beim Beenden deiner Funktion ein return; 
hinsetzen. weiss nicht, ob das einen Unterschied macht, sollte 
eigentlich nicht, aber probieren geht ja bekanntlich über studieren.

viel spass, gruss
  Tobias

Autor: Andreas Weschenfelder (Firma: andreas-weschenfelder.de.vu) (rupplyn) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hatte ich au mal versucht... beim anlegen des projects "use heap memory" 
raus und schon funktionierts...

Autor: *.* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tu mal test() über main().

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich habe habe auch so ein seltsames Verhalten feststellen können. 
Interessanterweise funktioniert ein Rücksprung im Simulator-Mode 
einwandfrei, verwende ich aber den E8-Emulator im Debugger Mode erfolgt 
nach Beendigung der "ersten" Funktion (zu einer zweiten bin ich im 
Emulator-Mode nie gekommen!!!) ein Rücksprung auf eine ILLEGAL 
INSTRUCTION mit der Bezeichnung UND im Disassembler. Habe es mit der HEW 
x.42 und x.43 getestet, beide zeigten ein gleiches Verhalten.

Autor: zonendoedel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin moin,

ich würde mal die sect30.inc untersuchen.
Klingt so als wenn der Stackpointer keinen RAM mehr unter seinen Füssen 
hat.

C-Compiler für MCUs erzeugen eigentlich automatisch eine 
while(1)-Schleife in der main() aufgerufen wird, d.h. wenn main() 
verlassen wird, wird main() neu gestartet.

Und wech...

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.