Gast
#789805
Hi, mein Problem ist, dass der AD-Wandler meines µC (MSP430F1610) in halbwegs unregelmäßigen Abständen stehen bleibt. Das die Stelle, an der er passiert:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
Der ADC läuft im "Repeat sequence of channels"-Mode frei durch. Deshalb soll das Programm in der while-Schleife auf den nächsten Wandlerwert warten, da zuvor Messkanal erst durchgeschaltet wurde. Nur bleibt er eben in der while-Schleife immer wieder hängen. Dabei steht dann im ADC12IFG: 0x000E. Die ADC12 Kontrollregister sehen im Debugger eigentlich richtig aus (ENC, ADC12ON und ADC12SC sind gesetzt), aber der Wandler liefert keine neuen Werte, ergo kein neues Interrupt-flag und ich kommen nicht mehr aus der Schleife raus. Bleibt er hängen, ist das BUSY-Bit durchgehend 1. Wenn ich via Debugger ADC12ON erst Null und dann wieder Eins setzte, läuft er weiter. Was mich jedoch am meiste wundert ist, dass das Programm immer wieder nach der gleichen Anzhal Zyklen stehenbleibt. (pt_get() wird in 2ms-Intervallen aufgerufen) Ich habe das Programm bis jetzt 14 mal durchlaufen lassen, dabei sind Hänger im Bereich des 55. bis 394. Zykluses aufgetreten. Dabei waren: 55: 3mal 89: 3mal 123: 2mal 191: 2mal Nehme ich die while-Schleife raus, treten keine Hänger auf... Hat jemand ne Idee, wo der Fehler liegen könnte und vor allem in welche Richtung ich suche sollte? Wieso beeinflusst das Polling überhaut den ADC? Danke schonmal im Vorraus. Gruß Christoph und noch was: alle Interrupts sind in dem Programmbereich aus. (GIE = 0)