mirror of https://github.com/joan2937/pigpio
V23
This commit is contained in:
parent
408d0f1314
commit
8084a6e1c1
|
@ -0,0 +1,7 @@
|
||||||
|
This bash script tests the user gpios.
|
||||||
|
|
||||||
|
Everything should be disconnected from the gpios.
|
||||||
|
|
||||||
|
The pigpio daemon must be running (sudo pigpiod).
|
||||||
|
|
||||||
|
Video at http://youtu.be/sCJFLKWaxHo
|
|
@ -0,0 +1,126 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
skipped=""
|
||||||
|
tested=""
|
||||||
|
failed=""
|
||||||
|
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
cat <<EOF
|
||||||
|
This program checks the Pi's (user) gpios.
|
||||||
|
|
||||||
|
The program reads and writes all the gpios. Make sure NOTHING
|
||||||
|
is connected to the gpios during this test.
|
||||||
|
|
||||||
|
The program uses the pigpio daemon which must be running.
|
||||||
|
|
||||||
|
To start the daemon use the command sudo pigpiod.
|
||||||
|
|
||||||
|
Press the ENTER key to continue or ctrl-C to abort...
|
||||||
|
EOF
|
||||||
|
|
||||||
|
read a
|
||||||
|
}
|
||||||
|
|
||||||
|
restore_mode()
|
||||||
|
{
|
||||||
|
# $1 gpio
|
||||||
|
# $2 mode
|
||||||
|
|
||||||
|
case "$2" in
|
||||||
|
0) m="r" ;;
|
||||||
|
1) m="w" ;;
|
||||||
|
2) m="5" ;;
|
||||||
|
3) m="4" ;;
|
||||||
|
4) m="0" ;;
|
||||||
|
5) m="1" ;;
|
||||||
|
6) m="2" ;;
|
||||||
|
7) m="3" ;;
|
||||||
|
*)
|
||||||
|
echo "invalid mode $2 for gpio $1"
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
|
||||||
|
$(pigs m $1 $m)
|
||||||
|
}
|
||||||
|
|
||||||
|
check_gpio()
|
||||||
|
{
|
||||||
|
# $1 gpio
|
||||||
|
# $2 i2c
|
||||||
|
|
||||||
|
m=$(pigs mg $1) # save mode
|
||||||
|
L=$(pigs r $1) # save level
|
||||||
|
|
||||||
|
s=$(pigs m $1 w)
|
||||||
|
|
||||||
|
if [[ $s = "" ]]
|
||||||
|
then
|
||||||
|
f=0
|
||||||
|
tested+="$1 "
|
||||||
|
|
||||||
|
# write mode tests
|
||||||
|
$(pigs w $1 0)
|
||||||
|
r=$(pigs r $1)
|
||||||
|
if [[ $r -ne 0 ]]; then f=1; echo "Write 0 to gpio $1 failed."; fi
|
||||||
|
|
||||||
|
$(pigs w $1 1)
|
||||||
|
r=$(pigs r $1)
|
||||||
|
if [[ $r -ne 1 ]]; then f=1; echo "Write 1 to gpio $1 failed."; fi
|
||||||
|
|
||||||
|
# read mode tests using pull-ups and pull-downs
|
||||||
|
$(pigs m $1 r)
|
||||||
|
|
||||||
|
if [[ $2 -eq 0 ]]
|
||||||
|
then
|
||||||
|
$(pigs pud $1 d)
|
||||||
|
r=$(pigs r $1)
|
||||||
|
if [[ $r -ne 0 ]]; then f=1; echo "Pull down on gpio $1 failed."; fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
$(pigs pud $1 u)
|
||||||
|
r=$(pigs r $1)
|
||||||
|
if [[ $r -ne 1 ]]; then f=1; echo "Pull up on gpio $1 failed."; fi
|
||||||
|
|
||||||
|
$(pigs pud $1 o) # switch pull-ups/downs off
|
||||||
|
$(pigs w $1 $L) # restore original level
|
||||||
|
restore_mode $1 $m # restore original mode
|
||||||
|
|
||||||
|
if [[ $f -ne 0 ]]; then failed+="$1 "; fi
|
||||||
|
else
|
||||||
|
skipped+="$1 "
|
||||||
|
fi
|
||||||
|
} 2>/dev/null
|
||||||
|
|
||||||
|
usage
|
||||||
|
|
||||||
|
v=$(pigs hwver)
|
||||||
|
|
||||||
|
if [[ $v < 0 ]]
|
||||||
|
then
|
||||||
|
echo "The pigpio daemon wasn't found. Did you sudo pigpiod?"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Testing..."
|
||||||
|
|
||||||
|
for ((i=0; i<4; i++)) do check_gpio $i 1; done
|
||||||
|
for ((i=4; i<16; i++)) do check_gpio $i 0; done
|
||||||
|
|
||||||
|
if [[ $v -ge 16 ]];
|
||||||
|
then
|
||||||
|
check_gpio 16 0
|
||||||
|
else
|
||||||
|
skipped+="16 "
|
||||||
|
fi
|
||||||
|
|
||||||
|
for ((i=17; i<28; i++)) do check_gpio $i 0; done
|
||||||
|
for ((i=28; i<30; i++)) do check_gpio $i 1; done
|
||||||
|
for ((i=30; i<32; i++)) do check_gpio $i 0; done
|
||||||
|
|
||||||
|
if [[ $failed = "" ]]; then failed="None"; fi
|
||||||
|
|
||||||
|
echo "Skipped non-user gpios: $skipped"
|
||||||
|
echo "Tested user gpios: $tested"
|
||||||
|
echo "Failed user gpios: $failed"
|
||||||
|
|
Loading…
Reference in New Issue