COSA
An Object-Oriented Platform for Arduino Programming
ATtinyX5.hh
Go to the documentation of this file.
1 
21 #ifndef COSA_BOARD_ARDUINO_ATTINYX5_HH
22 #define COSA_BOARD_ARDUINO_ATTINYX5_HH
23 
24 /* This board is based on ATtinyX5/ATtiny */
25 #define BOARD_ATTINYX5
26 #define BOARD_ATTINY
27 
31 #if !defined(UNUSED)
32 #define UNUSED(x) (void) (x)
33 #endif
34 
58 class Board {
59  friend class Pin;
60  friend class GPIO;
61  friend class UART;
62 private:
66  Board() {}
67 
73  static volatile uint8_t* SFR(uint8_t pin)
74  __attribute__((always_inline))
75  {
76  UNUSED(pin);
77  return (&PINB);
78  }
79 
86  static uint8_t BIT(uint8_t pin)
87  __attribute__((always_inline))
88  {
89  UNUSED(pin);
90  return (pin);
91  }
92 
98  static volatile uint8_t* PCIMR(uint8_t pin)
99  __attribute__((always_inline))
100  {
101  UNUSED(pin);
102  return (&PCMSK);
103  }
104 
109  static volatile uint8_t* USI()
110  __attribute__((always_inline))
111  {
112  return (&PINB);
113  }
114 
115 public:
119  static void init() {}
120 
124  enum DigitalPin {
125  D0 = 0, // PB0
126  D1, // PB1
127  D2, // PB2
128  D3, // PB3
129  D4, // PB4
130  D5, // PB5
131  LED = D4
132  } __attribute__((packed));
133 
137  enum AnalogPin {
138  A0 = 0, // PB5/D5
139  A1, // PB2/D2
140  A2, // PB4/D4
141  A3 // PB3/D3
142  } __attribute__((packed));
143 
147  enum Reference {
148  AVCC_REFERENCE = 0,
149  APIN_REFERENCE = _BV(REFS0),
150  A1V1_REFERENCE = _BV(REFS1),
151  A2V56_REFERENCE = (_BV(REFS2) | _BV(REFS1))
152  } __attribute__((packed));
153 
158  enum PWMPin {
159  PWM0 = D0, // PB0 => OCR0A
160  PWM1 = D1 // PB1 => OCR0B
161  } __attribute__((packed));
162 
168  EXT0 = D2 // PB2
169  } __attribute__((packed));
170 
175  PCI0 = D0, // PB0
176  PCI1 = D1, // PB1
177  PCI2 = D2, // PB2
178  PCI3 = D3, // PB3
179  PCI4 = D4, // PB4
180  PCI5 = D5 // PB5
181  } __attribute__((packed));
182 
186  enum {
187  ANALOG_PIN_MAX = 4,
188  DIGITAL_PIN_MAX = 6,
189  EXT_PIN_MAX = 1,
190  PCI_PIN_MAX = 6,
191  PWM_PIN_MAX = 2
192  };
193 
197  enum TWIPin {
198  SDA = D0, // PB0
199  SCL = D2 // PB2
200  } __attribute__((packed));
201 
205  enum SPIPin {
206  MISO = 0, // PB0/D0
207  MOSI = 1, // PB1/D1
208  SCK = 2, // PB2/D2
209  SS = 3 // PB3/D3
210  } __attribute__((packed));
211 
215  enum {
216  VBG = (_BV(MUX3) | _BV(MUX2)),
217  EXT_MAX = 1,
218  PCMSK_MAX = 1,
219  PCINT_MAX = 6
220  } __attribute__((packed));
221 };
222 
226 #define ANALOG_COMP_vect ANA_COMP_vect
227 #define PCMSK0 PCMSK
228 #define TIMSK0 TIMSK
229 #define TIMSK1 TIMSK
230 #define TIFR0 TIFR
231 #define WDTCSR WDTCR
232 
236 extern "C" {
237  void ADC_vect(void) __attribute__ ((signal));
238  void ANALOG_COMP_vect(void) __attribute__ ((signal));
239  void INT0_vect(void) __attribute__ ((signal));
240  void PCINT0_vect(void) __attribute__ ((signal));
241  void TIMER0_COMPA_vect(void) __attribute__ ((signal));
242  void TIMER0_COMPB_vect(void) __attribute__ ((signal));
243  void TIMER0_OVF_vect(void) __attribute__ ((signal));
244  void TIMER1_COMPA_vect(void) __attribute__ ((signal));
245  void TIMER1_COMPB_vect(void) __attribute__ ((signal));
246  void TIMER1_OVF_vect(void) __attribute__ ((signal));
247  void WDT_vect(void) __attribute__ ((signal));
248  void USI_START_vect(void) __attribute__ ((signal));
249  void USI_OVF_vect(void) __attribute__ ((signal));
250 }
251 
252 #endif
#define UNUSED(x)
Definition: ATtinyX5.hh:32
void INT0_vect(void)
void USI_START_vect(void)
Definition: Pin.hh:35
void ADC_vect(void)
void WDT_vect(void)
Definition: LED.hh:32
void TIMER1_COMPB_vect(void)
void TIMER0_COMPB_vect(void)
void TIMER1_COMPA_vect(void)
void PCINT0_vect(void)
void TIMER1_OVF_vect(void)
void TIMER0_OVF_vect(void)
void USI_OVF_vect(void)
ExternalInterruptPin
Definition: ATmega1284P.hh:190
Definition: UART.hh:59
void TIMER0_COMPA_vect(void)
Definition: PWMPin.hh:29
Definition: GPIO.hh:30
static void init()
Definition: ATtinyX5.hh:119
#define ANALOG_COMP_vect
Definition: ATtinyX5.hh:226