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
...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
Selbstverständlich musst Du P6SEL korrekt setzen, da sich die ADC-Kanäle 0-7 mit dem I/O-Port 6 die Anschlüsse teilen. Wo im Family Guide (slau208j) hast Du da "don't care" gefunden? Hast Du Dir mal die Beispiele für den ADC_12A angesehen, die TI veröffentlicht hat (slac166q) ?
sorry, steht nicht im family-guide, sondern im Device-Specific-Datasheet auf Seite 77. Die Tabelle gibt für die P6Sel.x grundsätzlich ein "don't care" an.
Hmm. Da hast Du recht, aber darauf würde ich mich nicht verlassen. Außerdem steht da
1 | |
2 | Setting the P6SEL.x bit disables the output driver as well as |
3 | the input Schmitt trigger to prevent parasitic cross currents |
4 | when applying analog signals. |
was das "don't care" etwas konterkariert.
Setz mal beim debuggen ADC12SC manuell zurück ob er dann ein Ergebnis ausspuckt.
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...
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.