#include <avr/io.h>
#define F_CPU 8000000UL

//Azert van UL a szamok mogott, hogy jelezzuk a forditonak, hogy ez unsigned long
//Maskulonben nem lenne helyes a szamolas veluk (ki lehet probalni)
#define ELTOLAS 100
#define VREF 5
#define FESZOSZTOFELUL 6800UL
#define FESZOSZTOALUL  2400UL
#define MINTA_ADC	801UL
 
//Ezek azert volatilek, mert akkor a debuggolas kozben mindig latni lehet oket a watch windowban
volatile uint8_t helyiertek2, helyiertek1, tortertek1, tortertek2; 
volatile uint32_t ValosFeszultseg;


//Balra igazitas nem kell szerintem az ADC eredmenyenel, max akkor, hogyha az also 2 bit
//nem fontos neked. (ekkor balra tolod el az ADLAR-ral es csak az ADCH -t hasznalod)
void ADInit()
{
	ADCSRA|= (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
}

uint16_t Beolvas10BitADC(uint8_t csatorna)
{
	ADMUX = (ADMUX & 0b11110000) | csatorna;//Csatorna valasztas
	ADCSRA |= (1 << ADIF);									//ADIF bit torlese, ha aktiv lenne esetleg
	ADCSRA |= (1<<ADSC);										//konverzio inditas
	while ( !(ADCSRA & (1<<ADIF)) );				//Megvarjuk, amig kesz a konverzio
	return ADC;
}

 
int main (void)
{
	ADInit();

	//Demonstralas miatt van ez itt:                 
	ValosFeszultseg =  (uint32_t) ((MINTA_ADC * VREF * ELTOLAS / 1024 * (FESZOSZTOFELUL + FESZOSZTOALUL)) / FESZOSZTOALUL);

	helyiertek2 = ValosFeszultseg / 1000;
  helyiertek1 = ValosFeszultseg / 100 % 10;       
	tortertek1	= ValosFeszultseg / 10  % 10;
	tortertek2	= ValosFeszultseg / 1   % 10; 
                 
  TCNT0 = 100;      
  
	while(1)

  {       
		//Valami ilyesmit meghivsz: (persze elegansabb az egeszet egy fuggvenybe tenni, ami egy structtal ter vissza, de demoba jo lesz
		ValosFeszultseg =  (uint32_t)((Beolvas10BitADC(4) * VREF * ELTOLAS / 1024 * (FESZOSZTOFELUL + FESZOSZTOALUL)) / FESZOSZTOALUL);
		helyiertek2 = ValosFeszultseg / 1000;
	  helyiertek1 = ValosFeszultseg / 100 % 10;       
		tortertek1	= ValosFeszultseg / 10  % 10;
		tortertek2	= ValosFeszultseg / 1   % 10; 

		//Majd itten van a kiiratas a 7 szegmensekre
  }
}
