Hallo, ich habe ein Problem mit einem ATMega328p, ich bin mit AVR Studio 4.19 und debugWire über AVR Dragon auf dem Gerät. Ich habe in dem Mega eine Soft PWM Programmiert, und das Problem, das die Flags OCF1B und OCF1A gesetzt werden, obwohl die werte in den Compare Registern unterschiedlich zu dem Timer wert sind. Ich habe einen Screenshot aus dem AVR Studio angehangen. OCF1A ist schon wieder gelöscht, da der Interrupt betreten wurden. OCF1B ist aber noch gesetzt. Laut Datenblat werden diese aber nur gesetzt, wenn: > This flag is set int the timer clock cycle after the counter(TCNT1) value >matches the Output Compare Register B(OCR1B). ich kann mir keinen Reim darauf machen, warum das Passiert, von euch eine Idee? Grüße Stefan
Stefan schrieb: > eine Idee? Das Problem ist irgendwo im nicht geposteten Code. Verwendest du auch andere Interrupts? Falls ja: was wird darin gemacht? Steht irgendwo cli() in deinem Code?
Hallo Lothar, danke für deine Antwort, ich habe mal geschaut, und habe das CLI im Disassambling bei eine anderen Timer und einer EEPROM routine gefunden. Den code für den Anderen Timer habe ich dann vom buid ausgeschlossen(wird nicht gebraucht). Danach hatte ich nur noch 3 cli im Dissasambling: Anfang von Main für Speicher auf dem Stack, die EEPROM Routine und in "exit" Die Einstiegssprungtabelle sieht so aus: 0: 0c 94 5d 02 jmp 0x4ba ; 0x4ba <__ctors_end> 4: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 8: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> c: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 10: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 14: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 18: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 1c: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 20: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 24: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 28: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 2c: 0c 94 8c 02 jmp 0x518 ; 0x518 <__vector_11> 30: 0c 94 c5 02 jmp 0x58a ; 0x58a <__vector_12> 34: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 38: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 3c: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 40: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 44: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 48: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 4c: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 50: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 54: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 58: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 5c: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 60: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> 64: 0c 94 8a 02 jmp 0x514 ; 0x514 <__bad_interrupt> also nur noch die 2 Vektoren von Timer1. Leider besteht das Problem immer noch. Gute idee mit dem Code, ich werde mal versuchen so viel wie möglich zu streichen, bis das Problem nicht mehr auftaucht und den Code dann Posten. Sonnst währe das ein ganz schöner haufen. ;) Grüße Stefan
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.