Ejemplo n.º 1
0
Archivo: gpio.c Proyecto: AnonMall/RIOT
int gpio_init_out(gpio_t dev, gpio_pp_t pushpull)
{
    int pin;

    if (!gpio_enabled(dev)) {
        return -1;
    }

    pin = pin_lut[dev];
    gpio_software_control(pin);
    gpio_dir_output(pin);

    /* configure the pin's pull resistor state */
    IOC_PXX_OVER[pin] = IOC_OVERRIDE_OE | ioc_mask_lut[pushpull];

    return 0;
}
Ejemplo n.º 2
0
int gpio_init(gpio_t dev, gpio_mode_t mode)
{
    int pin;

    if (!gpio_enabled(dev)) {
        return -1;
    }

    pin = pin_lut[dev];
    gpio_software_control(pin);

    switch (mode) {
        case GPIO_IN:
            gpio_dir_input(pin);
            /* configure the pin's pull resistor state */
            IOC_PXX_OVER[pin] = (IOC_OVERRIDE_DIS);
            break;
        case GPIO_IN_PD:
            gpio_dir_input(pin);
            /* configure the pin's pull resistor state */
            IOC_PXX_OVER[pin] = (IOC_OVERRIDE_PDE);
            break;
        case GPIO_IN_PU:
            gpio_dir_input(pin);
            /* configure the pin's pull resistor state */
            IOC_PXX_OVER[pin] = (IOC_OVERRIDE_PUE);
            break;
        case GPIO_OUT:
            gpio_dir_output(pin);
            /* configure the pin's pull resistor state */
            IOC_PXX_OVER[pin] = (IOC_OVERRIDE_OE);
            break;
        default:
            return -1;
    }

    return 0;
}
Ejemplo n.º 3
0
static void assert_scl(void) {
    cc2538_gpio_clear(I2C_0_SCL_PIN);
    IOC_PXX_OVER[I2C_0_SCL_PIN] |= IOC_OVERRIDE_OE;
    gpio_dir_output(I2C_0_SCL_PIN);
    gpio_software_control(I2C_0_SCL_PIN);
}