#include <avr/io.h>
#include <util/delay.h>
#define F_CPU 1000000UL
//-------------------------------------
void m_delay_10ms(unsigned long val) {
//-------------------------------------
           while(val--) _delay_ms(10);
}
 
//-------------------------------------
int main(void) {


//-------------PORTOK beálítása--------

unsigned char mask =0x00;


// DDRB |= (0b00011111);



//---------------ADC-------------------

//Előosztás beállítása 128-ra

	ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

//Referencia feszültség beállítása a tápfeszültségre
	ADMUX &=~(1<<REFS2);
	ADMUX &=~(1<<REFS1);
	ADMUX &=~(1<<REFS0);

// Analóg csatorna,kiválasztása
	ADMUX &=~(1<<MUX3);
	ADMUX &=~(1<<MUX2);
	ADMUX &=~(1<<MUX1);
	ADMUX &=~(1<<MUX0);

// Automatikus indíthatóság tiltása ADC0 (PB5)

	ADCSRA &=(~1<<ADATE);

//kiesik, mert egyszeres konverzió van

	//ADCSRB &=~(1<<ADTS2);--Timer/Counter Compare Match A
	//ADCSRB |=(1<<ADTS1); --Timer/Counter Compare Match A
	//ADCSRB |=(1<<ADTS0); --Timer/Counter Compare Match A

//Mérési adat feltolása a felső byte-ba
	ADMUX |=(1<<ADLAR);

//ADC engedélyezése
	ADCSRA |=(1<<ADEN);


//ADC indítása
	ADCSRA |=(1<<ADSC);


//---------------PWM-------------------
 
	DDRB = (1<<PINB0); //PB0 kimenet
 
           //timer inicializálás PWM módra
		GTCCR = 0x00; //nincs TSM
		TCCR0A = (1<<COM0A1)
				| (1<<COM0A0)    //01 = set on comp. match
				| (1<<WGM02)
				| (1<<WGM01)
				| (1<<WGM00);    //011 = Fast PWM mód
		TCCR0B = (0<<CS02)
				| (1<<CS01)
				| (1<<CS00);        //011 = clk/64 előosztás
// 
		TCNT0 = 0;    //countert nullázzuk
		OCR0A = 0;  //komparálási szintet nullázzuk


// várakozás az átalakításra
		while (1)
		{
		   		while ( ADCSRA & (1<<ADIF)){ 

				mask = ADCL;
				OCR0A = ADCH;
				//OCR0A = 127;
				m_delay_10ms(1);

				ADCSRA |=(1<<ADSC);

						};

		   			};
};
