1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-28 07:51:19 +01:00

cpu/atmega2560: fixes the configuration of pullup resistors in gpio.c

This commit is contained in:
Daniel Amkær Sørensen 2015-10-15 09:10:29 +02:00
parent 02e2d8c353
commit 6040531ae1

View File

@ -102,6 +102,24 @@ int gpio_init(gpio_t pin, gpio_dir_t dir, gpio_pp_t pullup)
else {
_SFR_MEM8(_ddr_addr(pin)) &= ~(1 << _pin_num(pin));
res = bit_is_clear(_SFR_MEM8(_ddr_addr(pin)), _pin_num(pin));
if (res == 0) {
return -1;
}
switch (pullup) {
case GPIO_NOPULL:
_SFR_MEM8(_port_addr(pin)) &= ~(1 << _pin_num(pin));
res = bit_is_clear(_SFR_MEM8(_port_addr(pin)), _pin_num(pin));
break;
case GPIO_PULLUP:
_SFR_MEM8(_port_addr(pin)) |= (1 << _pin_num(pin));
res = bit_is_set(_SFR_MEM8(_port_addr(pin)), _pin_num(pin));
break;
case GPIO_PULLDOWN:
/* Not supported by atmega2560 */
return -1;
}
}
return (res == 0) ? -1 : 0;
@ -121,8 +139,6 @@ int gpio_init_int(gpio_t pin, gpio_pp_t pullup, gpio_flank_t flank,
return -1;
}
gpio_set(pin);
/* clear global interrupt flag */
cli();