      #include <avr/io.h>
      #include <util/delay.h>
       
      //-------------------------------------
      void delay_10ms(unsigned long valm) {
      //-------------------------------------
                 while(valm--) _delay_ms(10);
      }

	  //-------------------------------------
      void delay_10us(unsigned long valu) {
      //-------------------------------------
                 while(valu--) _delay_us(10);
      }

	  //-------------------------------------

	  //-------------------------------------
	  // 16-bit Timer/Counter 1 initialization
	  //-------------------------------------
	  void InitPWM(void) {
	  		DDRB = (1<<PINB1) | (1<<PINB2) | (1<<PINB0);
			PORTB = (1<<PINB0);

			TCCR1A= (1<<COM1A1) | (1<<COM1A0) // PWM csati0: beállítja OC1A ha a komparálás megegyezik (A kimenet H szintre áll)
				|	(1<<COM1B1) | (0<<COM1B0) // PWM csati1: nullázza OC1B ha a komparálás megegyezik (A kimenet L szintre áll)
				|	(0<<FOC1A)	| (0<<FOC1B)  // PWM használatkor 0-ra állítani mind2őt
				|	(1<<WGM11)	| (1<<WGM10); // Fast PWM mód: csati0
			TCCR1B=	(1<<WGM13)	| (1<<WGM12)  // Fast PWM mód: csati1
				|	(1<<CS12)	| (0<<CS11)	| (1<<CS10); // Előosztö 1024 = 8000000/1024= 7,812Khz

			}



















      //-------------------------------------
      int main(void) {
      //-------------------------------------
      
	  InitPWM();
	  uint16_t    fel_le;
	  TCNT1 = 0;

           OCR1AL = 128;
		   OCR1AH = 128;  //komparálási szintet nullázzuk PWM csati0
           fel_le = 1; //fel

           while(1) {
               if(fel_le) {
                   if(OCR1AL<255) OCR1AL++; //addig növelem amíg nem max
                   else fel_le = !fel_le; //ha max, akkor lefelé
               }
               if(!fel_le) {
                   if(OCR1AL) OCR1AL--;   //addig csökkentem amíg >0
                   else fel_le = !fel_le; //ha min, akkor felfelé
               }
               delay_10ms(100);
           }
		            return 0;
	  	

	  }
