Gast
#181240
Hallo,
bin gerade auf die Programmierung mit Win-AVR (20050214) umgestiegen
und stehe vor folgendem Problem:
<snip>
#include <avr/io.h>
#include <avr/interrupt.h>
volatile uint16_t i;
void test(void)
{
//tu was harmloses mit i, was nicht wegopimiert wird
}
int main(void)
{
cli();
//[Punkt 1] LED1 an
test();
//[Punkt 2] LED1 aus
for(;;);
}
</snip>
Sobald das Programm aus test() zurückkehrt, startet der Prozessor neu
(mit [Punkt 1]). Schreibe ich den Code aus test() hingegen direkt in
main(), läuft alles perfekt und auch [Punkt 2] wird ausgeführt. Woran
könnte das liegen?
Ebenso funktionierts nicht, wenn ich die globale Variable i zu einer
lokalen in test() mache. Da ich mich mit dem gcc noch nicht so recht
auskenne, wären ein paar Tipps hilfreich, worauf ich achten müsste.
Sind evtl. die Stack-Einstellungen irgendwie vermurkst?
Ich verwende den ATMega64L auf einem eigenen Board, das
Programmers-Notepad mit dem mitgelieferten examples/demo/Makefile von
Jörg Wunsch (nur das MCU_TARGET habe ich auf atmega64 eingestellt).
Vielen Dank im Voraus,
--
Sebastian