#include <avr/io.h>
#include <util/delay.h>
 
//-------------------------------------
void m_delay_10ms(unsigned long val) {
//-------------------------------------
           while(val--) _delay_ms(10);
}
 
uint16_t ReadADC(uint8_t channel) {
 
 
           ADMUX = (ADMUX & 0b11110000) | channel;    //ADC0 csat. kiválaszt
           ADCSRA |= (1<<ADSC);    //start
           while(ADCSRA & (1<<ADSC));//várok amíg átalakít
           return (ADCL | (ADCH<<8));//adc kiolvasás
}
 
//-------------------------------------
int main(void) {
//-------------------------------------
uint16_t    adc;
 
           DDRB = (1<<PINB1); //PB1 kimenet
 		
           //init ADC
       
           ADMUX = (0<<REFS1)
                 | (1<<REFS0)    //VCC, mint referencia
                 | (0<<ADLAR);
           ADCSRA = (1<<ADEN)    //adc enable
                  | (1<<ADPS2)
                  | (1<<ADPS1)
                  | (1<<ADPS0); //előosztó 128as
          
 
           while(1) {
               PORTB |= (1<<PINB1);
               _delay_ms(1);
               adc = ReadADC(1)>>1;
               while(adc--) _delay_us(3.9); //1024/255
               PORTB &= ~(1<<PINB1);
 
               _delay_ms(19);
           }
           return 0;
}
