mirror of
https://github.com/clockworkpi/WiringPi.git
synced 2026-03-23 20:32:54 +01:00
Added some tweaks to gpio to set alt modes on pins (sssh!)
This commit is contained in:
@@ -118,7 +118,6 @@ struct wiringPiNodeStruct *wiringPiNodes = NULL ;
|
||||
#define FSEL_INPT 0b000
|
||||
#define FSEL_OUTP 0b001
|
||||
#define FSEL_ALT0 0b100
|
||||
#define FSEL_ALT0 0b100
|
||||
#define FSEL_ALT1 0b101
|
||||
#define FSEL_ALT2 0b110
|
||||
#define FSEL_ALT3 0b111
|
||||
@@ -925,6 +924,32 @@ void pinEnableED01Pi (int pin)
|
||||
*********************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
* pinModeAlt:
|
||||
* This is an un-documented special to let you set any pin to any mode
|
||||
*********************************************************************************
|
||||
*/
|
||||
|
||||
void pinModeAlt (int pin, int mode)
|
||||
{
|
||||
int fSel, shift ;
|
||||
|
||||
if ((pin & PI_GPIO_MASK) == 0) // On-board pin
|
||||
{
|
||||
/**/ if (wiringPiMode == WPI_MODE_PINS)
|
||||
pin = pinToGpio [pin] ;
|
||||
else if (wiringPiMode == WPI_MODE_PHYS)
|
||||
pin = physToGpio [pin] ;
|
||||
else if (wiringPiMode != WPI_MODE_GPIO)
|
||||
return ;
|
||||
|
||||
fSel = gpioToGPFSEL [pin] ;
|
||||
shift = gpioToShift [pin] ;
|
||||
|
||||
*(gpio + fSel) = (*(gpio + fSel) & ~(7 << shift)) | ((mode & 0x7) << shift) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* pinMode:
|
||||
|
||||
@@ -129,6 +129,7 @@ extern int wiringPiSetupSys (void) ;
|
||||
extern int wiringPiSetupGpio (void) ;
|
||||
extern int wiringPiSetupPhys (void) ;
|
||||
|
||||
extern void pinModeAlt (int pin, int mode) ;
|
||||
extern void pinMode (int pin, int mode) ;
|
||||
extern void pullUpDnControl (int pin, int pud) ;
|
||||
extern int digitalRead (int pin) ;
|
||||
|
||||
Reference in New Issue
Block a user