Forum: Mikrocontroller und Digitale Elektronik MSP430 F1612 Single-Channel, Single Conversion - Mode (ADC12)


von Armin M. (orginalperser)


Lesenswert?

Hi Leute,

ich habe momentan ein riesen Brett vor dem Kopf. Warum funktioniert 
folgender Code bei mir nicht?
1
// In einer Initialisierungsfunktion
2
3
P6DIR   = 0xEF;
4
P6SEL   = 0x10;
5
    
6
ADC12CTL0 = ADC12ON + SHT0_1 + REFON + REF2_5V; // Konfiguriert ADC12
7
ADC12MCTL0 = SREF_1 + INCH_4;                   // Vr+=Vref+ und Vr-=AVss,  
8
                                                //  Konvertierung von a4
9
ADC12CTL1 = CONSEQ_0;                      // SC-SC Mode
10
 
11
ADC12CTL0 |= ENC;        // Konvertierung beginnen
12
13
14
// ....
15
16
// Interruptroutine von TimerA
17
18
ADC12CTL0 |= ADC12SC + ENC;             // Abtasten und Konvertieren
19
while ((ADC12IFG & 0x0001)==0);         // Hier bleibt das Programm hängen      
20
21
U0TXBUF = (ADC12MEM0>>8);
22
while( ( IFG1 & 0x80 ) == 0 );    
23
24
U0TXBUF = ADC12MEM0;
25
while( ( IFG1 & 0x80 ) == 0 );
26
27
// Ende

Der Code bleibt bei der Abfrage des ADC - Interrupts hängen. Ich gehe 
davon aus, dass ich den AD-Wandler falsch konfiguriert habe, aber was 
habe ich falsch gemacht?

Vielen Dank im Vorraus für eure Hilfe!
Schönes Wochenende!
Armin

von Christian R. (supachris)


Angehängte Dateien:

Lesenswert?

Wieso schaust du nicht in die C-Demos von TI? Du hast den Sample%Hold 
Timer vergessen, fällt mir spontan auf:
1
ADC12CTL1 = SHP;                          // Use sampling timer

Ansonsten in das angehängte Beispiel schauen.

von Armin M. (orginalperser)


Lesenswert?

Danke, jetzt funktionierts. Ich meine, ich hätte es mit gesetztem SHP - 
Bit ebenfalls probiert, aber anscheinend lag ich falsch...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.