Hallo alle zusammen.
kennt sich jemand mit MSP430 aus.
ich habe volgendes Problemm.
Ich will ADC benutzen und zwar mit mehreren kanälen. MitADC12MEM0 klappt es bei mir. Allerdings sobald ich ADC12MEM1 benutzen will bekomme ich keine Werte.
ich habe bestimmt kleinen Fehler im Programm, den ihr sofort sieht.
danke für die Hilfe
Hier ist Mein Quelltet:
#include <msp430x14x.h>
#include <stdio.h>
#define FALSE (0 == 1)
#define TRUE (0 == 0)
unsigned char rf_buf[8],
unsigned int adc1,adc2;
void main(void) {
// P6SEL = BIT0; // Kanal 1
P6SEL |= 0x03; // Kanal 1 + 2
ADC12CTL0 = REF2_5V + REFON + SHT0_2 + ADC12ON + MSC ;
// ADC12CTL0 = REF2_5V + REFON + SHT0_6 + ADC12ON;
ADC12CTL1 = SHP +CONSEQ_1; //Sobald ich CONSEQ_1 reintue läuft überhaupt nicht mehr, als wäre kein Interrupt ausgelöst.???
// ADC12MCTL0 = SREF_1 + INCH_0; // Kanal 1
ADC12MCTL0 = SREF_1 + INCH_0; // Kanal 1 + 2
ADC12MCTL1 = SREF_1 + INCH_1; // Kanal 1 + 2
// ADC12MCTL0 = SREF_1 + INCH_10;
// ADC12IE = 0x01; // ???
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) {
adc1 = ADC12MEM0; // Kanal 1
adc2 = ADC12MEM1; // Kanal 2 Hier bekomme ich keine Werte / / /zurück WARUM????
_BIC_SR_IRQ(LPM0_bits);
}
int __low_level_init(void) {
WDTCTL = WDTPW + WDTHOLD;
return 1;
}