Merge pull request #4094 from danielamkaer/atmega2560_gpio_init_fix
cpu/atmega2560: fixes the configuration of pullup resistors in gpio.c
This commit is contained in:
commit
816bef6220
@ -102,6 +102,24 @@ int gpio_init(gpio_t pin, gpio_dir_t dir, gpio_pp_t pullup)
|
|||||||
else {
|
else {
|
||||||
_SFR_MEM8(_ddr_addr(pin)) &= ~(1 << _pin_num(pin));
|
_SFR_MEM8(_ddr_addr(pin)) &= ~(1 << _pin_num(pin));
|
||||||
res = bit_is_clear(_SFR_MEM8(_ddr_addr(pin)), _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;
|
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;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
gpio_set(pin);
|
|
||||||
|
|
||||||
/* clear global interrupt flag */
|
/* clear global interrupt flag */
|
||||||
cli();
|
cli();
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user