#include <avr/io.h>
//#include <avr/interrupt.h>
#include <util/delay.h> /*F_CPU = 4000000; _delay_ms max = 65,535ms; _delay_us max = 192us */
#include <avr/wdt.h>

#include "pin_macros.h"



#define RED		C,0,H
#define YELLOW	C,1,H
#define GREEN	C,2,H

#define MAN_RED		C,3,H
#define MAN_GREEN	C,4,H
#define MAN_YELLOW      C,5,H

//#define PIN_RESET	D,3,H


#define _delay(x)	for(uint16_t j=x##0; j; j--){\
					_delay_ms(100);	\
					wdt_reset();	\	
					}

int main(void)
{
	//OFF(PIN_RESET);
	
	wdt_enable(WDTO_250MS);
	wdt_reset();
	
	DDRB=0xFF;
	DDRC=0xFF;
	DDRD=0xFF;
	
	OFF(RED);
	OFF(GREEN);
	OFF(YELLOW);
	OFF(MAN_RED);
	OFF(MAN_GREEN);
	OFF(MAN_YELLOW);

	_delay(1);
	ON(YELLOW);
	_delay(1);
	OFF(YELLOW);
	_delay(1);
	ON(YELLOW);
	_delay(1);
	OFF(YELLOW);
	_delay(1);
	ON(YELLOW);
	_delay(1);
	OFF(YELLOW);
	_delay(1);

        _delay(1);
	ON(MAN_YELLOW);
	_delay(1);
	OFF(MAN_YELLOW);
	_delay(1);
	ON(MAN_YELLOW);
	_delay(1);
	OFF(MAN_YELLOW);
	_delay(1);
	ON(MAN_YELLOW);
	_delay(1);
	OFF(MAN_YELLOW);
	_delay(1);	

	while(1)
	{
	
	OFF(RED);
	OFF(GREEN);
	OFF(YELLOW);
	OFF(MAN_RED);
	OFF(MAN_GREEN);
	OFF(MAN_YELLOW);

	ON(RED);
	ON(MAN_GREEN);
	_delay(20);//задержка 20 сек
		
	OFF(MAN_GREEN);
	_delay(1);// 21 секунда

	ON(MAN_GREEN);
	_delay(1);//22 секунда

	OFF(MAN_GREEN);
	_delay(1);//23 секунда

	ON(MAN_GREEN);
	_delay(1);//24 секунда

	OFF(MAN_GREEN);
	ON(YELLOW);
	_delay(1);//25 секунда
	
	ON(MAN_GREEN);
	_delay(1);//26 секунда
	
	OFF(MAN_GREEN);
	_delay(1);//27 секунда
	 
	OFF(YELLOW);//28 секунда
	OFF(RED);
	
 	ON(MAN_YELLOW);
	_delay(3);//29 секунда

	//_delay_ms(1);//задержка перед вкл зел
//--------------------------------------------
	ON(GREEN);
	ON(MAN_RED);
	_delay(150);//задержка 150 сек
	
	OFF(GREEN);
    _delay(1);//151 секунда
	
	ON(GREEN);
    _delay(1);//152 секунда
	
	OFF(GREEN);
    _delay(1);//153 секунда
	
	ON(GREEN);
    _delay(1);//154 секунда
	
	OFF(GREEN);
    _delay(1);//155 секунда
	
	ON(GREEN);
    _delay(1);//156 секунда
	
	OFF(GREEN);
	ON(YELLOW);
	_delay(3);//157 секунда
	}
	
	//ON(PIN_RESET);
	//wdt_disable();
	//wdt_enable(WDTO_15MS);
	//while(1);
	
}

