brian
01-30-08, 05:42 PM
So I'm about to completely abandon IsoMax/IsoPod for some other controller in which I can use a regular C-compiler and RTOS. I feel like I've given IsoMax a pretty fair amount of effort. I fully admit that I'm an IsoMax/IsoPod newbie, but I am not an inexperienced programmer. It seems to me that the error reporting when trying to develop an IsoMax app is worse than nonexistent. it's actually misleading. I've posted several times with problems that that turned out to be mostly mistakes on my part, but I also feel that the documentation and error reporting are less than stellar. I've had some limited experience with Forth in the past, and understand that it is close to assembly language than a high level language, but an assembler at least provides some decent error reporting.
So, here's a snippet of code that's been frustrating me. As with most programming efforts, I'm sure it's a stupid newbie mistake, but I could sure use some better clues. This is a stripped-down version of a larger app that I was developing incrementally, then broke when I added a piece that seemed nearly identical to working pieces.
Since this posting is going through a moderator, I don't even care if it gets posted. If I'm just not getting it, what am I missing?
DECIMAL
32767 CONSTANT AIEL_PERIOD
AIEL_PERIOD PWMA1 PWM-PERIOD
7504 CONSTANT SERVO_NEUTRAL_PWM
VARIABLE Raw
VARIABLE AielPWM
LOOPINDEX TimeOutCount
: servos_neutral SERVO_NEUTRAL_PWM PWMA0 PWM-OUT
SERVO_NEUTRAL_PWM PWMA1 PWM-OUT ;
MACHINE FBW
ON-MACHINE FBW
APPEND-STATE INIT_STATE
APPEND-STATE CHECK_AIEL_DONE
APPEND-STATE PROCESS
IN-STATE INIT_STATE CONDITION TRUE
CAUSES GRNLED OFF YELLED OFF REDLED ON
servos_neutral
TA0 SET-PWM-IN
0 TimeOutCount START
100 TimeOutCount END
1 TimeOutCount STEP
0 Raw !
0 AielPWM !
IN-STATE CHECK_AIEL_DONE CONDITION TA0 CHK-PWM-IN DUP Raw !
CAUSES GRNLED OFF YELLED ON REDLED OFF
Raw @ DUP AielPWM ! PWMA0 PWM-OUT
TA0 SET-PWM-IN
TimeOutCount RESET
THEN-STATE PROCESS TO-HAPPEN
IN-STATE CHECK_AIEL_DONE CONDITION TimeOutCount COUNT
CAUSES GRNLED OFF YELLED ON REDLED OFF
THEN-STATE PROCESS TO-HAPPEN
IN-STATE PROCESS CONDITION TRUE
CAUSES REDLED ON
THEN-STATE CHECK_AIEL_DONE TO-HAPPEN
The results of pasting this into a freshly reset system.
IsoMax V0.6
OK
OK
DECIMAL OK
OK
32767 CONSTANT AIEL_PERIOD OK
OK
AIEL_PERIOD PWMA1 PWM-PERIOD OK
OK
7504 CONSTANT SERVO_NEUTRAL_PWM OK
OK
VARIABLE Raw OK
OK
VARIABLE AielPWM OK
OK
LOOPINDEX TimeOutCount OK
OK
: servos_neutral SERVO_NEUTRAL_PWM PWMA0 PWM-OUT
SERVO_NEUTRAL_PWM PWMA1 PWM-OUT ; OK
OK
MACHINE FBW OK
OK
ON-MACHINE FBW OK
OK
APPEND-STATE INIT_STATE OK
OK
APPEND-STATE CHECK_AIEL_DONE OK
APPEND-STATE PROCESS OK
OK
IN-STATE INIT_STATE CONDITION TRUE
CAUSES GRNLED OFF YELLED OFF REDLED ON
servos_neutral
TA0 SET-PWM-IN
0 TimeOutCount START
100 TimeOutCount END
1 TimeOutCount STEP
0 Raw !
0 AielPWM !
IN-STATE CHECK_AIEL_DONE CONDITION TA0 CHK-PWM-IN DUP Raw !
CAUSES GRNLED OFF YELLED ON REDLED OFF
CAUSES ? MSG# 19
Raw @ DUP AielPWM ! PWMA0 PWM-OUT OK
TA0 SET-PWM-IN OK
TimeOutCount RESET OK
OK
THEN-STATE PROCESS TO-HAPPEN
THEN-STATE ? MSG# 17
OK
IN-STATE CHECK_AIEL_DONE CONDITION TimeOutCount COUNT
CAUSES GRNLED OFF YELLED ON REDLED OFF
THEN-STATE PROCESS TO-HAPPEN OK
OK
IN-STATE PROCESS CONDITION TRUE
CAUSES REDLED ON
THEN-STATE CHECK_AIEL_DONE TO-HAPPEN OK
OK
So, here's a snippet of code that's been frustrating me. As with most programming efforts, I'm sure it's a stupid newbie mistake, but I could sure use some better clues. This is a stripped-down version of a larger app that I was developing incrementally, then broke when I added a piece that seemed nearly identical to working pieces.
Since this posting is going through a moderator, I don't even care if it gets posted. If I'm just not getting it, what am I missing?
DECIMAL
32767 CONSTANT AIEL_PERIOD
AIEL_PERIOD PWMA1 PWM-PERIOD
7504 CONSTANT SERVO_NEUTRAL_PWM
VARIABLE Raw
VARIABLE AielPWM
LOOPINDEX TimeOutCount
: servos_neutral SERVO_NEUTRAL_PWM PWMA0 PWM-OUT
SERVO_NEUTRAL_PWM PWMA1 PWM-OUT ;
MACHINE FBW
ON-MACHINE FBW
APPEND-STATE INIT_STATE
APPEND-STATE CHECK_AIEL_DONE
APPEND-STATE PROCESS
IN-STATE INIT_STATE CONDITION TRUE
CAUSES GRNLED OFF YELLED OFF REDLED ON
servos_neutral
TA0 SET-PWM-IN
0 TimeOutCount START
100 TimeOutCount END
1 TimeOutCount STEP
0 Raw !
0 AielPWM !
IN-STATE CHECK_AIEL_DONE CONDITION TA0 CHK-PWM-IN DUP Raw !
CAUSES GRNLED OFF YELLED ON REDLED OFF
Raw @ DUP AielPWM ! PWMA0 PWM-OUT
TA0 SET-PWM-IN
TimeOutCount RESET
THEN-STATE PROCESS TO-HAPPEN
IN-STATE CHECK_AIEL_DONE CONDITION TimeOutCount COUNT
CAUSES GRNLED OFF YELLED ON REDLED OFF
THEN-STATE PROCESS TO-HAPPEN
IN-STATE PROCESS CONDITION TRUE
CAUSES REDLED ON
THEN-STATE CHECK_AIEL_DONE TO-HAPPEN
The results of pasting this into a freshly reset system.
IsoMax V0.6
OK
OK
DECIMAL OK
OK
32767 CONSTANT AIEL_PERIOD OK
OK
AIEL_PERIOD PWMA1 PWM-PERIOD OK
OK
7504 CONSTANT SERVO_NEUTRAL_PWM OK
OK
VARIABLE Raw OK
OK
VARIABLE AielPWM OK
OK
LOOPINDEX TimeOutCount OK
OK
: servos_neutral SERVO_NEUTRAL_PWM PWMA0 PWM-OUT
SERVO_NEUTRAL_PWM PWMA1 PWM-OUT ; OK
OK
MACHINE FBW OK
OK
ON-MACHINE FBW OK
OK
APPEND-STATE INIT_STATE OK
OK
APPEND-STATE CHECK_AIEL_DONE OK
APPEND-STATE PROCESS OK
OK
IN-STATE INIT_STATE CONDITION TRUE
CAUSES GRNLED OFF YELLED OFF REDLED ON
servos_neutral
TA0 SET-PWM-IN
0 TimeOutCount START
100 TimeOutCount END
1 TimeOutCount STEP
0 Raw !
0 AielPWM !
IN-STATE CHECK_AIEL_DONE CONDITION TA0 CHK-PWM-IN DUP Raw !
CAUSES GRNLED OFF YELLED ON REDLED OFF
CAUSES ? MSG# 19
Raw @ DUP AielPWM ! PWMA0 PWM-OUT OK
TA0 SET-PWM-IN OK
TimeOutCount RESET OK
OK
THEN-STATE PROCESS TO-HAPPEN
THEN-STATE ? MSG# 17
OK
IN-STATE CHECK_AIEL_DONE CONDITION TimeOutCount COUNT
CAUSES GRNLED OFF YELLED ON REDLED OFF
THEN-STATE PROCESS TO-HAPPEN OK
OK
IN-STATE PROCESS CONDITION TRUE
CAUSES REDLED ON
THEN-STATE CHECK_AIEL_DONE TO-HAPPEN OK
OK