ATMEGA128 resetet permanent

Gast #811939
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.:
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren