From: Gordon Henderson Date: Tue, 2 Oct 2012 13:32:12 +0000 (+0100) Subject: Updating gpio manual page X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=wiringPi.git;a=commitdiff_plain;h=86a5c68e087ecc7daa7d511968d9c7843a4910eb Updating gpio manual page --- diff --git a/examples/Makefile b/examples/Makefile index 450e0dc..16bf7e2 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -39,7 +39,12 @@ SRC = test1.c test2.c speed.c lcd.c wfi.c piface.c gertboard.c nes.c delayTest.c OBJ = test1.o test2.o speed.o lcd.o wfi.o piface.o gertboard.o nes.o delayTest.o softPwm.o -all: test1 test2 speed lcd wfi piface gertboard nes softPwm +BINS = test1 test2 speed lcd wfi piface gertboard nes delayTest softPwm + +all: + @cat README.TXT + @echo " $(BINS)" | fmt + @echo "" test1: test1.o @echo [link] @@ -77,7 +82,6 @@ softPwm: softPwm.o @echo [link] $(CC) -o $@ softPwm.o $(LDFLAGS) $(LIBS) -lm -lpthread - delayTest: delayTest.o @echo [link] $(CC) -o $@ delayTest.o $(LDFLAGS) $(LIBS) diff --git a/gpio/Makefile b/gpio/Makefile index a92dd5f..cd56e5e 100644 --- a/gpio/Makefile +++ b/gpio/Makefile @@ -41,7 +41,7 @@ OBJ = gpio.o all: gpio -gpio: gpio.o /usr/local/lib/libwiringPi.a +gpio: gpio.o /usr/local/lib/libwiringPi.a /usr/local/lib/libwiringPi.so.1.0 @echo [LD] @$(CC) -o $@ gpio.o $(LDFLAGS) $(LIBS) @@ -60,11 +60,14 @@ depend: makedepend -Y $(SRC) install: - cp gpio /usr/local/bin - chown root.root /usr/local/bin/gpio - chmod 4755 /usr/local/bin/gpio - mkdir -p /usr/local/man/man1 - cp gpio.1 /usr/local/man/man1 + @echo -n "Installing... " + @cp gpio /usr/local/bin + @chown root.root /usr/local/bin/gpio + @chmod 4755 /usr/local/bin/gpio + @mkdir -p /usr/local/man/man1 + @cp gpio.1 /usr/local/man/man1 + @echo "Done." + uninstall: rm -f /usr/local/bin/gpio diff --git a/gpio/gpio.1 b/gpio/gpio.1 index bc8e36e..ba0183f 100644 --- a/gpio/gpio.1 +++ b/gpio/gpio.1 @@ -48,9 +48,9 @@ channel value .SH DESCRIPTION .B GPIO -is a swiss army knofe of a command line tool to allow the user easy +is a swiss army knife of a command line tool to allow the user easy access to the GPIO pins on the Raspberry Pi and the SPI A/D and D/A -convertors on the Gertboard. It's designed for simple testing and +converters on the Gertboard. It's designed for simple testing and diagnostic purposes, but can be used in shell scripts for general if somewhat slow control of the GPIO pins. @@ -122,7 +122,7 @@ the direction to input and set the edge interrupt method to \fInone\fR, above and note that \fBBCM_GPIO\fR pin number is used not not wiringPi pin numbering. -Like the export commands abovem ownership is set to that of the +Like the export commands above, ownership is set to that of the calling user, allowing subsequent access from user programs without requiring root/sudo. @@ -155,7 +155,7 @@ the associated /dev/ entries so that the current user has access to them. .B gbr channel -This reads the analog to digital convertor on the Gertboard on the given +This reads the analog to digital converter on the Gertboard on the given channel. The board jumpers need to be in-place to do this operation. .TP @@ -163,7 +163,7 @@ channel. The board jumpers need to be in-place to do this operation. channel value This writes the supplied value to the output channel on the Gertboards -SPI digital to analogue convertor. +SPI digital to analogue converter. The board jumpers need to be in-place to do this operation. @@ -171,26 +171,30 @@ The board jumpers need to be in-place to do this operation. .PP .TS -r r l. -WiringPi GPIO Function +r r r l. +WiringPi GPIO-r1 GPIO-r2 Function _ -0 17 -1 18 (PWM) -2 21 -3 22 -4 23 -5 24 -6 25 -7 4 -8 0 SDA0 -9 1 SCL0 -10 8 SPI CE0 -11 7 SPI CE1 -12 10 SPI MOSI -13 9 SPI MISO -14 11 SPI SCLK -15 14 TxD -16 15 RxD +0 17 17 +1 18 18 (PWM) +2 21 27 +3 22 22 +4 23 23 +5 24 24 +6 25 25 +7 4 4 +8 0 2 I2C: SDA0 +9 1 3 I2C: SCL0 +10 8 8 SPI: CE0 +11 7 7 SPI: CE1 +12 10 10 SPI: MOSI +13 9 9 SPI: MISO +14 11 11 SPI: SCLK +15 14 14 TxD +16 15 16 RxD +17 - 28 +18 - 29 +19 - 30 +20 - 31 .TE .SH FILES diff --git a/gpio/gpio.c b/gpio/gpio.c index 8b15eea..b3534c8 100644 --- a/gpio/gpio.c +++ b/gpio/gpio.c @@ -40,7 +40,7 @@ # define FALSE (1==2) #endif -#define VERSION "1.2" +#define VERSION "1.3" static int wpMode ; @@ -753,7 +753,7 @@ int main (int argc, char *argv []) if (argc == 1) { - fprintf (stderr, "%s: %s\n", argv [0], usage) ; + fprintf (stderr, "%s\n", usage) ; return 1 ; } @@ -769,6 +769,8 @@ int main (int argc, char *argv []) printf ("Copyright (c) 2012 Gordon Henderson\n") ; printf ("This is free software with ABSOLUTELY NO WARRANTY.\n") ; printf ("For details type: %s -warranty\n", argv [0]) ; + printf ("\n") ; + printf ("This Raspberry Pi is a revision %d board.\n", piBoardRev ()) ; return 0 ; } @@ -807,9 +809,8 @@ int main (int argc, char *argv []) else if (strcasecmp (argv [1], "unexportall") == 0) { doUnexportall (argc, argv) ; return 0 ; } else if (strcasecmp (argv [1], "unexport" ) == 0) { doUnexport (argc, argv) ; return 0 ; } -// Check for drive or load commands: +// Check for load command: - if (strcasecmp (argv [1], "drive") == 0) { doPadDrive (argc, argv) ; return 0 ; } if (strcasecmp (argv [1], "load" ) == 0) { doLoad (argc, argv) ; return 0 ; } // Gertboard commands @@ -861,14 +862,15 @@ int main (int argc, char *argv []) wpMode = WPI_MODE_PINS ; } -// Check for PWM operations +// Check for PWM or Pad Drive operations if (wpMode != WPI_MODE_PIFACE) { - if (strcasecmp (argv [1], "pwm-bal") == 0) { doPwmMode (PWM_MODE_BAL) ; return 0 ; } - if (strcasecmp (argv [1], "pwm-ms") == 0) { doPwmMode (PWM_MODE_MS) ; return 0 ; } - if (strcasecmp (argv [1], "pwmr") == 0) { doPwmRange (argc, argv) ; return 0 ; } - if (strcasecmp (argv [1], "pwmc") == 0) { doPwmClock (argc, argv) ; return 0 ; } + if (strcasecmp (argv [1], "pwm-bal") == 0) { doPwmMode (PWM_MODE_BAL) ; return 0 ; } + if (strcasecmp (argv [1], "pwm-ms") == 0) { doPwmMode (PWM_MODE_MS) ; return 0 ; } + if (strcasecmp (argv [1], "pwmr") == 0) { doPwmRange (argc, argv) ; return 0 ; } + if (strcasecmp (argv [1], "pwmc") == 0) { doPwmClock (argc, argv) ; return 0 ; } + if (strcasecmp (argv [1], "drive") == 0) { doPadDrive (argc, argv) ; return 0 ; } } // Check for wiring commands diff --git a/wiringPi/Makefile b/wiringPi/Makefile index dc189cd..2d7967f 100644 --- a/wiringPi/Makefile +++ b/wiringPi/Makefile @@ -21,14 +21,17 @@ # along with wiringPi. If not, see . ################################################################################# +DYN_VERS_MAJ=1 +DYN_VERS_MIN=0 -TARGET=libwiringPi.a +STATIC=libwiringPi.a +DYNAMIC=libwiringPi.so.$(DYN_VERS_MAJ).$(DYN_VERS_MIN) #DEBUG = -g -O0 -DEBUG = -O3 +DEBUG = -O2 CC = gcc INCLUDE = -I. -CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe +CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe -fPIC LIBS = @@ -45,20 +48,25 @@ OBJ = wiringPi.o wiringPiFace.o wiringSerial.o wiringShift.o \ piNes.o \ lcd.o piHiPri.o piThread.o softPwm.o wiringPiSPI.o -all: $(TARGET) +all: $(STATIC) $(DYNAMIC) -$(TARGET): $(OBJ) - @echo [AR] $(OBJ) - @ar rcs $(TARGET) $(OBJ) - @ranlib $(TARGET) - @size $(TARGET) +$(STATIC): $(OBJ) + @echo [STATIC] + @ar rcs $(STATIC) $(OBJ) + @ranlib $(STATIC) + +# @size $(STATIC) + +$(DYNAMIC): $(OBJ) + @echo [DYNAMIC] + @gcc -shared -Wl,-soname,libwiringPi.so.1 -o libwiringPi.so.1.0 -lpthread $(OBJ) .c.o: @echo [CC] $< @$(CC) -c $(CFLAGS) $< -o $@ clean: - rm -f $(OBJ) $(TARGET) *~ core tags Makefile.bak + rm -f $(OBJ) *~ core tags Makefile.bak libwiringPi.* tags: $(SRC) @echo [ctags] @@ -69,27 +77,34 @@ depend: install: $(TARGET) @echo [install] - install -m 0755 -d /usr/local/lib - install -m 0755 -d /usr/local/include - install -m 0644 wiringPi.h /usr/local/include - install -m 0644 wiringSerial.h /usr/local/include - install -m 0644 wiringShift.h /usr/local/include - install -m 0644 gertboard.h /usr/local/include - install -m 0644 piNes.h /usr/local/include - install -m 0644 softPwm.h /usr/local/include - install -m 0644 lcd.h /usr/local/include - install -m 0644 wiringPiSPI.h /usr/local/include - install -m 0644 libwiringPi.a /usr/local/lib + @install -m 0755 -d /usr/local/lib + @install -m 0755 -d /usr/local/include + @install -m 0644 wiringPi.h /usr/local/include + @install -m 0644 wiringSerial.h /usr/local/include + @install -m 0644 wiringShift.h /usr/local/include + @install -m 0644 gertboard.h /usr/local/include + @install -m 0644 piNes.h /usr/local/include + @install -m 0644 softPwm.h /usr/local/include + @install -m 0644 lcd.h /usr/local/include + @install -m 0644 wiringPiSPI.h /usr/local/include + @install -m 0644 libwiringPi.a /usr/local/lib + @install -m 0755 libwiringPi.so.1.0 /usr/local/lib + @ln -sf /usr/local/lib/libwiringPi.so.1.0 /usr/local/lib/libwiringPi.so + @ln -sf /usr/local/lib/libwiringPi.so.1.0 /usr/local/lib/libwiringPi.so.1 + @ldconfig uninstall: @echo [uninstall] - rm -f /usr/local/include/lcd.h - rm -f /usr/local/include/lpiNes.h - rm -f /usr/local/include/gertboard.h - rm -f /usr/local/include/wiringShift.h - rm -f /usr/local/include/wiringSerial.h - rm -f /usr/local/include/wiringPi.h - rm -f /usr/local/lib/libwiringPi.a + @rm -f /usr/local/include/wiringPi.h + @rm -f /usr/local/include/wiringSerial.h + @rm -f /usr/local/include/wiringShift.h + @rm -f /usr/local/include/gertboard.h + @rm -f /usr/local/include/piNes.h + @rm -f /usr/local/include/softPwm.h + @rm -f /usr/local/include/lcd.h + @rm -f /usr/local/include/wiringPiSPI.h + @rm -f /usr/local/lib/libwiringPi.* + @ldconfig # DO NOT DELETE @@ -98,8 +113,10 @@ wiringPi.o: wiringPi.h wiringPiFace.o: wiringPi.h wiringSerial.o: wiringSerial.h wiringShift.o: wiringPi.h wiringShift.h -gertboard.o: gertboard.h +gertboard.o: wiringPiSPI.h gertboard.h piNes.o: wiringPi.h piNes.h lcd.o: wiringPi.h lcd.h piHiPri.o: wiringPi.h piThread.o: wiringPi.h +softPwm.o: wiringPi.h softPwm.h +wiringPiSPI.o: wiringPiSPI.h diff --git a/wiringPi/lcd.c b/wiringPi/lcd.c index 6826a60..aa58cab 100644 --- a/wiringPi/lcd.c +++ b/wiringPi/lcd.c @@ -75,7 +75,10 @@ struct lcdDataStruct *lcds [MAX_LCDS] ; static void strobe (struct lcdDataStruct *lcd) { - digitalWrite (lcd->strbPin, 1) ; delayMicroseconds (1) ; + +// Note timing changes for new version of delayMicroseconds () + + digitalWrite (lcd->strbPin, 1) ; delayMicroseconds (50) ; digitalWrite (lcd->strbPin, 0) ; delayMicroseconds (50) ; } diff --git a/wiringPi/lcd.h b/wiringPi/lcd.h index d4c724c..ecd1d25 100644 --- a/wiringPi/lcd.h +++ b/wiringPi/lcd.h @@ -26,6 +26,10 @@ #define MAX_LCDS 8 +#ifdef __cplusplus +extern "C" { +#endif + extern void lcdHome (int fd) ; extern void lcdClear (int fd) ; extern void lcdPosition (int fd, int x, int y) ; @@ -33,10 +37,6 @@ extern void lcdPutchar (int fd, uint8_t data) ; extern void lcdPuts (int fd, char *string) ; extern void lcdPrintf (int fd, char *message, ...) ; -#ifdef __cplusplus -extern "C" { -#endif - extern int lcdInit (int rows, int cols, int bits, int rs, int strb, int d0, int d1, int d2, int d3, int d4, int d5, int d6, int d7) ; diff --git a/wiringPi/wiringPi.c b/wiringPi/wiringPi.c index b572dde..ad62082 100644 --- a/wiringPi/wiringPi.c +++ b/wiringPi/wiringPi.c @@ -427,6 +427,7 @@ int piBoardRev (void) } fclose (cpuFd) ; + if (r == -1) { fprintf (stderr, "piBoardRev: Unable to determine board revision from /proc/cpuinfo\n") ; @@ -449,9 +450,11 @@ int piBoardRev (void) boardRev = 2 ; else { - fprintf (stderr, "piBoardRev: Unable to determine board revision from %d\n", r) ; - errno = 0 ; - return -1 ; + fprintf (stderr, "WARNING: wiringPi: Unable to determine board revision from \"%d\"\n", r) ; + fprintf (stderr, " -> You may want to check:\n") ; + fprintf (stderr, " -> http://www.raspberrypi.org/phpBB3/viewtopic.php?p=184410#p184410\n") ; + fprintf (stderr, " -> Assuming a Rev 1 board\n") ; + boardRev = 1 ; } if (wiringPiDebug)