mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC12 sampled nicht


Autor: André Kamp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich stehe vor einem kleinen Problem. Und zwar habe ich mir ein Programm
geschrieben, welches jede Sekunde einemal eine Wert des ADC12
digitalisiren soll. Der Timer funktioniert auch und der Interrupt wird
auch aufgerufen. Jedoch scheint sich der MSP sich bei der
digitalisierung festzufahren oder der ADC12 ist defekt.

Code:

void init_adc(void) //initialisiert den ADC12 auf Kanal 10 Tempdiode
{
  P6SEL=0x1;             // port 6 = input

  ADC12CTL0 = ADC12ON+SHT0_0+REFON+REF2_5V;  // ADC12 anschalten, n=1,
referenz auf 2,5V setzen
  ADC12CTL1 = SHP;        // SHP benutzen
  ADC12MCTL0 = SREF_1+INCH_0; // Vr+=Vref+
  ADC12CTL0 |= ENC;       // jetzt anfangen ...
}

void init_timer(void)
{
  CCTL0 = CCIE;                             // CCR0 interrupt enabled
  CCR0 = 32768-1;                           // Counter so gewählt, daß
1 Hz Taktinterrupt ausgelöst wird
  TACTL = TASSEL_1 + MC_1;                  // ACLK, upmode
}

// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  ADC12CTL0 |= ADC12SC;                   // Start conversion
  while ((ADC12IFG & BIT0)==0);
  TXBUF0 = 't';

  temps[count] = ADC12MEM0;
  count++; //Zähler hochsetzen
  if(count == 10) TACTL = MC_0; //Timer stoppen
}
UART ist richtig konfiguriert, weil ich den Timer erst durch
tastendruck starte und mir das Zeichen ausgeben lasse. Nur das t
erscheint nicht und wenn ich die while schleife umbaue, sodass er
solange er BUSY ist mir ein Zeichen über den UART sendet, spammt er
mich voll. Also kommt er aus dem BUSY nicht mehr raus. Nun die Frage
ist der ADC12 kaputt oder liegt ein konfigurationfehler vor.

vielen dank

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist ein ADC12 ?

Peter

Autor: Michael Basel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich kann hier keinen Fehler sehen.
Sicher, dass du die Initialisierung durchführst?

Autor: André Kamp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter

Ist das A/D-Modul des MSP430 von Texas Instruments

@Michael

Ja ich rufe die init_adc() in der main-routine auf genauso wie die des
UART. Der Timer wird ja erst durch tastendruck aktiviert.

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;             // watchdog aus
  FCTL2 = FWKEY + FSSEL0 + FN1;         // MCLK/3 for Flash Timing
Generator
  flash_ptr = (char *) startaddr;       //startwert für den Flash
festlegen
  count = 0;
  init_adc();
  init_uart();

  _BIS_SR(LPM0 + GIE);              // ab in den LPM0 mit interrupts
...
}

also ka warum sich das Ding so festfährt :(  Kann man den Thread auch
in die Sektion des MSP430 verschieben? Habe den Eindruck er wird sonst
überlesen ...

Autor: arc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Funktioniert denn eine der anderen Varianten?
- ADC12BUSY in ADC12CTL1 = 1 während der Wandlung
- ADC12SC in ADC12CTL0 sollte auch automatisch auf 0 gehen, wenn die
  Wandlung fertig ist
- eigene ISR für den AD-Wandler

Autor: KoF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
müsste ADC12CTL1 = SHP; in deiner initialisierung nicht ADC12CTL0
sein???

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.