// read voltage using ADC0 on port F pin 0

#include<LCD4_128.h>  
#include<FPU_128.h>


void adc_init(void)
{
   ADCSRA.ADEN = 1 ; // enables ADC by
   ADCSRA.ADFR = 0; // single sample conversion

   ADCSRA.ADPS0 = 0;
   ADCSRA.ADPS1 = 1; // selects div by 64 clock prescaler
   ADCSRA.ADPS2 = 1;
   
   ADMUX.REFS0 = 1;  // selects AVCC as Vref
   ADMUX.REFS1 = 0;
   
   ADMUX.ADLAR = 0; // selects right adjust of ADC result

   ADMUX.MUX0 = 0;
   ADMUX.MUX1 = 0; // selects single-ended conversion on PF0
   ADMUX.MUX2 = 0;
   ADMUX.MUX3 = 0;
   ADMUX.MUX4 = 0;
   
}

void main(void)
{
  int adc_result;
  int ascl;
  int asch;
 
   float res;

   adc_init(); // Call the init function

  DDRF = 0x00; // (PORTF) as input so we can receive analog signals
  PORTF = 0x00; //pull-up resistors are turned off
 
  while(1)
   {
      ADCSRA.ADSC = 1; // start a conversion     
      while(ADCSRA.ADSC); // wait for conversion to complete

      adc_result = 0;
      ascl = 0;     
      asch = 0;

      ascl = ADCL;
      asch = ADCH;

      adc_result = asch<<8;
      adc_result = adc_result | ascl ;

      res = 5.0 * adc_result / 1024.0;

      LCD.PRINT(res);
      Sleep(500 mil);      
      LCD.CLEAR();
      
    }

}