mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC10 MSP430 Memory Problem (Controller: F2272)


Autor: Günther Waldner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Ich benutze einen MSP430 F2272
Ich hab ein riesen Problem mit meinem AD Wandler.
An P3.7 hängt ein Poti. Wenn ich nun das erste mal das Programm 
durchlaufe bekomme ich einen Wert in das ADC10MEM. Drehe ich jedoch beim 
Poti ändert sich der Wert darin nicht. Auch nicht wenn ich das Programm 
beende, am Poti drehe und die Debbug Session wieder starte. ich bekomme 
immer den Wert
ADC10MEM 0x03A4.

Was ist an meinem Programm falsch?
Danke im voraus.

Lg Waldner Günther

#include  <msp430x22x2.h>


void wait(unsigned int i);  // prototypen
int main(void);

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;  // watchdog aus
  P1DIR=0xFF;             // port 1 = output (8 LEDs)
  P3DIR=0x00;             // port 3 = input Ppotis)
  P1SEL=0x00;             // port 1 komplett als GPIO nutzen
  P3SEL=0xC0;             // P3.6 und 3.7 als A/D-Wandler benutzen, den Rest als GPIO

  P1IE=0x00;              // interrupt ausmachen

   P1OUT=0xFF;             // initial alle LEDs aus (low aktiv)

  ADC10CTL0 = ADC10ON+ADC10SHT_0+REFON+REF2_5V;  // ADC10 anschalten, Sample Time auf 4*ADC10CLKs,referenz auf 2,5V setzen
  ADC10CTL0 |= ENC;                    // jetzt anfangen ...
  ADC10CTL1 = INCH_7+SHS_3+CONSEQ_2;  // P3.7, TA2 trigger sample start , Repeat single channel Modus
  ADC10AE0 |= BIT7;                  // P3.7 ADC10 option select

  for(;;)
  {                       // infinite loop
    ADC10CTL0 |= ADC10SC; // konvertierung durchfuehren
    wait(10000);
    if (ADC10MEM <= 0x0A4)
      P1OUT=0x00;       // alle LEDs an
      else P1OUT=0xFF;   // alle LEDs aus
  }
}

void wait(unsigned int i) // delay function
{
  unsigned int j;
  for(j=0;j<i;j++);
}

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte das gute alte ENC rücksetz Problem sein.

Nach der Wandlung bzw. vor neuer Einstellung:
ADC10CTL0 &= ~ENC;

> wait(10000);
Warum nicht Abfrage des Busy Bit?

Autor: Günther Waldner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
 
for(;;)
  {                       // infinite loop
    ADC10CTL0 |= ADC10SC; // konvertierung durchfuehren
    wait(10000);
    ADC10CTL0 &= ~ENC;
    if (ADC10MEM <= 0xFFF)
      P1OUT=0x00;       // alle LEDs an
      else P1OUT=0xFF;   // alle LEDs aus
  }

Hab das jetzt mal so eingebaut. Ändert aber leider nichts an der 
Situation.
Ist sonst etwas falsch am Programm???
Das Potentiometer hat 100k und liegt an einer Spannung von 3.3V.

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> und liegt an einer Spannung von 3.3V.
Bei einer Ref.Spannung von 2,5V natürlich etwas gefährlich.

> Ist sonst etwas falsch am Programm???
Was machst du denn eigentlich mit "TA2 trigger sample start". 
Tatsächlich Timer gesteuert?

> Repeat single channel Modus
Bei Repeat Single Channel modus läuft der ADC von sich aus, warum 
startest du die Konvertierung überhaupt ständig neu?

Autor: Günther Waldner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich benutze das Board der FTKW Leipzig.
Da ich Anfänger auf dem Gebiet bin hab und mit dem beiligenden ADC 
Programm zum Board nicht viel anfangen kann habe ich mich im Internet 
ein wenig umgesehen, und ein Bsp zum ADC12 auf meinen umgeschrieben.
Und das TA2 Trigger Sample start hab ich aus dem beiligenden Programm
Leider konnte ich nirgends ein einfaches Programm finden das den ADC10 
verwendet und auch verständlich ist.

Anbei hänge ich einmal die Beschaltung der Potentiometer.

Danke für den Tipp mit dem starten.
Ich werde es aus der Schleife entfernen.

Hoffe ihr könnt mir weiterhelfen.
Danke Günther

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.