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
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...
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
Hallo, ich kann mir nicht vorstellen, dass niemand damit Erfahrungen hat. MfG Wolfgang
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.