Subversion Repositories HomeAutomation

Rev

Rev 223 | 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.  
  28. #elif defined(__AVR_ATmega88__)
  29.  
  30. #define TIMEBASE_COUNTER TCNT0
  31. #define TIMEBASE_RELOAD (F_CPU / 1000 / 64)
  32. #if (TIMEBASE_RELOAD > 255)
  33. # error System frequency too high for timebase prescaler 64.
  34. #endif
  35. #define TIMEBASE_INIT()            \
  36.     TCNT0 = TIMEBASE_RELOAD;       \
  37.     TIFR0  |= (1<<TOV0);           \
  38.     TIMSK0 |= (1<<TOIE0);          \
  39.     TCCR0B = (1<<CS01) | (1<<CS00);
  40. #define TIMEBASE_VECTOR TIMER0_OVF_vect
  41.  
  42. #define UART_INIT()                    \
  43.     UCSR0B = _BV(RXEN0)|_BV(TXEN0);    \
  44.     UBRR0L = (F_CPU / 16 / F_BAUD) - 1;
  45. #define UART_PUTCHAR(_c_)                 \
  46.     loop_until_bit_is_set(UCSR0A, UDRE0); \
  47.     UDR0 = (_c_);
  48. #define UART_GETCHAR(_c_)              \
  49.     loop_until_bit_is_set(UCSR0A, RXC0); \
  50.     (_c_) = UDR0;
  51.  
  52. #define IVSEL_REG MCUCR
  53.  
  54. #else
  55. #error AVR specifics not defined!
  56. #endif
  57.  
  58. #endif /*AVR_CFG_H_*/
  59.