Hallo Leute, ich hoffe ihr koennt mir helfen. Habe auf dem STK500 einen ATMega8515 und moechte dort einen Timer-Interrupt nutzen. Klappt nur leider nicht, habe mittlerweile bestimmt 20 Sources aus dem Internet ausprobiert (auch aus diesem Forum), aber nichts funkioniert! Hat jemand ein Beispiel, das verifiziertermassen funktioniert? Muessen noch irgendwelche Einstellungen auf dem STK500 vorgenommen werden? Oder muessen eventuell noch bestimmte Fuses eingestellt werden? Hoffe ihr koennt mir helfen, MrWhite
Nachtrag: Nutze avr-gcc in der Version 4.3 und avr-dude in Version 5.8. Der Controller fuehrt alles, was nichts mit Timern zu tun hat ohne Probleme aus (nutze sonst keine Interrupts, bin Anfaenger).
Ich nenne mal ein paar Dinge, auf die man achten sollte: Ist der Timer eingeschaltet? Ist der Timerinterrupt eingeschaltet? Ist das Bit "general interrupt enable" gesetzt? Hat die Interrupt-Service-Routine den richtigen Interruptvektor? Grüße, Peter
Naja, der Code aus diesem Post: Beitrag "Re: Problem mit Timer Atmega8515" sollte ja zumindest ein LED leuchten lassen, dass an PORTB dran ist. Und zwar auf dem STK500 jeweils die oberen und unteren 4 abwechselnd. Funktioniert aber nicht. Meiner bescheidenen Meinung nach, ist der Code abre korrekt.
Was heißt > Funktioniert aber nicht. ? Sind die LEDs alle aus, alle an, ist eine 4er-Gruppe davon an? Was passiert, wenn Du im Programm folgende Zeile
1 | PORTB = 0xff; |
gegen diese
1 | PORTB = 0; |
tauschst? Ändert sich an der Anzeige etwas?
Peter Diener schrieb: > Ich nenne mal ein paar Dinge, auf die man achten sollte: Ergänzung: Ist das 10-polige Flachbandkabel gesteckt? Grüße Andreas
Hc Zimmerer schrieb: > Was heißt > >> Funktioniert aber nicht. > > ? Sind die LEDs alle aus, alle an, ist eine 4er-Gruppe davon an? > Das LED0 blinkt, die anderen 7 sind aus. > Was passiert, wenn Du im Programm folgende Zeile PORTB = 0xff; > gegen diese PORTB = 0; > tauschst? Ändert sich an der Anzeige etwas? Alle LEDs blinken.
Andreas H. schrieb: > Ergänzung: > > Ist das 10-polige Flachbandkabel gesteckt? Also ganz bloed bin ich auch nicht!
Hier mal der exakte Compiler-Aufruf: avr-gcc -g -Os -I/usr/lib/avr/include/ -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=program.lst -Wl,-Map=program.map,--cref -L../../lib program.c -o program Habe mit Optimization-Levels hantiert. O1 oder O0 schafft aber auch keine Abhilfe. Das Verhalten des Programms kann ich mir einfach nicht erklaeren.
Neue Erkenntnis. Wenigstens funktioniert die Hauptschleife, wenn ich den call auf sei(); auskommentiere! Kann es sein, dass der Chip permanent im Interrupt gefangen ist? Was kann das verursachen. Anbei der Code. Bitte helft mir, alleine komme ich vermutlich nie drauf!
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.