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
Tut hier anstandslos. Ich habe aber nur einen ATmega16, keinen 32er. Habe noch ein PORTD ^= 2 in die ISR gebaut, man kann am Oszi gut beide Impulsfolgen sehen, die nahezu gleich lang sind (aber nicht ganz). Hast du's für den falschen Controller compiliert?
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
Jup! Danke das war es. Jetzt arbeitet das Teil. Echt vielen Dank - währe ich nie drauf gekommen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.