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) {
|
switch (mode) {
|
||||||
case INPUT:
|
case INPUT:
|
||||||
*(gpio + fsel) = (*(gpio + fsel) | (1 << shift));
|
*(gpio + fsel) = (*(gpio + fsel) | (1 << shift));
|
||||||
|
_pullUpDnControl(origPin, PUD_OFF);
|
||||||
break;
|
break;
|
||||||
case OUTPUT:
|
case OUTPUT:
|
||||||
*(gpio + fsel) = (*(gpio + fsel) & ~(1 << shift));
|
*(gpio + fsel) = (*(gpio + fsel) & ~(1 << shift));
|
||||||
break;
|
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:
|
case SOFT_PWM_OUTPUT:
|
||||||
softPwmCreate (origPin, 0, 100);
|
softPwmCreate (origPin, 0, 100);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -335,10 +335,19 @@ static int _pinMode (int pin, int mode)
|
|||||||
switch (mode) {
|
switch (mode) {
|
||||||
case INPUT:
|
case INPUT:
|
||||||
*(gpio + fsel) = (*(gpio + fsel) | (1 << shift));
|
*(gpio + fsel) = (*(gpio + fsel) | (1 << shift));
|
||||||
|
_pullUpDnControl(origPin, PUD_OFF);
|
||||||
break;
|
break;
|
||||||
case OUTPUT:
|
case OUTPUT:
|
||||||
*(gpio + fsel) = (*(gpio + fsel) & ~(1 << shift));
|
*(gpio + fsel) = (*(gpio + fsel) & ~(1 << shift));
|
||||||
break;
|
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:
|
case SOFT_PWM_OUTPUT:
|
||||||
softPwmCreate (origPin, 0, 100);
|
softPwmCreate (origPin, 0, 100);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -286,10 +286,19 @@ static int _pinMode (int pin, int mode)
|
|||||||
switch (mode) {
|
switch (mode) {
|
||||||
case INPUT:
|
case INPUT:
|
||||||
*(gpio[bank] + (N1_GPIO_CON_OFFSET >> 2)) &= ~(1 << gpioToShiftReg(pin));
|
*(gpio[bank] + (N1_GPIO_CON_OFFSET >> 2)) &= ~(1 << gpioToShiftReg(pin));
|
||||||
|
_pullUpDnControl(origPin, PUD_OFF);
|
||||||
break;
|
break;
|
||||||
case OUTPUT:
|
case OUTPUT:
|
||||||
*(gpio[bank] + (N1_GPIO_CON_OFFSET >> 2)) |= (1 << gpioToShiftReg(pin));
|
*(gpio[bank] + (N1_GPIO_CON_OFFSET >> 2)) |= (1 << gpioToShiftReg(pin));
|
||||||
break;
|
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:
|
case SOFT_PWM_OUTPUT:
|
||||||
softPwmCreate (origPin, 0, 100);
|
softPwmCreate (origPin, 0, 100);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -449,11 +449,22 @@ static int _pinMode (int pin, int mode)
|
|||||||
case INPUT:
|
case INPUT:
|
||||||
*(gpio + mux) = (*(gpio + mux) & ~(0xF << target));
|
*(gpio + mux) = (*(gpio + mux) & ~(0xF << target));
|
||||||
*(gpio + fsel) = (*(gpio + fsel) | (1 << shift));
|
*(gpio + fsel) = (*(gpio + fsel) | (1 << shift));
|
||||||
|
_pullUpDnControl(origPin, PUD_OFF);
|
||||||
break;
|
break;
|
||||||
case OUTPUT:
|
case OUTPUT:
|
||||||
*(gpio + mux) = (*(gpio + mux) & ~(0xF << target));
|
*(gpio + mux) = (*(gpio + mux) & ~(0xF << target));
|
||||||
*(gpio + fsel) = (*(gpio + fsel) & ~(1 << shift));
|
*(gpio + fsel) = (*(gpio + fsel) & ~(1 << shift));
|
||||||
break;
|
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:
|
case SOFT_PWM_OUTPUT:
|
||||||
softPwmCreate (origPin, 0, 100);
|
softPwmCreate (origPin, 0, 100);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -352,10 +352,12 @@ static int _pinMode (int pin, int mode)
|
|||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case INPUT:
|
case INPUT:
|
||||||
if(pin < 100)
|
if(pin < 100) {
|
||||||
*(gpio + fsel) &= ~(0xF << shift);
|
*(gpio + fsel) &= ~(0xF << shift);
|
||||||
else
|
} else {
|
||||||
*(gpio1 + fsel) &= ~(0xF << shift);
|
*(gpio1 + fsel) &= ~(0xF << shift);
|
||||||
|
}
|
||||||
|
_pullUpDnControl(origPin, PUD_OFF);
|
||||||
break;
|
break;
|
||||||
case OUTPUT:
|
case OUTPUT:
|
||||||
if(pin < 100) {
|
if(pin < 100) {
|
||||||
@@ -366,6 +368,22 @@ static int _pinMode (int pin, int mode)
|
|||||||
*(gpio1 + fsel) |= (0x1 << shift);
|
*(gpio1 + fsel) |= (0x1 << shift);
|
||||||
}
|
}
|
||||||
break;
|
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:
|
case SOFT_PWM_OUTPUT:
|
||||||
softPwmCreate (origPin, 0, 100);
|
softPwmCreate (origPin, 0, 100);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -68,11 +68,13 @@
|
|||||||
// Pin modes
|
// Pin modes
|
||||||
#define INPUT 0
|
#define INPUT 0
|
||||||
#define OUTPUT 1
|
#define OUTPUT 1
|
||||||
#define PWM_OUTPUT 2
|
#define INPUT_PULLUP 2
|
||||||
#define GPIO_CLOCK 3
|
#define INPUT_PULLDOWN 3
|
||||||
#define SOFT_PWM_OUTPUT 4
|
#define PWM_OUTPUT 4
|
||||||
#define SOFT_TONE_OUTPUT 5
|
#define GPIO_CLOCK 5
|
||||||
#define PWM_TONE_OUTPUT 6
|
#define SOFT_PWM_OUTPUT 6
|
||||||
|
#define SOFT_TONE_OUTPUT 7
|
||||||
|
#define PWM_TONE_OUTPUT 8
|
||||||
|
|
||||||
#define LOW 0
|
#define LOW 0
|
||||||
#define HIGH 1
|
#define HIGH 1
|
||||||
|
|||||||
Reference in New Issue
Block a user