@@ -37,21 +37,20 @@ extern void __pinMode(uint8_t pin, uint8_t mode) {
37
37
GPEC = (1 << pin ); //Disable
38
38
GPF (pin ) = GPFFS ((mode >> 4 ) & 0x07 );
39
39
if (pin == 13 && mode == FUNCTION_4 ) GPF (pin ) |= (1 << GPFPU );//enable pullup on RX
40
- } else if (mode == OUTPUT ){
40
+ } else if (mode == OUTPUT || mode == OUTPUT_OPEN_DRAIN ){
41
41
GPF (pin ) = GPFFS (GPFFS_GPIO (pin ));//Set mode to GPIO
42
42
GPC (pin ) = (GPC (pin ) & (0xF << GPCI )); //SOURCE(GPIO) | DRIVER(NORMAL) | INT_TYPE(UNCHANGED) | WAKEUP_ENABLE(DISABLED)
43
+ if (mode == OUTPUT_OPEN_DRAIN ) GPC (pin ) |= (1 << GPCD );
43
44
GPES = (1 << pin ); //Enable
44
45
} else if (mode == INPUT || mode == INPUT_PULLUP || mode == INPUT_PULLDOWN ){
45
46
GPF (pin ) = GPFFS (GPFFS_GPIO (pin ));//Set mode to GPIO
46
- GPC (pin ) = (GPC (pin ) & (0xF << GPCI )) | (1 << GPCD ); //SOURCE(GPIO) | DRIVER(OPEN_DRAIN) | INT_TYPE(UNCHANGED) | WAKEUP_ENABLE(DISABLED)
47
47
GPEC = (1 << pin ); //Disable
48
- if (mode == INPUT_PULLUP ) {
49
- GPF (pin ) &= ~(1 << GPFPD ); // Disable Pulldown
50
- GPF (pin ) |= (1 << GPFPU ); // Enable Pullup
51
- } else if (mode == INPUT_PULLDOWN ) {
52
- GPF (pin ) &= ~(1 << GPFPU ); // Disable Pullup
53
- GPF (pin ) |= (1 << GPFPD ); // Enable Pulldown
54
- }
48
+ GPC (pin ) = (GPC (pin ) & (0xF << GPCI )) | (1 << GPCD ); //SOURCE(GPIO) | DRIVER(OPEN_DRAIN) | INT_TYPE(UNCHANGED) | WAKEUP_ENABLE(DISABLED)
49
+ if (mode == INPUT_PULLUP ) {
50
+ GPF (pin ) |= (1 << GPFPU ); // Enable Pullup
51
+ } else if (mode == INPUT_PULLDOWN ) {
52
+ GPF (pin ) |= (1 << GPFPD ); // Enable Pulldown
53
+ }
55
54
}
56
55
} else if (pin == 16 ){
57
56
GPF16 = GP16FFS (GPFFS_GPIO (pin ));//Set mode to GPIO
0 commit comments