Subversion Repositories HomeAutomation

Rev

Rev 228 | Blame | Last modification | View Log | SVN | RSS feed

  1. #ifndef AVR_CFG_H_
  2. #define AVR_CFG_H_
  3.  
  4. #if defined(__AVR_ATmega8__)
  5.  
  6. #define TIMEBASE_COUNTER TCNT0
  7. #define TIMEBASE_RELOAD (F_CPU / 1000 / 64)
  8. #define TIMEBASE_INIT()            \
  9.     TCNT0 = TIMEBASE_RELOAD;       \
  10.     TIFR  |= (1<<TOV0);            \
  11.     TIMSK |= (1<<TOIE0);           \
  12.     TCCR0 = (1<<CS01) | (1<<CS00);
  13. #define TIMEBASE_VECTOR TIMER0_OVF_vect
  14.  
  15. #define UART_INIT()                   \
  16.     UCSRB = _BV(RXEN)|_BV(TXEN);      \
  17.     UBRRL = (F_CPU / 16 / F_BAUD) - 1;
  18. #define UART_PUTCHAR(_c_)               \
  19.     loop_until_bit_is_set(UCSRA, UDRE); \
  20.     UDR = (_c_);
  21. #define UART_GETCHAR(_c_)              \
  22.     loop_until_bit_is_set(UCSRA, RXC); \
  23.     (_c_) = UDR;
  24.  
  25.  
  26. #define IVSEL_REG GICR
  27. #define INT1_REG GICR
  28.  
  29. #elif defined(__AVR_ATmega88__)
  30.  
  31. #define TIMEBASE_COUNTER TCNT0
  32. #define TIMEBASE_RELOAD (F_CPU / 1000 / 64)
  33. #if (TIMEBASE_RELOAD > 255)
  34. # error System frequency too high for timebase prescaler 64.
  35. #endif
  36. #define TIMEBASE_INIT()            \
  37.     TCNT0 = TIMEBASE_RELOAD;       \
  38.     TIFR0  |= (1<<TOV0);           \
  39.     TIMSK0 |= (1<<TOIE0);          \
  40.     TCCR0B = (1<<CS01) | (1<<CS00);
  41. #define TIMEBASE_VECTOR TIMER0_OVF_vect
  42.  
  43. #define UART_INIT()                    \
  44.     UCSR0B = _BV(RXEN0)|_BV(TXEN0);    \
  45.     UBRR0L = (F_CPU / 16 / F_BAUD) - 1;
  46. #define UART_PUTCHAR(_c_)                 \
  47.     loop_until_bit_is_set(UCSR0A, UDRE0); \
  48.     UDR0 = (_c_);
  49. #define UART_GETCHAR(_c_)              \
  50.     loop_until_bit_is_set(UCSR0A, RXC0); \
  51.     (_c_) = UDR0;
  52.  
  53. #define IVSEL_REG MCUCR
  54. #define INT1_REG EIMSK
  55.  
  56. #else
  57. #error AVR specifics not defined!
  58. #endif
  59.  
  60. #endif /*AVR_CFG_H_*/
  61.