Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00099 #if defined(stb230)
00100 # define BOARD_TYPE (BOARD_STB230)
00101 # define BOARD_NAME "stb230"
00102 # define RADIO_TYPE (RADIO_AT86RF230A)
00103 #elif defined(stb230b)
00104 # define BOARD_TYPE (BOARD_STB230B)
00105 # define BOARD_NAME "stb230b"
00106 # define RADIO_TYPE (RADIO_AT86RF230B)
00107 #elif defined(stb231)
00108 # define BOARD_TYPE (BOARD_STB231)
00109 # define BOARD_NAME "stb231"
00110 # define RADIO_TYPE (RADIO_AT86RF231)
00111 #elif defined(stb212)
00112 # define BOARD_TYPE (BOARD_STB212)
00113 # define BOARD_NAME "stb212"
00114 # define RADIO_TYPE (RADIO_AT86RF212)
00115 #endif
00116
00117 #ifndef BOARD_STB2XX_H
00118 #define BOARD_STB2XX_H
00119
00120
00121 #ifndef DEFAULT_SPI_RATE
00122 # define DEFAULT_SPI_RATE (SPI_RATE_1_2)
00123 #endif
00124
00125
00126 #if BOARD_TYPE == BOARD_STB230 || BOARD_TYPE == BOARD_STB230B
00127 # include "base_rdk230.h"
00128 #else
00129 # include "base_rdk2xx.h"
00130 #endif
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148 static inline void hif_mmio_init(void)
00149 {
00150 DDRC |= 0xc0;
00151 PORTC = (PORTC & ~0xc0) | 0x80;
00152
00153 PORTG &= ~0x05;
00154
00155
00156
00157 PORTG |= 0x02;
00158 DDRG |= 0x07;
00159 }
00160
00161 static inline void hif_usb_write(uint8_t val)
00162 {
00163 DDRA = 0xFF;
00164 PORTA = val;
00165 PORTC = (PORTC & ~0xc0);
00166 __asm volatile("nop");
00167 PORTC = (PORTC & ~0xc0) | 0x80;
00168 DDRA = 0;
00169 PORTA = 0;
00170 }
00171
00172 static inline uint8_t hif_usb_read(void)
00173 {
00174 PORTG |= 0x01;
00175 PORTC = (PORTC & ~0xc0);
00176 PORTG &= ~0x02;
00177 PORTG |= 0x02;
00178 __asm volatile("nop");
00179 uint8_t rv = PINA;
00180 PORTC = (PORTC & ~0xc0) | 0x80;
00181 PORTG &= ~0x01;
00182
00183 return rv;
00184 }
00185
00186
00187 static inline void hif_led_write(uint8_t val)
00188 {
00189 PORTG |= 0x01;
00190 DDRA = 0xFF;
00191 PORTA = val;
00192 PORTC = (PORTC & ~0xc0) | 0x40;
00193 PORTG &= ~0x01;
00194 PORTG |= 0x01;
00195 __asm volatile("nop");
00196 PORTC = (PORTC & ~0xc0) | 0x80;
00197 DDRA = 0;
00198 PORTA = 0;
00199 PORTG &= ~0x01;
00200 }
00201
00202 static inline uint8_t hif_key_read(void)
00203 {
00204 PORTG |= 0x01;
00205 PORTC = (PORTC & ~0xc0) | 0x40;
00206 PORTG &= ~0x02;
00207 PORTG |= 0x02;
00208 __asm volatile("nop");
00209 uint8_t rv = PINA;
00210 PORTC = (PORTC & ~0xc0) | 0x80;
00211 PORTG &= ~0x01;
00212
00213 return rv;
00214 }
00215
00216
00217 #if !defined(USE_RCB_LEDS)
00218
00219
00220 # define LED_SHADOW GPIOR2
00221 # define LED_MASK (0x03)
00222 # define LED_SHIFT (0)
00223 # define LEDS_INVERSE (1)
00224 # define LED_NUMBER (2)
00225
00226 # define LED_INIT()\
00227 do{\
00228 hif_mmio_init(); \
00229 LED_SHADOW = LED_MASK;\
00230 hif_led_write(LED_SHADOW); \
00231 }while(0)
00232
00233 # define LED_SET_VALUE(x) \
00234 do{\
00235 LED_SHADOW = (LED_SHADOW & ~LED_MASK) | ((~x<<LED_SHIFT) & LED_MASK);\
00236 hif_led_write(LED_SHADOW);\
00237 }while(0)
00238
00239 # define LED_GET_VALUE()\
00240 ((~LED_SHADOW & LED_MASK) >> LED_SHIFT)
00241
00242 # define LED_SET(ln)\
00243 do{\
00244 LED_SHADOW &= ~(_BV(ln+LED_SHIFT) & LED_MASK);\
00245 hif_led_write(LED_SHADOW);\
00246 }while(0)
00247
00248 # define LED_CLR(ln)\
00249 do{\
00250 LED_SHADOW |= (_BV(ln+LED_SHIFT) & LED_MASK);\
00251 hif_led_write(LED_SHADOW);\
00252 }while(0)
00253
00254 # define LED_VAL(msk,val)\
00255 do{\
00256 LED_SHADOW &= ~(LED_MASK|(msk<<LED_SHIFT)); \
00257 LED_SHADOW |= ~(val & (LED_MASK|msk));\
00258 hif_led_write(LED_SHADOW);\
00259 }while(0)
00260
00261
00262 # define LED_TOGGLE(ln)\
00263 do{\
00264 LED_SHADOW ^= (_BV(ln+LED_SHIFT) & LED_MASK);\
00265 hif_led_write(LED_SHADOW);\
00266 }while(0)
00267
00268 #else
00269
00270 # define LED_PORT PORTE
00271 # define LED_DDR DDRE
00272 # define LED_MASK (0x1c)
00273 # define LED_SHIFT (2)
00274 # define LEDS_INVERSE (1)
00275 # define LED_NUMBER (3)
00276 #endif
00277
00278 #define PIN_KEY (hif_key_read())
00279 #define MASK_KEY (0x1)
00280 #define SHIFT_KEY (0)
00281 #define INVERSE_KEYS (0)
00282 #define PULLUP_KEYS (0)
00283 #define KEY_INIT hif_mmio_init
00284
00285
00286 #define HIF_TYPE (HIF_FT245)
00287 #define HIF_IO_ENABLE hif_mmio_init
00288 #define HIF_USB_READ() hif_usb_read()
00289 #define HIF_USB_WRITE(x) hif_usb_write(x)
00290 #define HIF_NO_DATA (0x0100)
00291 #define FT245_DDR DDRE
00292 #define FT245_PIN PINE
00293 #define FT245_TXE _BV(6)
00294 #define FT245_RXF _BV(7)
00295 #define FT245_INIT() do { \
00296 FT245_DDR &= ~(FT245_TXE|FT245_RXF);\
00297 } while(0)
00298 #define TX_IS_READY (0)
00299 #define TX_IS_BLOCKED (FT245_TXE)
00300 #define RX_HAS_DATA (0)
00301 #define RX_HAS_NO_DATA (FT245_RXF)
00302 #define FT245_RX_DATA() ((FT245_PIN & FT245_RXF))
00303 #define FT245_TX_DATA() ((FT245_PIN & FT245_TXE))
00304
00305
00306 #define HWTMR_PRESCALE (1)
00307 #define HWTIMER_TICK ((1.0*HWTMR_PRESCALE)/F_CPU)
00308 #define HWTIMER_TICK_NB (0xFFFFUL+1)
00309 #define HWTIMER_REG (TCNT1)
00310 #define TIMER_TICK (HWTIMER_TICK_NB * HWTIMER_TICK)
00311 #define TIMER_POOL_SIZE (4)
00312
00314 #define TIMER_IRQ_vect TIMER1_OVF_vect
00315
00325 # define TIMER_INIT() \
00326 do{ \
00327 TCCR1B |= _BV(CS10); \
00328 TIMSK1 |= _BV(TOIE1); \
00329 }while(0)
00330
00331 #endif