Forum: Mikrocontroller und Digitale Elektronik MSP430 ADC10: Zwei Kanäle hintereinander abfragen


von Peter Mueller (Gast)


Lesenswert?

Hallo,

ich will hintereinander den AD-Kanal 0 und dann die interne Temp-Diode 
abfragen. Wenn ich jeweils nur eine von beiden Funktionen aufrufe geht 
alles prima. Rufe ich sie hintereinande auf, stimmt die Temp. nicht (46 
anstatt 27) und die Spannung an A0 springt etwas mehr.

Woran kann das liegen?

Danke und Gruß,
Peter

unsigned short read_temperature(void){

  unsigned short IntDegC;

  ADC10CTL1 = ADC10DIV_3 | INCH_10; // select Temperature Diode
  ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE + ENC + 
ADC10SC;             // Sampling and conversion start
  _BIS_SR(CPUOFF + GIE);                  // LPM0 with interrupts 
enabled

  IntDegC = ((ADC10MEM - 986) * 423) / 1024 + 3; // +3 ist Korrektur
  return IntDegC;
}


unsigned short read_ubatt(void){
  unsigned long calc;
  ADC10CTL1 = ADC10DIV_3 | INCH_0;        // select Analog Input Pin 
P2.0
  ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE + ENC + 
ADC10SC;
  _BIS_SR(CPUOFF + GIE);                  // LPM0 with interrupts 
enabled

  calc = ((unsigned long)ADC10MEM*(unsigned long)1500);

  return calc/1023;

}

von Jörg S. (Gast)


Lesenswert?

Was ist es denn genau für ein Typ? (MSP430F???)

Bei ADC wichtig: Das Register ADC10CTL0 kann nur verändert werden wenn 
ENC "0" ist. Ebenso ADC10CTL1. Wenn du die Funktionen hintereinander 
aufrufst, musst du die ADC Register also vorher erst wieder "freigeben" 
(ADC10CTL0 &=~ENC;).

von szimmi (Gast)


Angehängte Dateien:

Lesenswert?

Hiho,
je nachdem, welches Derivat Du verwendest, würde ich in Deinem Falle 
(beim ADC10) über DTC immer alle Kanäle zwischen A0 und A10(temp) 
wandeln. Kostet Dich zwar 18 Bytes unnützen Speicher, aber wenn das kein 
Problem ist, dann ist das sicherlich die codemässig aufwandsaermste und 
eleganteste Lösung.
Anbei ein Beispiel für die Wandlung der Kanäle A1..A3. Müsstest Du 
entsprechend anpassen.

von szimmi (Gast)


Lesenswert?

Ah,
um den "unnützen" Speicherbedarf zu reduzieren, kannst Du für Deine 
Wandlung anstelle A0 auch z.B. A7 wählen...

von Peter Mueller (Gast)


Lesenswert?

Danke, genau das war das Problem

Gruß,
Peter

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
Noch kein Account? Hier anmelden.