ATMEGA128 resetet permanent

Gast #811939
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.:
1
// **********************************************************************************
2
// includes
3
// **********************************************************************************
4
  #include <ecu.h>
5
  #include <atmel/io.h>
6
  #include <ecu.h>
7
  #include <mlx_90109.h>
8
  #include <timer.h>
9
  #include <atmel/interrupt.h>
10
  #include <dio.h>
11
  #include <comparator.h>
12
  #include <switch_pos.h>
13
  #include <rolling_dir.h>
14
  
15

16
// **********************************************************************************
17
// main program
18
// **********************************************************************************
19

20
int main (void)
21
{
22
  DDRB = 0xFF;
23
        PORTB = 0x0F;
24
        PORTB = 0xF0;
25
        PORTB = 0x0F;
26
        PORTB = 0xF0;
27
        PORTB = 0x0F;
28
        PORTB = 0xF0;                
29

30
  while (1)
31
    {
32
    }
33
           
34
  return 0;
35
}

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.:
1
/ **********************************************************************************
2
// includes
3
// **********************************************************************************
4
  #include <ecu.h>
5
  #include <atmel/io.h>
6
  #include <ecu.h>
7
  #include <mlx_90109.h>
8
  #include <timer.h>
9
  #include <atmel/interrupt.h>
10
  #include <dio.h>
11
  #include <comparator.h>
12
  #include <switch_pos.h>
13
  #include <rolling_dir.h>
14
  
15

16
// **********************************************************************************
17
// main program
18
// **********************************************************************************
19

20
int main (void)
21
{
22
  ecu_Init();                
23

24
  while (1)
25
    {
26
    }
27
           
28
  return 0;
29
}
 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
Gast #811957
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.