mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 ADC mit mehreren kanälen


Autor: Eugen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle zusammen,

Ich habe in meinem Programm ein Denkfehler.
Ich will zwei Kanäle für AD-Wandler benutzen, und sie über Interrupt
steuern.
Mit P6SEL |= 0x03; versetze ich die Pins 6.0 und 6.1 in ADC Modus.
dann
ADC12CTL0 = REF2_5V + REFON + SHT0_2 + ADC12ON + MSC;
Referenzspannung 2,5 Volt und ich schalte ADC an.

dann benutze ich ADC12CTL1 = SHP ; SHP Modes
und konfiguriere beide MEM-Register auf verschiedene Eingänge:
  ADC12MCTL0 = SREF_1 + INCH_0;  // Kanal 1
  ADC12MCTL1 = SREF_1 + INCH_1;  // Kanal 2
und schalte AD-Wandler an. Das Problemm ist, dass am MEM1 nichts
ankommt. woran könnte es liegen? was mache ich falsch???

Ich danke Ihnen für die Hilfe schon mal im voraus.

Autor: Lanius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du mußt dem Wandler in ADC12CTL1 auch noch sagen das er mehrere
Wandlungen machen soll und in ADCMCTL1 sollte er noch erfahren das
dieses die letzte Wandlung ist ( + EOS).
Es gibt von TI auch Beispiele für alle möglichen ADC-Sequencen in C.
Nutzt du den MSP-GCC so findest du diese im CVS unter Examples.

Autor: Eugen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was ist MSP-GCC???

ich dachte, dass der Prozessor sobald ein Interrupt kommt das
Analogsignal wandelt und dann wieder wartet. wie kann ich denn ihm
sagen, dass er mehrere Wandlungen macht???

danke

Autor: Lanius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MSP-GCC = Gnu C Compiler

http://www-s.ti.com/sc/techzip/slac015.zip

... da sind unter anderem 11 Beispiele in C für den ADC12 drin.

Autor: Eugen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Beispiele.

Eine Grundlegende Frage:
Wenn ich einfach ADC12MEM1 benutzen will, dann reicht es ja, wenn ich
folgendes Konfiguriere:

P6SEL |= 0x01; // Kanal 1
ADC12CTL0 = REF2_5V + REFON + SHT0_2 + ADC12ON ;
ADC12CTL1 = SHP ;
ADC12MCTL1 = SREF_1 + INCH_1;
ADC12IE = 0x01;
  ADC12CTL0 |= ENC;
  WDTCTL = WDT_ADLY_250;
  IE1 |= WDTIE;
  _EINT();
  for (;;) {
    _BIS_SR(LPM0_bits);
    _NOP();
    sprintf(rf_buf,"%d\r",adc2);   //
    rf_poi = rf_buf;
  }
}

interrupt [WDT_VECTOR] void wdt_isr(void) {
  ADC12CTL0 |= ADC12SC;
}

interrupt[ADC_VECTOR] void ADC12ISR (void) {
   adc2 = ADC12MEM1;    // Kanal 2
  _BIC_SR_IRQ(LPM0_bits);
}

das Programm läuft nämlich auch nicht. und da frage ich mich, welchen
Konfigurationsfehler mache ich dabei.

Danke für den Hinweis.

Schönen Tag noch

Autor: Lanius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du solltest dem ADC auch sagen welches ADC12MEM-Register er benutzen
soll:


ADC12CTL1 = CSTARTADD_1 + SHP ;

Die ADC12MEM-Register  sind den Eingängen ja NICHT fest zugeordnet.

----------------------------------------
(slau049e.pdf)

ADC12CTL1/CSTART Bits:

Conversion start address. These bits select which ADC12
ADDx 15-12 conversion-memory register is used for a single conversion
or for the first conversion in a sequence. The value of CSTARTADDx is 0
to 0Fh, corresponding to ADC12MEM0 to ADC12MEM15.
---------

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.