atmega32 Interrupt Problem

Gast #367014
Lesenswert?

Hallo,

ich kapier es nicht und brauche mal Hilfe. Wenn ich den Timer0
Interrupt aktiviere und dieser auftritt startet das Programm bei
main(). Ohne aktivierten Interrupt blinkt die LED. Sobald der Interrupt
aktiviert wird leuchtet sie immer, denn innerhalb der _delay_loop wird
der Interrupt ausgelöst und das Programm beginnt bei main(),

Ich benutze den avr-gcc 3.4.5 mit avr-libc-1.4.4 unter Linux. Nachdem
ich dort nicht weiter kam habe ich den Source mit dem WinAVR kompiliert
und im AVRStudio laufen lassen. Im Simulator kann man schön sehen wie er
zu main() springt. Nachdem ich das Macro ISR gegen SIGNAL ausgetauscht
hatte funktionierte es zumindest im Simulator. Aber auch nur dort. Hier
im Forum habe ich dann gelesen das es sein kann das er wegen fehlender
Interrupt Funktionen oder falscher Optimierung beim Interrupt zur
Adresse 0x00 spring. Ich habe dann alle Möglichen Optimierungen
durchprobiert (auch ohne) und für alle Interrupts die Funktionen
geschrieben. Hat alles nichts geholfen.
Mir fällt echt nichts mehr ein - wo kann ich noch suchen ?

Mit Gruß
Mario
Angehängte Dateien:
Gast #367016
Lesenswert?

Glaub ich nicht so. Auf dem Board ist ein ATMega32. Kompiliert habe ich
mit (Resultat vom makefile):
avr-gcc -c -Wall -Os -mmcu=atmega32 -o main.lo
avr-gcc -o main main.lo
avr-objcopy -j .text -j .data -O ihex main main.hex
avrdude -cpony-stk200 -patmega32 -Uflash:w:main.hex:i

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