volatile int readFlag;
volatile int analogVal;
volatile int analogVal1;
void init_ADC(void);
void start_ADC(void);
void setup(){
Serial.begin(9600);
init_ADC();
start_ADC();
while(1)
{
if (readFlag == 1)
{
if(analogVal != analogVal1)
Serial.println(analogVal,DEC);
readFlag = 0;
analogVal1 = analogVal;
start_ADC();
}
}
}
void init_ADC()
{
volatile char *admux = 0x7C;
volatile char *adcsra = 0x7A;
*admux = 0x40;
*adcsra = 0xAF;
sei(); //Enable Interrupt
readFlag = 0;
}
void start_ADC()
{
volatile char *adcsra = 0x7A;
*adcsra |= 0x40;;
}
ISR(ADC_vect){
volatile short *adcdata = 0x78;
readFlag = 1;
analogVal = *adcdata & 0x03FF;
}
void loop(){
}