MSP430-ADC12 problem

Gast
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...
Gast
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
Gast
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
Gast
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
Gast
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.