Defines

# board_stb.h File Reference

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_DATA() ((FT245_PIN & FT245_RXF))
#define | FT245_RXF _BV(7)
#define | FT245_TX_DATA() ((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 | RX_HAS_DATA (0)
#define | RX_HAS_NO_DATA (FT245_RXF)
#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)
#define | TX_IS_BLOCKED (FT245_TXE)
#define | TX_IS_READY (0)

## 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

#define FT245_INIT | ( |  | ) |

Value:

    do { \
               FT245_DDR &= ~(FT245_TXE|FT245_RXF);\
            } while(0)

#define LED_CLR | ( |  | ln | ) |

Value:

    do{\
                LED_SHADOW |= (_BV(ln+LED_SHIFT) & LED_MASK);\
                hif_led_write(LED_SHADOW);\
            }while(0)

#define LED_INIT | ( |  | ) |

Value:

    do{\
                hif_mmio_init(); \
                LED_SHADOW = LED_MASK;\
                hif_led_write(LED_SHADOW);        \
            }while(0)

#define LED_SET | ( |  | ln | ) |

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)

#define TIMER_INIT | ( |  | ) |

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