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
00030
00031
00090 # define BOARD_TYPE (BOARD_MUSE231)
00091 # define BOARD_NAME "Multisensor 231"
00092 # define RADIO_TYPE (RADIO_AT86RF231)
00094 #ifndef BOARD_MUSE231_H
00095 #define BOARD_MUSE231_H (1)
00096
00097
00098 #ifndef DEFAULT_SPI_RATE
00099 # define DEFAULT_SPI_RATE (SPI_RATE_1_2)
00100 #endif
00101
00102
00103
00104
00105
00106 #define DDR_TRX_RESET DDRC
00107 #define PORT_TRX_RESET PORTC
00108 #define MASK_TRX_RESET (_BV(1))
00109
00110
00111
00112 #define PORT_TRX_SLPTR PORTC
00113 #define DDR_TRX_SLPTR DDRC
00114 #define MASK_TRX_SLPTR (_BV(0))
00115
00116
00117
00118
00119
00120
00121 #define ACC_IRQ_DDR DDRD
00122 #define ACC_IRQ_PORT PORTD
00123 #define ACC_IRQ_PIN PIND
00124 #define ACC_IRQ_bp (2)
00125 #define ACC_IRQ_ASIN() do{ ACC_IRQ_DDR &= ~_BV(ACC_IRQ_bp); }while(0)
00126 #define ACC_IRQ_ASOUT() do{ ACC_IRQ_DDR |= _BV(ACC_IRQ_bp); }while(0)
00127 #define ACC_IRQ_LO() do{ ACC_IRQ_PORT &= ~_BV(ACC_IRQ_bp); }while(0)
00128 #define ACC_IRQ_HI() do{ ACC_IRQ_PORT |= _BV(ACC_IRQ_bp); }while(0)
00129 #define ACC_IRQ_STATE() ( (ACC_IRQ_PIN & _BV(ACC_IRQ_bp)) != 0)
00130
00131
00132
00133 #define TRX_IRQ_PORT (PORTD)
00134 #define TRX_IRQ_DDR (DDRD)
00135 #define TRX_IRQ_PIN (PIND)
00136 #define TRX_IRQ_bp (5)
00137
00138 # define TRX_IRQ 0x00
00139 # define TRX_IRQ_vect PCINT2_vect
00140 # define ACC_IRQ_vect INT0_vect
00145 # define TRX_IRQ_INIT() do{ PCICR |= _BV(PCIE2); } while(0)
00146
00147 #define DI_TRX_IRQ() { PCMSK2 &= ~_BV(PCINT21); }
00148
00149 #define EI_TRX_IRQ() { PCMSK2 |= _BV(PCINT21); }
00150
00152 #define ACC_IRQ_INIT() do{ EICRA |= _BV(ISC00) | _BV(ISC01); }while(0)
00153
00154 #define EI_ACC_IRQ() do{ EIFR |= _BV(INTF0); \
00155 EIMSK |= _BV(INT0);}while(0)
00156
00157 #define DI_ACC_IRQ() do{ EIMSK &= ~_BV(INT0); }while(0)
00158
00159
00160 #define SPI_TYPE SPI_TYPE_SPI
00161 #define DDR_SPI (DDRB)
00162 #define PORT_SPI (PORTB)
00164 #define SPI_MOSI _BV(PB3)
00165 #define SPI_MISO _BV(PB4)
00166 #define SPI_SCK _BV(PB5)
00167 #define SPI_SS _BV(PB0)
00170 #define SPI_DATA_REG SPDR
00176 static inline void SPI_INIT(uint8_t spirate)
00177 {
00178
00179
00180
00181 PORT_SPI |= _BV(PB2);
00182
00183 PORT_SPI |= SPI_SS | SPI_MISO | SPI_MOSI | SPI_SCK;
00184 DDR_SPI |= SPI_MOSI | SPI_SCK | SPI_SS;
00185 DDR_SPI &= ~SPI_MISO;
00186
00187 SPCR = (_BV(SPE) | _BV(MSTR));
00188
00189 SPCR &= ~(_BV(SPR1) | _BV(SPR0) );
00190 SPSR &= ~_BV(SPI2X);
00191
00192 SPCR |= (spirate & 0x03);
00193 SPSR |= ((spirate >> 2) & 0x01);
00194 }
00195
00197 #define SPI_SELN_LOW() uint8_t sreg = SREG; cli(); PORT_SPI &=~SPI_SS
00198
00199 #define SPI_SELN_HIGH() PORT_SPI |= SPI_SS; SREG = sreg
00200
00201 #define SPI_WAITFOR() do { while((SPSR & _BV(SPIF)) == 0);} while(0)
00202
00203
00204
00205 #define LED_PORT PORTD
00206 #define LED_DDR DDRD
00207 #define LED_MASK (0x18)
00208 #define LED_SHIFT (3)
00209 #define LEDS_INVERSE (1)
00211 #define LED_NUMBER (1)
00213
00214 #define LED_PIN PIND
00215 #define LED_ANODE_bp (3)
00216 #define LED_CATHODE_bp (4)
00218
00219 #define NO_KEYS (1)
00221
00222
00223 #define HIF_TYPE HIF_NONE
00224
00225
00226 #define HWTMR_PRESCALE (1)
00227 #define HWTIMER_TICK ((1.0*HWTMR_PRESCALE)/F_CPU)
00228 #define HWTIMER_TICK_NB (0xFFFFUL)
00229 #define HWTIMER_REG (TCNT1)
00230 #define TIMER_TICK (HWTIMER_TICK_NB * HWTIMER_TICK)
00231 #define TIMER_POOL_SIZE (4)
00232 #define TIMER_INIT() \
00233 do{ \
00234 TCCR1B |= (_BV(CS10)); \
00235 TIMSK1 |= _BV(TOIE1); \
00236 }while(0)
00237 # define TIMER_IRQ_vect TIMER1_OVF_vect
00238
00239
00240
00241 #define BOARD_HAS_ACC_MMA7455_I2C (1)
00243 #define BOARD_ACC_MMA7455_I2CADDR (0x3A)
00244 #define BOARD_SHT21_I2CADDR (0x80)
00245
00246 #endif