Gordons Projects

--> Projects Top-Level GIT

Updating gpio manual page
authorGordon Henderson <gordon@drogon.net>
Tue, 2 Oct 2012 13:32:12 +0000 (14:32 +0100)
committerGordon Henderson <gordon@drogon.net>
Tue, 2 Oct 2012 13:32:12 +0000 (14:32 +0100)
examples/Makefile
gpio/Makefile
gpio/gpio.1
gpio/gpio.c
wiringPi/Makefile
wiringPi/lcd.c
wiringPi/lcd.h
wiringPi/wiringPi.c

index 450e0dc..16bf7e2 100644 (file)
@@ -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)
index a92dd5f..cd56e5e 100644 (file)
@@ -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
index bc8e36e..ba0183f 100644 (file)
@@ -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 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
index 8b15eea..b3534c8 100644 (file)
@@ -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
index dc189cd..2d7967f 100644 (file)
 #    along with wiringPi.  If not, see <http://www.gnu.org/licenses/>.
 #################################################################################
 
+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
index 6826a60..aa58cab 100644 (file)
@@ -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) ;
 }
 
index d4c724c..ecd1d25 100644 (file)
 
 #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) ;
 
index b572dde..ad62082 100644 (file)
@@ -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)