mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik msp430 ADC10 Kanäle auswählen


Autor: Christian S. (aliendrummer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

ICh versuche mit dem adc10 im msp430f1232 die Spannungen an A0 und A1 zu 
messen...
irgendwie bekomme ich aber für beide Kanäle die gleichen Werte?!?!?
Kann mir jemand einen Tipp geben?
  /*Init ADC*/
  
  ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC on Int. enabled
  ADC10AE |= 0x07; // Select the Pin 2.0-2.2
  
  ADC10CTL0 |= ENC + ADC10SC + INCH_0; // Start Conversion 
  while (ADC10CTL0 & ADC10BUSY); // Polling while ADC Busy
  adc_wert1 = (int) (((float)ADC10MEM / 1024.0) * 3600.0); // Wert in mV
  
  ADC10CTL0 |= ENC + ADC10SC + INCH_1; // Start Conversion 
  while (ADC10CTL0 & ADC10BUSY); // Polling while ADC Busy
  adc_wert2 = (int) (((float)ADC10MEM / 1024.0) * 3600.0); // Wert in mV

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte auch mal so ein Problem, aber kann mich nicht mehr genau erinnern 
was es war.
Auf jeden fall musste erst ein Flag deaktiviert werden, damit der Kanal 
gewechselt werden konnte.
Am besten nochmals im Hardware Manual den Teil zum ADC10 durchlesen...

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Evtl. ists das ENC Flag...

Autor: Christian S. (aliendrummer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ENC ist es leider nicht :(

Autor: Christian S. (aliendrummer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habs nochmal probiert....
  ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC on Int. enabled
  ADC10AE |= 0x07; // Select the Pin 2.0-2.2
  
  
  ADC10CTL0 |= ENC + ADC10SC + INCH_0; // Start Conversion 
  while (ADC10CTL0 & ADC10BUSY); // Polling while ADC Busy
  adc_wert1 = (int) (((float)ADC10MEM / 1024.0) * 3600.0); // Wert in mV
  ADC10CTL0 &= ~ENC;
  
  ADC10CTL0 |= ENC + ADC10SC + INCH_1; // Start Conversion 
  while (ADC10CTL0 & ADC10BUSY); // Polling while ADC Busy
  adc_wert2 = (int) (((float)ADC10MEM / 1024.0) * 3600.0); // Wert in mV
  ADC10CTL0 &= ~ENC;

geht leider auch nicht.....

Autor: arc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zwei Sachen:
Zum einen ist die Kanalauswahl in ADC10CTL1 (nicht in ADC10CTL0), zum 
anderen  sollte aus dem |= ein = werden, falls das mehr als einmal 
laufen soll...

Autor: Christian S. (aliendrummer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie? ADC10CTL0 und ADC10CTL1? Hast du ein Beispiel?

gruß christian

Autor: arc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MSP430x1xx User Guide (slau049f)
ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE;

//alles vor dem INCH_0 muss u.U. noch angepasst werden.
ADC10CTL1 = CONSEQ_0 | ADC10SSEL_0 | ADC10DIV_0 | SHS_0 | INCH_0;

ADC10CTL0 = ENC + ADC10SC;

while (ADC10CTL1 & ADC10BUSY);
...


Autor: Christian S. (aliendrummer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
cool, danke! Es geht jetzt....

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.