Add pullup/down mode to pinMode
ex) pinMode(pin, INPUT_PULLUP); pinMode(pin, INPUT_PULLDOWN);
This commit is contained in:
committed by
Joshua Yang
parent
53b8871ccf
commit
50e35741d1
@@ -281,10 +281,19 @@ static int _pinMode (int pin, int mode)
|
||||
switch (mode) {
|
||||
case INPUT:
|
||||
*(gpio + fsel) = (*(gpio + fsel) | (1 << shift));
|
||||
_pullUpDnControl(origPin, PUD_OFF);
|
||||
break;
|
||||
case OUTPUT:
|
||||
*(gpio + fsel) = (*(gpio + fsel) & ~(1 << shift));
|
||||
break;
|
||||
case INPUT_PULLUP:
|
||||
*(gpio + fsel) = (*(gpio + fsel) | (1 << shift));
|
||||
_pullUpDnControl(origPin, PUD_UP);
|
||||
break;
|
||||
case INPUT_PULLDOWN:
|
||||
*(gpio + fsel) = (*(gpio + fsel) | (1 << shift));
|
||||
_pullUpDnControl(origPin, PUD_DOWN);
|
||||
break;
|
||||
case SOFT_PWM_OUTPUT:
|
||||
softPwmCreate (origPin, 0, 100);
|
||||
break;
|
||||
|
||||
@@ -335,10 +335,19 @@ static int _pinMode (int pin, int mode)
|
||||
switch (mode) {
|
||||
case INPUT:
|
||||
*(gpio + fsel) = (*(gpio + fsel) | (1 << shift));
|
||||
_pullUpDnControl(origPin, PUD_OFF);
|
||||
break;
|
||||
case OUTPUT:
|
||||
*(gpio + fsel) = (*(gpio + fsel) & ~(1 << shift));
|
||||
break;
|
||||
case INPUT_PULLUP:
|
||||
*(gpio + fsel) = (*(gpio + fsel) | (1 << shift));
|
||||
_pullUpDnControl(origPin, PUD_UP);
|
||||
break;
|
||||
case INPUT_PULLDOWN:
|
||||
*(gpio + fsel) = (*(gpio + fsel) | (1 << shift));
|
||||
_pullUpDnControl(origPin, PUD_DOWN);
|
||||
break;
|
||||
case SOFT_PWM_OUTPUT:
|
||||
softPwmCreate (origPin, 0, 100);
|
||||
break;
|
||||
|
||||
@@ -286,10 +286,19 @@ static int _pinMode (int pin, int mode)
|
||||
switch (mode) {
|
||||
case INPUT:
|
||||
*(gpio[bank] + (N1_GPIO_CON_OFFSET >> 2)) &= ~(1 << gpioToShiftReg(pin));
|
||||
_pullUpDnControl(origPin, PUD_OFF);
|
||||
break;
|
||||
case OUTPUT:
|
||||
*(gpio[bank] + (N1_GPIO_CON_OFFSET >> 2)) |= (1 << gpioToShiftReg(pin));
|
||||
break;
|
||||
case INPUT_PULLUP:
|
||||
*(gpio[bank] + (N1_GPIO_CON_OFFSET >> 2)) &= ~(1 << gpioToShiftReg(pin));
|
||||
_pullUpDnControl(origPin, PUD_UP);
|
||||
break;
|
||||
case INPUT_PULLDOWN:
|
||||
*(gpio[bank] + (N1_GPIO_CON_OFFSET >> 2)) &= ~(1 << gpioToShiftReg(pin));
|
||||
_pullUpDnControl(origPin, PUD_DOWN);
|
||||
break;
|
||||
case SOFT_PWM_OUTPUT:
|
||||
softPwmCreate (origPin, 0, 100);
|
||||
break;
|
||||
|
||||
@@ -449,11 +449,22 @@ static int _pinMode (int pin, int mode)
|
||||
case INPUT:
|
||||
*(gpio + mux) = (*(gpio + mux) & ~(0xF << target));
|
||||
*(gpio + fsel) = (*(gpio + fsel) | (1 << shift));
|
||||
_pullUpDnControl(origPin, PUD_OFF);
|
||||
break;
|
||||
case OUTPUT:
|
||||
*(gpio + mux) = (*(gpio + mux) & ~(0xF << target));
|
||||
*(gpio + fsel) = (*(gpio + fsel) & ~(1 << shift));
|
||||
break;
|
||||
case INPUT_PULLUP:
|
||||
*(gpio + mux) = (*(gpio + mux) & ~(0xF << target));
|
||||
*(gpio + fsel) = (*(gpio + fsel) | (1 << shift));
|
||||
_pullUpDnControl(origPin, PUD_UP);
|
||||
break;
|
||||
case INPUT_PULLDOWN:
|
||||
*(gpio + mux) = (*(gpio + mux) & ~(0xF << target));
|
||||
*(gpio + fsel) = (*(gpio + fsel) | (1 << shift));
|
||||
_pullUpDnControl(origPin, PUD_DOWN);
|
||||
break;
|
||||
case SOFT_PWM_OUTPUT:
|
||||
softPwmCreate (origPin, 0, 100);
|
||||
break;
|
||||
|
||||
@@ -352,10 +352,12 @@ static int _pinMode (int pin, int mode)
|
||||
|
||||
switch (mode) {
|
||||
case INPUT:
|
||||
if(pin < 100)
|
||||
if(pin < 100) {
|
||||
*(gpio + fsel) &= ~(0xF << shift);
|
||||
else
|
||||
} else {
|
||||
*(gpio1 + fsel) &= ~(0xF << shift);
|
||||
}
|
||||
_pullUpDnControl(origPin, PUD_OFF);
|
||||
break;
|
||||
case OUTPUT:
|
||||
if(pin < 100) {
|
||||
@@ -366,6 +368,22 @@ static int _pinMode (int pin, int mode)
|
||||
*(gpio1 + fsel) |= (0x1 << shift);
|
||||
}
|
||||
break;
|
||||
case INPUT_PULLUP:
|
||||
if(pin < 100) {
|
||||
*(gpio + fsel) &= ~(0xF << shift);
|
||||
} else {
|
||||
*(gpio1 + fsel) &= ~(0xF << shift);
|
||||
}
|
||||
_pullUpDnControl(origPin, PUD_UP);
|
||||
break;
|
||||
case INPUT_PULLDOWN:
|
||||
if(pin < 100) {
|
||||
*(gpio + fsel) &= ~(0xF << shift);
|
||||
} else {
|
||||
*(gpio1 + fsel) &= ~(0xF << shift);
|
||||
}
|
||||
_pullUpDnControl(origPin, PUD_DOWN);
|
||||
break;
|
||||
case SOFT_PWM_OUTPUT:
|
||||
softPwmCreate (origPin, 0, 100);
|
||||
break;
|
||||
|
||||
@@ -68,11 +68,13 @@
|
||||
// Pin modes
|
||||
#define INPUT 0
|
||||
#define OUTPUT 1
|
||||
#define PWM_OUTPUT 2
|
||||
#define GPIO_CLOCK 3
|
||||
#define SOFT_PWM_OUTPUT 4
|
||||
#define SOFT_TONE_OUTPUT 5
|
||||
#define PWM_TONE_OUTPUT 6
|
||||
#define INPUT_PULLUP 2
|
||||
#define INPUT_PULLDOWN 3
|
||||
#define PWM_OUTPUT 4
|
||||
#define GPIO_CLOCK 5
|
||||
#define SOFT_PWM_OUTPUT 6
|
||||
#define SOFT_TONE_OUTPUT 7
|
||||
#define PWM_TONE_OUTPUT 8
|
||||
|
||||
#define LOW 0
|
||||
#define HIGH 1
|
||||
|
||||
Reference in New Issue
Block a user