

// main clock frequency                
#ifndef 	CLOCK_FREQ
#define 	CLOCK_FREQ                      25000000L
#endif
#define         _DIVIDE_FACTOR                  0x0AL

// USART baud-rate, from 1,000 up to 20,000

#define		ELINMINT_BAUD		        10000L

// baud rate
#define	        _BF	                        0x04L
#define         SPBRG0                          ((_DIVIDE_FACTOR*CLOCK_FREQ)/ELINMINT_BAUD)
#define         _SPBRG1                         (SPBRG0/_BF)
#define         _SPBRG2                         (_SPBRG1+5)
#define         _SPBRG3                         (_SPBRG2/_DIVIDE_FACTOR)
#define         _SPBRG4                         (_SPBRG3-2)

#define		ELINMINT_SPBRG16	        _SPBRG4
#define		ELINMINT_SPBRG		        (ELINMINT_SPBRG16&0x00FF)
#define		ELINMINT_SPBRGH		        (ELINMINT_SPBRG16>>8)

// DO NOT exceed 255 - counter is byte size
#define         ELINMINT_MAX_MESSAGE_SIZE       16
// interrupt period in usec
#define         ELINMINT_INTERRUPT_PERIOD       20L
#define         ELINMINT_RATIO                  (((ELINMINT_BAUD*ELINMINT_INTERRUPT_PERIOD)+5000L)/10000L)

#if (100/ELINMINT_RATIO)>1
        #define ELINMINT_INTERBYTE_MIN          ((((1000L/ELINMINT_RATIO)+5L)/10L)-1)
#else
        #define ELINMINT_INTERBYTE_MIN          0
#endif

#define         ELINMINT_INTERBYTE_MAX1         (((53300L/ELINMINT_RATIO)+5L)/100L)

#if ELINMINT_INTERBYTE_MAX1>1
        #define ELINMINT_INTERBYTE_MAX          ELINMINT_INTERBYTE_MAX1-1
#else
        #define ELINMINT_INTERBYTE_MAX          ELINMINT_INTERBYTE_MAX1
#endif

// the interbyte space - number of interruption delays
#define         ELINMINT_INTERBYTE_SPACE        (ELINMINT_INTERBYTE_MIN+ELINMINT_INTERBYTE_MAX)/2

