// ------------------------------------------------------------------
//
// TRAIN TIMER
// -----------
//
// Firmware for TRAIN02A board. It changes state of relay outputs
// as defined in configuration. Default configuration is in .h file
// and definitions may be changed online via USB port and if needed
// stored into EEPROM.
//
// Uses ATmega8 at 8MHz (internal RC or external XTAL)
//
// (c) miho WWW.MLAB.CZ/PermaLink/TRAIN
//
// ------------------------------------------------------------------
// Version info
#define VERSION "1.00"
#define YEAR "2013"
// Default Timers onfiguration (8 timers)
#define DEFAULT_TIMES_ON { 1, 2, 3, 4, 5, 6, 7, 8} // Time in [s] for "On"
#define DEFAULT_TIMES_OFF { 9, 8, 7, 6, 5, 4, 3, 2} // Time in [s] for "Off"
#define DEFAULT_TIMES_ON_RND { 0, 0, 0, 0, 0, 0, 0, 0} // Random adition in [s] for "On"
#define DEFAULT_TIMES_OFF_RND { 0, 0, 0, 0, 0, 0, 0, 0} // Random adition in [s] for "Off"
// Time granularity
#define F_TIME_GRAIN 100 // User Timer Time Quantum in Hz
// RS232 Config
#define BAUD 9600 // Bd
#define UART_TX0_BUFFER_SIZE 0x80 // TX FIFO - Must be power of 2 !
#define UART_RX0_BUFFER_SIZE 0x80 // RX FIFO - Must be power of 2 !
#define LINE_LENGTH 40 // Length of line
// --------------------------------
// USART RX/TX buffers
#define UART_RX0_BUFFER_MASK ( UART_RX0_BUFFER_SIZE - 1)
#define UART_TX0_BUFFER_MASK ( UART_TX0_BUFFER_SIZE - 1)
#if ( UART_RX0_BUFFER_SIZE & UART_RX0_BUFFER_MASK )
#error RX0 buffer size is not a power of 2
#endif
#if ( UART_TX0_BUFFER_SIZE & UART_TX0_BUFFER_MASK )
#error TX0 buffer size is not a power of 2
#endif
// Standard control ASCII chars
#define CR 13
#define LF 10
#define BS 8
#define DEL 127
#define ESC 27