Hallo zusammen,
habe seit langem mal wieder ein Projekt am laufen, dazu noch etwas die
Hard und Software Upgegradet und schon fangen die Probleme an... Ich
hoffe, ihr könnt mir mal wieder helfen.
Zur Situation:
AVR Studio 6.2, JTAGICE3 über dWire an einen Tiny24A
Programm übertragen klappt wunderbar, nur dann fangen die Probleme an.
Beim Schreiben das Timer Registers TCCR0B wird automatisch das TIFR0
Register auf $07, also werden alle 3 Interrupts (OCF0B, OCF0A und TOV0)
ausgelöst und TCNT0 steht auf einem zufälligen Wert.
Das ganze sieht dann im Code so aus:
1 | reset:
|
2 | ldi r16, (2<<CS00) ; Clk/8
|
3 | out TCCR0B,r16
|
4 |
|
5 | ldi r16, 104 ; OC Match bei 104
|
6 | out OCR0A,r16
|
7 |
|
8 | ldi r16, (2<<WGM00) ; Clear on Compare
|
9 | out TCCR0A,r16
|
10 |
|
11 | ldi r16, (1<<OCIE0A); Interrupt bei Compare Match
|
12 | out TIMSK0,r16
|
13 |
|
14 | sei
|
15 |
|
16 | l:
|
17 | rjmp l
|
Ich vermute, das der Timer weiter läuft, während die Daten an den PC
übertragen werden. Bei meinem alten Mega16 Debugger über RS232 und JTAG
und Studio 4.x war das kein Problem. Da war alles synchron.
Ein NOP in der Timer0-ISR, welches mit einem Breakpoint versehen wurde
wird überfahren, erst nachdem ich die NOP Anweisung gegen ein BREAK
tausche, wird auch wirklich angehalten.
Was ist hier Faul?
Kann man da irgend etwas einstellen? Ist sicherlich nur eine
Kleinigkeit.
Viele Grüße,
Tubie