mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMEGA128 resetet permanent


Autor: Michael Schankin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle zusammen,

ich hab da mal ein kleines Problem mit einem Atmega128.
Solange ich im Programm Befehle in der Main-Routine ausführe macht er 
was er soll.
Bsp.:
// **********************************************************************************
// includes
// **********************************************************************************
  #include <ecu.h>
  #include <atmel/io.h>
  #include <ecu.h>
  #include <mlx_90109.h>
  #include <timer.h>
  #include <atmel/interrupt.h>
  #include <dio.h>
  #include <comparator.h>
  #include <switch_pos.h>
  #include <rolling_dir.h>
  

// **********************************************************************************
// main program
// **********************************************************************************

int main (void)
{
  DDRB = 0xFF;
        PORTB = 0x0F;
        PORTB = 0xF0;
        PORTB = 0x0F;
        PORTB = 0xF0;
        PORTB = 0x0F;
        PORTB = 0xF0;                

  while (1)
    {
    }
           
  return 0;
}


Werde diese Befehle jedoch in einer Funktion ausgeführt, welche über ein 
header-file includiert wurde, dann spring der Controller in die 
Funktion, führt dort die Befehlszeilen aus und springt am ende der 
Funktion ins Nirvana.
Bsp.:
/ **********************************************************************************
// includes
// **********************************************************************************
  #include <ecu.h>
  #include <atmel/io.h>
  #include <ecu.h>
  #include <mlx_90109.h>
  #include <timer.h>
  #include <atmel/interrupt.h>
  #include <dio.h>
  #include <comparator.h>
  #include <switch_pos.h>
  #include <rolling_dir.h>
  

// **********************************************************************************
// main program
// **********************************************************************************

int main (void)
{
  ecu_Init();                

  while (1)
    {
    }
           
  return 0;
}

 Die Zeilen, welche vorher über der whileschleife standen werden jetzt 
in der ecu_Init() ausgeührt. Der Controller springt auch in die 
Funktion, springt aber am ende nicht heraus, sondern ins Nirvana.

Dieser Code war nur ein Beispiel, das gleiche geschieht immer, sobald 
irgendwelche Befehle in einer externen Funktion ausgeführt werden 
sollen.

Seltsam ist jedoch, dass ich genau die gleiche Hardware nochmal am 
laufen hab, mit genau der selben Software, und da gehts.
Den Controller habe ich bereits gegen einen neuen ersetzt, das hat auch 
nichts gebracht.

Kann denn so ein Phänomen durch einen schaltungsfehler verursacht 
werden?
Hat jemand schonmal so ein Problem gehabt?

Schonmal im voraus

Gruß Micha

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stackpointer (falls es beim Atmega128 so etwas gibt) nicht 
initialisiert?

Autor: klausy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na dann wirds wohl anner hardware liegen. software is ok und wenns auf 
nem anderen läuft...

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde auch sagen, dass der Stack angekratzt wird. Oder das üble M103 
Kompabilitätsbit.

MW

Autor: Michael Schankin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DANKE, DANKE, DANKE

Genau dieses blöde Bit wars. Manchmal sieht man eben den Wald vor lauter 
Bäumen nicht.

Vielen Herzlichen Dank und ein schönes WE.

Gruß Micha

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.