www.mikrocontroller.net

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

Autor: Günther Waldner (Gast)
Datum: 08.04.2008 15:17

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: 08.04.2008 15:29

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: 08.04.2008 19:31

 
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: 09.04.2008 09:04

> 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: 09.04.2008 09:46
Dateianhang: Potentiometer.JPG (18,4 KB, 25 Downloads)
preview image for Potentiometer.JPG

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 Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net