MSP430 hängt in AD-Wandlung

Gast #2760346
Lesenswert?

uint16_t AD_Wert(void)  //P6.5 in AD-Wandlung
{
uint16_t temp=0;

ADC12CTL0 &=~ (ADC12ENC + ADC12SC);

ADC12CTL0 = (ADC12SHT02 + ADC12ON);  //64ADC-CLK-Cycles, ADC_ON

ADC12CTL1 = (ADC12CSTARTADD2 + ADC12CSTARTADD0);// in ADC12MEM5 
speichern
ADC12CTL1 |= ADC12SSEL1;         // MCLK auswählen

ADC12MCTL5 = ADC12INCH0 + ADC12INCH2;  // Input Channel Kanal 5
ADC12IFG =0;
ADC12CTL0 |= (ADC12ENC + ADC12SC);    // Enable Conversion
          // AD-Wandlung starten

while(!(ADC12IFG & BIT5));  // NoOp until ADSC12 is reset after 
conversion.
> --> hier hängt der Controller!!!


temp = ADC12MEM5;  // MEM-Register auslesen

ADC12CTL0 = 0x0000;      // ADC12CTL0 löschen

return temp;
}


Controller:
MSP430F5438

woran mag es liegen, dass die AD-Wadlung nicht weiter kommt?

mfg
Gast #2760949
Lesenswert?

...könnte es daran liegen, dass ich die Zeile:

>P6SEL |= BIT5;

nicht verwendet habe?

im Family-Guide steht hierfür ein "don't care" drin,

ABER: in einigen Beispielcodes wird die Zeile dennoch verwendet...

mfg
Gast #2761625
Lesenswert?

ja, danke für den Tip.

Sobald ich im Debugger das Bit auf "0" zurück setze, wird automatisch 
das ADC12IFG5 gesetzt und das richtige Wandlungsergebnis in das 
ADC12MEM5 gespeichert.

Nun ist natürlich die Frage, wie das SC-Bit automatisch zurückgesetzt 
wird...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren