PDA

View Full Version : Regarding Program


NAVNEET ACHARYA
05-08-04, 02:42 PM
Sir,

I am facing some problem in following program.



DECIMAL 9600 SCI0 BAUD

VARIABLE BUFR DECIMAL 40 4 + ALLOT EEWORD
BUFR 40 4 + SCI0 RXBUFFER
VARIABLE BUFT DECIMAL 40 4 + ALLOT EEWORD
BUFT 40 4 + SCI0 TXBUFFER

DECIMAL 7100 CONSTANT SERCTR EEWORD

VARIABLE DATA1 EEWORD
VARIABLE DATA2 EEWORD
VARIABLE DATA3 EEWORD
VARIABLE DATA4 EEWORD
VARIABLE DATA5 EEWORD
VARIABLE DATA6 EEWORD
VARIABLE DATA7 EEWORD


VARIABLE SERID EEWORD
VARIABLE DVAL EEWORD
VARIABLE DROT1 EEWORD
VARIABLE DROT2 EEWORD
VARIABLE DROT3 EEWORD
VARIABLE DROT4 EEWORD

: INIT
32767 PWMA0 PWM-PERIOD
SERCTR PWMA0 PWM-OUT
SERCTR PWMA1 PWM-OUT
SERCTR PWMA2 PWM-OUT
SERCTR PWMA3 PWM-OUT
; EEWORD

: INIT2
SCI0 RX DATA1 C!
SCI0 RX DATA2 C!
SCI0 RX DATA3 C!
SCI0 RX DATA4 C!
SCI0 RX DATA5 C!
SCI0 RX DATA6 C!
; EEWORD

: PLS
INIT2
DATA1 C@ 70 = IF
DATA1 C@ SCI0 TX
DATA2 C@ 83 = IF
DATA2 C@ SCI0 TX
DATA5 C@ 70 = IF
DATA5 C@ SCI0 TX
DATA6 C@ 126 = IF
DATA6 C@ SCI0 TX

DATA3 C@ 1 = IF
32767 PWMA0 PWM-PERIOD
DATA4 C@ 42 * 1800 + DROT1 !
DROT1 @ PWMA0 PWM-OUT

DATA3 C@ 2 = IF
REDLED OFF
32767 PWMA1 PWM-PERIOD
DATA4 C@ 42 * 1800 + DROT2 !
DROT2 @ PWMA1 PWM-OUT

DATA3 C@ 3 = IF
GRNLED OFF
32767 PWMA2 PWM-PERIOD
DATA4 C@ 42 * 1800 + DROT3 !
DROT3 @ PWMA2 PWM-OUT
DATA3 C@ 4 = IF
YELLED OFF
32767 PWMA3 PWM-PERIOD
DATA4 C@ 42 * 1800 + DROT4 !
DROT4 @ PWMA3 PWM-OUT

THEN
THEN
THEN
THEN
THEN
THEN
THEN
THEN

; EEWORD

: STARTUP
EVERY 350 CYCLES SCHEDULE-RUNS PLS
; EEWORD
HEX 3C00 AUTOSTART STARTUP
SAVE-RAM

My program having error that only First motor moves properly,others are not moving can you tell me the Reason ?

Please Reply as early as possible.


Regards,

nmitech
05-10-04, 12:31 PM
I think the problem is your looping. It does not look like a nested loops but rather than crossed loops. So no matter if DATA1 C@ is equal or NOT equal 70, it will not execute the others. I would try this instead,
: PLS
INIT2
DATA1 C@ 70 = IF
DATA1 C@ SCI0 TX
THEN
DATA2 C@ 83 = IF
DATA2 C@ SCI0 TX
.....
THEN

or,

: PLS
INIT2
DATA1 C@ 70 = IF
DATA1 C@ SCI0 TX
ELSE
DATA2 C@ 83 = IF
DATA2 C@ SCI0 TX
.....
THEN
THEN

----------------
Also you may add the INIT word in the STARTUP routine to keep all the motors at mid position to avoid wild running on power up,

: STARTUP
INIT
EVERY 350 CYCLES SCHEDULE-RUNS PLS
; EEWORD
HEX 3C00 AUTOSTART STARTUP
SAVE-RAM