4 * Created on: 17.7.2015
10 static gioPORT_t *gio_reg[] = {
12 [GIO_PORT_DMM] = dmmPORT,
14 [GIO_PORT_GIOA] = gioPORTA,
15 [GIO_PORT_GIOB] = gioPORTB,
16 [GIO_PORT_HET1] = hetPORT1,
17 [GIO_PORT_HET2] = hetPORT2,
20 void gio_set(uint32_t pin_dsc, boolean_t value)
23 gio_reg[gio_port(pin_dsc)]->DSET = (1 << (pin_dsc & GIO_PIN_NUM_MASK));
25 gio_reg[gio_port(pin_dsc)]->DCLR = (1 << (pin_dsc & GIO_PIN_NUM_MASK));
28 boolean_t gio_get(uint32_t pin_dsc)
30 return ((gio_reg[gio_port(pin_dsc)]->DIN) >> (pin_dsc & GIO_PIN_NUM_MASK)) & 1;
33 void gio_setup(uint32_t pin_dsc)
35 gioPORT_t *gioPort = gio_reg[gio_port(pin_dsc)];
36 uint32_t pin_bit = 1 << (pin_dsc & GIO_PIN_NUM_MASK);
38 if (pin_dsc & GIO_PIN_CONF_OD_MASK)
39 gioPort->PDR |= pin_bit;
41 gioPort->PDR &= ~pin_bit;
43 if (pin_dsc & GIO_PIN_CONF_INIT_HIGH)
44 gioPort->DSET |= pin_bit;
46 gioPort->DCLR |= pin_bit;
48 if (pin_dsc & GIO_PIN_CONF_MODE_PTYPE_MASK)
49 gioPort->PSL |= pin_bit;
51 gioPort->PSL &= ~pin_bit;
53 if (pin_dsc & GIO_PIN_CONF_MODE_PEN_MASK)
54 gioPort->PULDIS |= pin_bit;
56 gioPort->PULDIS &= ~pin_bit;
58 if (pin_dsc & GIO_PIN_CONF_SET_DIR) {
59 if ((pin_dsc & GIO_PIN_CONF_DIR_MASK) ==
60 (GIO_PIN_CONF_DIR_OUT & GIO_PIN_CONF_DIR_MASK))
61 gioPort->DIR |= pin_bit;
63 gioPort->DIR &= ~pin_bit;