All,
I am trying to build a simple robot for my daughter and have run into a snag. The code seems to run normal for some time then it will just stop and the hserout command will just start displaying 111111 or 222222 or 33333 over and over again. Every time I reset, it runs for a while and then displays 1 number higher, but over and over again. I am including the code below.
Of note, when this program is running, I can hear the ultrasonic ping sensor happily pinging away, but once it starts displaying the number repeatedly, everything stops, including the blinking LED and the ping sensor, only the hserout keeps repeating the number.
I am using a HS setting and disabling the WDT, Brown out, and power up timer.
Code:
define OSC 20
DEFINE HSER_BAUD 9600
TRISC = %00000000 'All C's are outputs
TRISB = %00100000 'All B's are outputs except b5
CCP1CON = %00001100 ' Mode select = PWM1
CCP2CON = %00001100 ' Mode select = PWM2
TRIGGER var PortB.4
ECHO var PortB.5
IN1 VAR PortC.3
IN2 VAR PortC.4
IN3 var PortC.5
IN4 var PortB.1
'i var byte
'duty var byte
RAWDATA var word
inINCHES var word
low IN1
low IN2
low IN3
LOW IN4
pause 1000
HSEROUT ["Starting", 10, 13]
MAIN:
HSEROUT ["GOSUB PING first entry", 10, 13]
gosub PING
IF inInches <= 9 THEN Obstacle
high IN1
high IN3
hpwm 1, 250, 2000 ' Forward left motor
hpwm 2, 250, 2000 ' Forward right motor
goto MAIN
Obstacle: ' Backwards
HSEROUT ["backing up", 10, 13]
low IN1
low IN3
while inInches < 12
high IN2
high IN4
hpwm 1, 150, 2000
hpwm 2, 150, 2000
gosub Ping
wend
low IN2
LOW IN4
return
PING:
pulsout TRIGGER, 5
PUlsin ECHO, 1, RAWDATA
pause 100
inINCHES = RAWDATA / 74
hserout ["RAWDATA ",DEC RAWDATA, 10, 13]
hserout ["inINCHES ",DEC inINCHES, 10, 13]
return
Bookmarks