Forum: Mikrocontroller und Digitale Elektronik MSP430-ADC12 problem


von Wolfgang (Gast)


Lesenswert?

Hallo,
Hat jemand Erfahrung mit dem A/D- Wandler des MSP430F133. Bei mir
streuen die Werte erheblich (bis zu ca. 10 LSB). Auch ein
kurzgeschlossener  Eingang zeigt die gleiche Erscheinung. Was sollte
man evtl. besonders beachten?

MfG
Wolfgang

von OldBug (Gast)


Lesenswert?

Hallo Wolfgang!

Ich weis ja nicht, wie Deine Software aussieht, oder in welcher Sprache
Du Programmierst, aber vielleicht schaust Du Dir mal die Beispiele im
mspgcc-Verzeichnis an (genauer SLAC014 für ASM und SLAC015 für C).
Das ist alles ziemlich gut beschrieben...

Gruß,
Patrick...

von Wolfgang (Gast)


Lesenswert?

Danke für den Hinweis. Ich hab mir die Beispiele mal angesehen und
festgestellt, dass ich mein Programm( in C mit IAR Kickstart) ähnlich
aufgebaut habe.
Es ist ja nicht so, dass ich keinen Messwert  herausbekomme, sondern
der Wert stimmt in seiner Größe und folgt auch den Änderungen, wenn ich
die Eingangsgröße verändere. Deshalb meine obige Frage noch mal an
alle, bei denen das Messverfahren einwandfrei läuft.
MfG
Wolfgang

von Wolfgang (Gast)


Lesenswert?

Hallo,
ich kann mir nicht vorstellen, dass niemand damit Erfahrungen hat.
MfG
Wolfgang

von Martin (Gast)


Lesenswert?

Hallo Wolfgang,

habe vor längerer Zeit mal den ADC im MSP benutzt und hatte Probleme
mit der sehr anspruchsvollen Referenzspannung. Der Ausgleich von
Temperaturschwankungen war auch nötig.

Details habe ich grad nicht mehr Kopf, nur mal so als Denkanstoß


Grüße

Martin

von Wolfgang (Gast)


Lesenswert?

Hallo Martin,
aber vielleicht fällt Dir noch ein, ob Du einen konstanten Messwert
hattest. Die Temperaturabhängigkeit der Referenzspannung will ich noch
gar nicht  betrachten. Diese Abhängigkeit könnte man evtl. mit der
internen Temperaturdiode berücksichtigen. Aber auch die Temperaturwerte
streuen in der gleichen Größenordnung wie die analogen Eingänge.
Eigenartigerweise ist die letzte Ziffer immer eine ungerade Zahl.
Mit freundlichen Grüßen
Wolfgang

von Martin (Gast)


Lesenswert?

Hallo Wolfgang,

hier mal ein C-Code der funktioniert (ist aber nicht von mir, aber
gestestet). Es gibt auf meinem 149er Board keine so riesigen
Schwankungen der Werte.

//--------------------------------------------------------------------//
samples and returns the AD-converter value of channel 7
// (associated with Port P6.7)
//--------------------------------------------------------------------
static unsigned int GetAD7Val(void)
{
  ADC12MCTL0 = SREF_1 + INCH_7;                  // Select channel 7,
Vref+

  ADC12CTL0 |= ENC;                              // enable conversion
  ADC12CTL0 |= ADC12SC;                          // sample & convert

  while (ADC12CTL0 & ADC12SC);                   // wait until
conversion is complete

  ADC12CTL0 &= ~ENC;                             // disable conversion

  return ADC12MEM0 >> 5;                         // Scale value
}



Ich hoffe das bringt Dich weiter !

Grüße

Martin

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.