Ich möchte mit dem MSP430G2231 kontinuierlich messen, der Interrupt
kommt aber leider nicht bzw. nur ein Mal.
DCO ist auf 6 MHz gesetzt.
1 | void Single_Measure(unsigned int chan)
|
2 | {
|
3 | ADC10CTL0 &= ~ENC; // Disable ADC
|
4 | ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // sample-and-hold time (16), ADC on, ADC interrupt enable
|
5 | ADC10CTL1 = chan + ADC10SSEL_3 + CONSEQ_2; // Channel, SMCLK, Conversion sequence (repeat single channel)
|
6 | ADC10CTL0 |= ENC + ADC10SC; // Enable and start conversion
|
7 | }
|
1 | #pragma vector=ADC10_VECTOR
|
2 | __interrupt void ADC10_ISR (void)
|
3 | {
|
4 | P1OUT ^= LED2; // green
|
5 | // average
|
6 | ADCSum += (ADC10MEM >> 2); // reduce to 8 bit
|
7 | ADCSamples++;
|
8 | ADCDone = true;
|
9 | }
|
Interrupts werden vor der Hauptschleife mit
aktiviert.
Der Watchdog Interrupt im interval mode z.B. läuft einwandfrei.
Was mache ich falsch?