PDA

View Full Version : serial communication with via board


amit gupta
02-15-04, 09:06 AM
hi ,
i m working with isopod for recieving data from the via board through serial port sci0.
i want to control the two servos ,by taking i/p from sci0.
the packet format is like as
<start byte><servo identification byte><servo id(1,2)><value (i.e. angle range from -100 to 100)>end byte.
can u help me for writing such a code.
amit gupta

RMDumse
02-15-04, 10:04 AM
Please pardon me for not being able to fully understand your request. What does "i/p" mean? Initial Position? Instantaneous Position? Internet Protocol?

Also I don't understand what the message format.

So perhaps all I can do is make up my own format and show you how I would do such a thing.

This code is not tested, but should probably work for a framework for example.

SCRUB



HEX
0 RAM !

( : EEWORD ;

HERE 50 4 + ALLOT CONSTANT RBUFF0 EEWORD
RBUFF0 50 4 + SCI0 RXBUFFER

HERE 50 4 + ALLOT CONSTANT TBUFF0 EEWORD
TBUFF0 50 4 + SCI0 TXBUFFER

VARIABLE CMDPOS EEWORD
VARIABLE SERV# EEWORD

D09 CONSTANT MINPOS EEWORD ( ~.59 mS
2DCB CONSTANT MAXPOS EEWORD ( ~2.38 ms
MAXPOS MINPOS + 2/ CONSTANT MIDPOS EEWORD
MAXPOS MINPOS - CONSTANT RCRANGE EEWORD
3E8 CONSTANT RCSCALE# EEWORD ( 1000dec


: RCMOVE
CMDPOS @ RCRANGE RCSCALE# */ MINPOS +
SERV# @ IF PWMA1 ELSE PWMA0 THEN
PWM-OUT
; EEWORD


( MESSAGE FORMAT
( 1234567
( m nnnnCR
(
( m = 0,1 SERV#
( nnnn = 4 DIGIT CMDPOS IN DECIMAL

: SERIAL
SCI0 RX? 7 =
IF
SCI0 RX 30 - SERV# !
SCI0 RX DROP ( SPACE
0 ( BEGINING OF NUMBER
SCI0 RX 30 - + A * ( THOUSANDS DIGIT
SCI0 RX 30 - + A * ( HUNDREDS DIGIT
SCI0 RX 30 - + A * ( TENS DIGIT

SCI0 RX 30 - + ( ONES DIGIT
CMDPOS !
SCI0 RX SCI0 TX ( ECHO RETURN
RCMOVE
THEN
; EEWORD

: STARTUP
RBUFF0 50 4 + SCI0 RXBUFFER
TBUFF0 50 4 + SCI0 TXBUFFER
7FFF PWMA0 PWM-PERIOD ( 76 Hz UPDATE RATE
CR ." DUAL SERIAL SERVO CONTROLLER
ON-LINE"

EVERY C350 CYCLES SCHEDULE-RUNS SERIAL
BEGIN PA0 OFF? UNTIL ( HANG UP HERE UNTIL PA0 GND'D
( FREEING SCI0 FOR OTHER USE
; EEWORD

( HEX 7C00 AUTOSTART STARTUP ( V0.1 - V0.5
HEX 3C00 AUTOSTART STARTUP ( V0.6 -
DECIMAL
SAVE-RAM