www.mikrocontroller.net

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

Autor: Andreas Weschenfelder (rupplyn)
Datum: 10.06.2007 18:47

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: 10.06.2007 18:55

Vermute mal du hast dir irgendwie deinen Stack vergurkt.

Olaf
Autor: Rudi (Gast)
Datum: 12.06.2007 14:22

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: 12.06.2007 18:17

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 (rupplyn)
Datum: 12.06.2007 19:40

hatte ich au mal versucht... beim anlegen des projects "use heap memory"
raus und schon funktionierts...
Autor: *.* (Gast)
Datum: 12.06.2007 20:07

Tu mal test() über main().
Autor: gast (Gast)
Datum: 12.06.2007 20:36

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: 12.06.2007 20:51

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 Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel





Hinweis: der Originalbeitrag ist mehr als 6 Monate alt.

webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net