Exemplo n.º 1
0
void gpio_irq_disable(gpio_t dev)
{
    if (gpio_enabled(dev)) {
        int pin = pin_lut[dev];
        GPIO_NUM_TO_DEV(pin)->IE &= ~GPIO_PIN_MASK(GPIO_BIT_NUM(pin));
    }
}
Exemplo n.º 2
0
void gpio_clear(gpio_t dev)
{
    int pin;

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

    pin = pin_lut[dev];
    GPIO_NUM_TO_DEV(pin)->DATA &= ~GPIO_PIN_MASK(GPIO_BIT_NUM(pin));
}
Exemplo n.º 3
0
int gpio_read(gpio_t dev)
{
    int pin;

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

    pin = pin_lut[dev];
    return (GPIO_NUM_TO_DEV(pin)->DATA >> GPIO_BIT_NUM(pin)) & 1;
}
Exemplo n.º 4
0
Arquivo: gpio.c Projeto: AnonMall/RIOT
int gpio_init_in(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_input(pin);

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

    return 0;
}
Exemplo n.º 5
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;
}