Gast
#311547
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