/*MCU - ATTiny2313 @ 1000000Hz Internal Freq.*/

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>

//motor 1 H/bridge labak: PB2(OC0A), PD5(OC0B);
//motor 2 H/bridge labak: PB3(OC1A), PB4(OC1B);

/*
#define TURN_LEFT	0b00001011
#define TURN_RIGHT	0b00001110
#define	MOVE_FORWARD	0b00001010
#define ROTATE          0b00000110
#define	MOVE_BACKWARD	0b00000101
#define STOP            0b00000000
*/

void delayms(uint16_t millis) {
  while ( millis ) {
    _delay_ms(1);
    millis--;
  }
}


int main(void){

  unsigned char sensor,sw1,sw2;

  //-------------------------- I/O init----------------------------------------//
  DDRB = 0b11111100;   //PORTB  PB0, PB1 input pin, a tobbi output;
  DDRD = 0b00100000;   //PORTD  PD5 output pin, a tobbi input;
  PORTD = 0b00000011;  //belso felhuzo ellenallasok aktivalasa a kapcsolokhoz.
  //TCCR0A = 0b00000000;
  //TCCR0B = 0b00000000;
  //TCCR1A = 0b00000000;
  //TCCR1B = 0b00000000;

  while(1) {

    //PWM sebesseg allito kapcsolok ellenorzese
    sw1 = (PINB & 0b00000001);
    sw2 = (PINB & 0b00000010);

      if (sw1==0) //pwm sebesseg csokkentese mindket motornak;
      if (sw2==0) //pwm sebesseg novelese mindket motornak;

    /*sensor = (PIND & 0x07);*/
    sensor = (PIND & 0b00000111); // PD0,PD1,PD2 ellenorzes

    switch(sensor)
		{
			case 0b00000000:PORTB = MOVE_FORWARD;		//000
				  break;

			case 0b00000001:PORTB = TURN_RIGHT;		//001
				  break;

			case 0b00000010:PORTB = MOVE_FORWARD;		//010
				  break;

			case 0b00000011:PORTB = TURN_RIGHT;		//011
				  break;

			case 0b00000100:PORTB = TURN_LEFT;		//100
				  break;

			case 0b00000101:PORTB = MOVE_FORWARD;		//101
                                  break;

			case 0b00000110:PORTB = TURN_LEFT;		//110
				  break;

			case 0b00000111:PORTB = STOP;			//111
		                  break;

			default:PORTB = MOVE_FORWARD;
                                break;
		}
           }
     return 0;
  }




