Hi TJF
Finished the board design and just to double check that all the Inputs and Outputs will
be available, I wrote a quick test and connected 4 led's on P8,7 8 9 and 10.
Turning the led's On works as expected, but turning them Off by pressing 9, only turns 7 & 8 off
and then hangs the program.
What am I doing wrong here ?
Code: Select all
#INCLUDE ONCE "BBB/pruio.bi"
#INCLUDE ONCE "BBB/pruio_pins.bi"
'Define pin Nbr's used on P8 for O/P's
#DEFINE P0 P8_07
#DEFINE P1 P8_08
#Define P2 P8_09
#DEFINE P3 P8_10
#DEFINE P4 P8_13
#DEFINE P5 P8_14
#Define P6 P8_15
#DEFINE P7 P8_16
#DEFINE P8 P8_17
#DEFINE P9 P8_18
'Define pin Nbr's used on P9 for O/P's
#DEFINE P10 P9_12
#DEFINE P11 P9_13
#Define P12 P9_14
#DEFINE P13 P9_16
#DEFINE P14 P9_17
#DEFINE P15 P9_18
#DEFINE P16 P9_21
#DEFINE P17 P9_23
#DEFINE P18 P9_24
#DEFINE P19 P9_41
'DEfine pin Nbr's used for I/P's
#DEFINE P20 P8_11
#DEFINE P21 P8_12
#DEFINE P22 P8_26
#DEFINE P23 P9_11
#DEFINE P24 P9_15
#DEFINE P25 P9_22
#DEFINE P26 P9_27
#DEFINE P27 P9_30
VAR io = NEW PruIo '*< Create a PruIo structure, wakeup subsystems.
WITH *io
IF .Gpio->config(P0 , PRUIO_GPIO_OUT0) THEN ?"failed setting P0 (" & *.Errr & ")"
IF .Gpio->config(P1 , PRUIO_GPIO_OUT0) THEN ?"failed setting P1 (" & *.Errr & ")"
IF .Gpio->config(P2 , PRUIO_GPIO_OUT0) THEN ?"failed setting P2 (" & *.Errr & ")"
IF .Gpio->config(P3 , PRUIO_GPIO_OUT0) THEN ?"failed setting P3 (" & *.Errr & ")"
IF .Gpio->config(P4 , PRUIO_GPIO_OUT0) THEN ?"failed setting P4 (" & *.Errr & ")"
IF .Gpio->config(P5 , PRUIO_GPIO_OUT0) THEN ?"failed setting P5 (" & *.Errr & ")"
IF .Gpio->config(P6 , PRUIO_GPIO_OUT0) THEN ?"failed setting P6 (" & *.Errr & ")"
IF .Gpio->config(P7 , PRUIO_GPIO_OUT0) THEN ?"failed setting P7 (" & *.Errr & ")"
IF .Gpio->config(P8 , PRUIO_GPIO_OUT0) THEN ?"failed setting P8 (" & *.Errr & ")"
IF .Gpio->config(P9 , PRUIO_GPIO_OUT0) THEN ?"failed setting P9 (" & *.Errr & ")"
IF .Gpio->config(P10, PRUIO_GPIO_OUT0) THEN ?"failed setting P10 (" & *.Errr & ")"
IF .Gpio->config(P11, PRUIO_GPIO_OUT0) THEN ?"failed setting P11 (" & *.Errr & ")"
IF .Gpio->config(P12, PRUIO_GPIO_OUT0) THEN ?"failed setting P12 (" & *.Errr & ")"
IF .Gpio->config(P13, PRUIO_GPIO_OUT0) THEN ?"failed setting P13 (" & *.Errr & ")"
IF .Gpio->config(P14, PRUIO_GPIO_OUT0) THEN ?"failed setting P14 (" & *.Errr & ")"
IF .Gpio->config(P15, PRUIO_GPIO_OUT0) THEN ?"failed setting P15 (" & *.Errr & ")"
IF .Gpio->config(P16, PRUIO_GPIO_OUT0) THEN ?"failed setting P16 (" & *.Errr & ")"
IF .Gpio->config(P17, PRUIO_GPIO_OUT0) THEN ?"failed setting P17 (" & *.Errr & ")"
IF .Gpio->config(P18, PRUIO_GPIO_OUT0) THEN ?"failed setting P18 (" & *.Errr & ")"
IF .Gpio->config(P19, PRUIO_GPIO_OUT0) THEN ?"failed setting P19 (" & *.Errr & ")"
IF .config() THEN ?"config failed (" & *.Errr & ")" : End
End With
WITH *io
IF .Gpio->config(P20, PRUIO_GPIO_IN_1) THEN ?"failed setting P20 (" & *.Errr & ")"
IF .Gpio->config(P21, PRUIO_GPIO_IN_1) THEN ?"failed setting P21 (" & *.Errr & ")"
IF .Gpio->config(P22, PRUIO_GPIO_IN_1) THEN ?"failed setting P22 (" & *.Errr & ")"
IF .Gpio->config(P23, PRUIO_GPIO_IN_1) THEN ?"failed setting P23 (" & *.Errr & ")"
IF .Gpio->config(P24, PRUIO_GPIO_IN_1) THEN ?"failed setting P24 (" & *.Errr & ")"
IF .Gpio->config(P25, PRUIO_GPIO_IN_1) THEN ?"failed setting P25 (" & *.Errr & ")"
IF .Gpio->config(P26, PRUIO_GPIO_IN_1) THEN ?"failed setting P26 (" & *.Errr & ")"
IF .Gpio->config(P27, PRUIO_GPIO_IN_1) THEN ?"failed setting P27 (" & *.Errr & ")"
IF .config() THEN ?"config failed (" & *.Errr & ")" : End
End With
WITH *io
Do
IF .Errr THEN EXIT DO
VAR k = Asc(INKEY())
Select Case AS CONST k
Case Asc("0")
.Gpio->setValue(P0, 1)
Case Asc("1")
.Gpio->setValue(P1, 1)
Case Asc("2")
.Gpio->setValue(P2, 1)
Case Asc("3")
.Gpio->setValue(P3, 1)
Case Asc("9")
.Gpio->setValue(P0, 0)
.Gpio->setValue(P1, 0)
.Gpio->setValue(P2, 0)
.Gpio->setValue(P3, 0)
Exit Do
End Select
Loop
End With
End
REgards
EDIT: Putting a "Sleep 1" between each .Gpio->setValue(P0, 0) in Case 9 fixes it.
That is disappointing. What would be the minimum delay between these statements ?
I know there are other statements I can use to turn multiple O/P's off.