lee_trieu
Gà con
Chào mọi người !
Em đanng tìm cách đọc nhiều kênh ADC cùng lúc nhưng chưa chạy, em viết code đọc 2 kênh A1(P1.1) và A2(P1.2) nhưng ADC không chạy, giá trị ADC10MEM = 0.
mọi người xem giúp em với ạ:
em cảm ơn ạ !!
Em đanng tìm cách đọc nhiều kênh ADC cùng lúc nhưng chưa chạy, em viết code đọc 2 kênh A1(P1.1) và A2(P1.2) nhưng ADC không chạy, giá trị ADC10MEM = 0.
mọi người xem giúp em với ạ:
PHP:
#include "msp430g2553.h"
#include "conf_lcd.c"
#define aMode 1
#define bMode 2
void conf_adc();
void conf_io();
int a,b,selectMode;
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
conf_adc();
conf_io();
conf_lcd(0);
_BIS_SR( GIE); // Enable interrupt
selectMode = aMode;
while(1)
{
switch (selectMode)
{
case aMode :
P1OUT |= BIT0;
a = ADC10MEM;
selectMode = bMode;
break;
case bMode:
P1OUT |= BIT6;
b = ADC10MEM;
selectMode = aMode;
break;
}
lcd_gotoxy(0,0);
lcd_puts("A1 = ");
lcd_gotoxy(5,0);
lcd_number(a,0,0);
lcd_gotoxy(0,1);
lcd_puts("A2 = ");
lcd_gotoxy(5,1);
lcd_number(a,0,0);
}
}
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR(void)
{
//__bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
ADC10CTL0 &= ~ENC; // ADC10 disable
switch (selectMode)
{
case aMode:
ADC10CTL1 = INCH_1;
break;
case bMode:
ADC10CTL1 = INCH_2;
break;
}
ADC10CTL0 |= ENC; //
}
void conf_adc()
{
ADC10CTL1 = INCH_1 + CONSEQ_1;
ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;
ADC10DTC1 = 2;//Doc 2 kenh ADC
ADC10AE0 |= 0x06;// A1 va A2
}
void conf_io()
{
P1DIR &=~(BIT1+BIT2);
P1DIR |= BIT0+BIT6;
P2DIR |= 0xff;
P1SEL &= ~(BIT1+BIT2);
}