diff --git a/hardware/arduino/sam/cores/arduino/wiring_constants.h b/hardware/arduino/sam/cores/arduino/wiring_constants.h index 0555d71b0..868d46dbd 100644 --- a/hardware/arduino/sam/cores/arduino/wiring_constants.h +++ b/hardware/arduino/sam/cores/arduino/wiring_constants.h @@ -28,6 +28,7 @@ extern "C"{ #define INPUT 0x0 #define OUTPUT 0x1 +#define INPUT_PULLUP 0x2 #define true 0x1 #define false 0x0 diff --git a/hardware/arduino/sam/cores/arduino/wiring_digital.c b/hardware/arduino/sam/cores/arduino/wiring_digital.c index 5d81034be..ac6eb18b8 100644 --- a/hardware/arduino/sam/cores/arduino/wiring_digital.c +++ b/hardware/arduino/sam/cores/arduino/wiring_digital.c @@ -41,6 +41,16 @@ extern void pinMode( uint32_t ulPin, uint32_t ulMode ) 0 ) ; break ; + case INPUT_PULLUP: + /* Enable peripheral for clocking input */ + pmc_enable_periph_clk( g_APinDescription[ulPin].ulPeripheralId ) ; + PIO_Configure( + g_APinDescription[ulPin].pPort, + PIO_INPUT, + g_APinDescription[ulPin].ulPin, + PIO_PULLUP ) ; + break ; + case OUTPUT: PIO_Configure( g_APinDescription[ulPin].pPort,