void setup()
{
autoadcsetup();
DDRD |=(1<<PD2)|(1<<PD3);
Serial.begin(38400);
}
double urms = 0;
double utemp = 0;
int umoment = 0;
int N = 0;
int flag = 0;
void loop()
{
if (flag){
flag = 0;
Serial.println(urms);
}
}
int i = 255;
void autoadcsetup(){
TCCR0B = (1 << CS01)|(1 << CS00);
OCR0A = 60;
TIMSK0 = (1<<OCIE0A);
ADMUX = (1 << REFS0);
ADCSRA = (1 << ADEN) | (1 << ADATE) | (1 << ADIE) | (1 << ADPS2);
ADCSRB = (1<< ADTS1) | (1<<ADTS0) | (1<<MUX5);
}
ISR(TIMER0_COMPA_vect){
if (PIND & (1<<PD2)){
PORTD &= ~(1<<PD2);
}
else{
PORTD |=(1<<PD2);
}
TCNT0 = 0;
}
ISR(ADC_vect){
if( ( UCSR0A & (1<<UDRE0)) ){
umoment = ADCL;
umoment += (ADCH<<8);
umoment = umoment - 512;
utemp = utemp + pow((double)(umoment),2)/4096;
N++;
if (N == 4095){
urms = sqrt(utemp)/102;
N = 0;
utemp = 0;
flag = 1;
if (PIND & (1<<PD3)){
PORTD &= ~(1<<PD3);
}
else{
PORTD |=(1<<PD3);
}
}
}
}