Hallo,
Ich habe in einem dspic 30F folgende Interrupt Routine am Laufen:
1 | void
|
2 | _ISR _T1Interrupt( void)
|
3 | {
|
4 | TMR1=0; //restart timer
|
5 | LATDbits.LATD0=!LATDbits.LATD0; //toggle LED
|
6 | m10++; //increase 10 ms tic counter
|
7 | a0=a1; //shift HIER IST DAS PROBLEM
|
8 |
|
9 | _T1IF=0; //!!!!clear interrupt flag!!!!
|
10 | }//Timer 1 interrupt
|
Die Routine wird alle 10 ms oder 18432 Taktzyklen aufgerufen, viel Zeit
also. Komischerweise wird sie unregelmäßig, sobald die mit "Hier ist das
Problem" markierte Zeile drin steht. Kommentiert man sie aus: null
problemo. Steht sie drin: LED flackert unregelmäßig. Das gleiche
passiert wenn ich statt den beiden chars a0/a1 ein char array a[2]
verwende, und das erste auf das nullte Element schiebe.
Weder auf PortD noch auf a wird im Moment zugegriffen, ich habe schon
allen Code ringsrum entfernt. Aber sobald das da drin steht, spinnt der
Interrupt.