This board is describes the Sensor Terminal Board from Dresden Electronic. It is a carrier board for the RCB family.
More...
Go to the source code of this file.
Defines |
#define | DEFAULT_SPI_RATE (SPI_RATE_1_2) |
#define | FT245_DDR DDRE |
#define | FT245_INIT() |
#define | FT245_PIN PINE |
#define | FT245_RX_HAS_DATA() (0 == (FT245_PIN & FT245_RXF)) |
#define | FT245_RXF _BV(7) |
#define | FT245_TX_IS_BLOCKED() (0 != (FT245_PIN & FT245_TXE)) |
#define | FT245_TXE _BV(6) |
#define | HIF_IO_ENABLE hif_mmio_init |
#define | HIF_NO_DATA (0x0100) |
#define | HIF_TYPE (HIF_FT245) |
#define | HIF_USB_READ() hif_usb_read() |
#define | HIF_USB_WRITE(x) hif_usb_write(x) |
#define | HWTIMER_REG (TCNT1) |
#define | HWTIMER_TICK ((1.0*HWTMR_PRESCALE)/F_CPU) |
#define | HWTIMER_TICK_NB (0xFFFFUL+1) |
#define | HWTMR_PRESCALE (1) |
#define | INVERSE_KEYS (0) |
#define | KEY_INIT hif_mmio_init |
#define | LED_CLR(ln) |
#define | LED_GET_VALUE() ((~LED_SHADOW & LED_MASK) >> LED_SHIFT) |
#define | LED_INIT() |
#define | LED_MASK (0x03) |
#define | LED_NUMBER (2) |
#define | LED_SET(ln) |
#define | LED_SET_VALUE(x) |
#define | LED_SHADOW GPIOR2 |
#define | LED_SHIFT (0) |
#define | LED_TOGGLE(ln) |
#define | LED_VAL(msk, val) |
#define | LEDS_INVERSE (1) |
#define | MASK_KEY (0x1) |
#define | PIN_KEY (hif_key_read()) |
#define | PULLUP_KEYS (0) |
#define | SHIFT_KEY (0) |
#define | TIMER_INIT() |
#define | TIMER_IRQ_vect TIMER1_OVF_vect |
#define | TIMER_POOL_SIZE (4) |
#define | TIMER_TICK (HWTIMER_TICK_NB * HWTIMER_TICK) |
Detailed Description
This board is describes the Sensor Terminal Board from Dresden Electronic. It is a carrier board for the RCB family.
The Sensor Terminal Board is a carrier board for the radio controller board family. The transceiver wiring fits the common RCBs. The wiring of the radio and the ATmega is shown below:
AVR RF230
--- -----
PB4 --> SLPTR
PD6 <-- CLKM
PD4 <-- IRQ (ICP1)
PB5 --> RSTN
PB0 --> SS
PB2 --> MOSI
PB3 <-- MISO
PB1 --> SCK
The STBxxx has memory mapped LEDS and Keys.
KEY: PE5
LEDS
- 2 x memory mapped at 0x4000 (Option 1)
- 3 x IO mapped at PE2:PE4 (Option 2)
You can select between using the LEDs on the RCB or on the STB.
In order to use the RCB LEDS, you have to define the macro USE_RCB_LEDS.
The LEDs on STB have a write-only memory interface, so we can't read back the LED status.
So we need to have a shadow register, which stores the current LED state.
Since the board interface consists only of a header file, we use register
GPIO2 on ATmega1281 for shadowing, because it would be hard to ensure the
single instantiation of a global variable from a header file, which is used
in many module files.
Fuses/Locks:
LF: 0xe2 - 8MHz internal RC Osc.
HF: 0x11 - without boot loader
HF: 0x10 - with boot loader
EF: 0xff
LOCK: 0xef - protection of boot section
Original Settings w/ rdk231
LF: 0x61
HF: 0x91
EF: 0xfe
Bootloader:
Start at byte=0x1e000, address=0xf000, size = 4096 instructions/ 8192 bytes
- Build Options
- stb230 : STB + RCB230 prior V3.2 / V3.3.1 (AT86RF230A)
- stb230b : STB + RCB230 V3.2 / RCB230 V3.3.1 (AT86RF230B)
- stb231 : STB * RCB231 V4.0.2 / RCB231ED V4.1.1
- stb212 : STB + RCB212SMA V5.3.2
Define Documentation
#define DEFAULT_SPI_RATE (SPI_RATE_1_2) |
ID String for this hardware
Value:do { \
FT245_DDR &= ~(FT245_TXE|FT245_RXF);\
} while(0)
Value:do{\
LED_SHADOW |= (_BV(ln+LED_SHIFT) & LED_MASK);\
hif_led_write(LED_SHADOW);\
}while(0)
Value:do{\
hif_mmio_init(); \
LED_SHADOW = LED_MASK;\
hif_led_write(LED_SHADOW); \
}while(0)
Value:do{\
LED_SHADOW &= ~(_BV(ln+LED_SHIFT) & LED_MASK);\
hif_led_write(LED_SHADOW);\
}while(0)
#define LED_SET_VALUE |
( |
|
x |
) |
|
Value:do{\
LED_SHADOW = (LED_SHADOW & ~LED_MASK) | ((~x<<LED_SHIFT) & LED_MASK);\
hif_led_write(LED_SHADOW);\
}while(0)
#define LED_TOGGLE |
( |
|
ln |
) |
|
Value:do{\
LED_SHADOW ^= (_BV(ln+LED_SHIFT) & LED_MASK);\
hif_led_write(LED_SHADOW);\
}while(0)
#define LED_VAL |
( |
|
msk, |
|
|
|
val | |
|
) |
| | |
Value:do{\
LED_SHADOW &= ~(LED_MASK|(msk<<LED_SHIFT)); \
LED_SHADOW |= ~(val & (LED_MASK|msk));\
hif_led_write(LED_SHADOW);\
}while(0)
Value:do{ \
TCCR1B |= _BV(CS10); \
TIMSK1 |= _BV(TOIE1); \
}while(0)
Intialization of the hardware timer T1 (16bit)
- CS1[2:0] = 1 : Prescaler = 1
- WGM1[3:0] = 0 : Mode = 4 : CTC operation
Timer is clocked at F_CPU, and TIMER_IRQ_vect is called every 65535 ticks.
#define TIMER_IRQ_vect TIMER1_OVF_vect |
Vector for Timer IRQ routine