switch (rx_msg.id)
{
- case CAN_VIDLE_CMD:
+ case CAN_JAW_LEFT_CMD:
deb_led_on(LEDB);
req = ((rx_msg.data[0]<<8) | (rx_msg.data[1]));
spd = rx_msg.data[2];
if (req >= 0x150 && req <= 0x3e0) {
fsm_jaws.flags &= ~CAN_JAWS_OUT_OF_BOUNDS;
- fsm_jaws.can_req_position = req;// save new req position of lift
- fsm_jaws.can_req_spd = spd;// save new req spd of lift
+ fsm_jaws.can_req_position_left = req;// save new req position of lift
+ fsm_jaws.can_req_spd_left = spd;// save new req spd of lift
} else
fsm_jaws.flags |= CAN_JAWS_OUT_OF_BOUNDS;
break;
+
+ case CAN_JAW_RIGHT_CMD:
+ deb_led_on(LEDB);
+ req = ((rx_msg.data[0]<<8) | (rx_msg.data[1]));
+ spd = rx_msg.data[2];
+
+ if (req >= 0x150 && req <= 0x3e0) {
+ fsm_jaws.flags &= ~CAN_JAWS_OUT_OF_BOUNDS;
+ fsm_jaws.can_req_position_right = req;// save new req position of lift
+ fsm_jaws.can_req_spd_right = spd;// save new req spd of lift
+ } else
+ fsm_jaws.flags |= CAN_JAWS_OUT_OF_BOUNDS;
+ break;
+
default:break;
}
void can_send_status(void)
{
can_msg_t tx_msg;
- tx_msg.id = CAN_JAWS_STATUS;
+ tx_msg.id = CAN_JAW_LEFT_STATUS;
tx_msg.dlc = 5;
tx_msg.flags = 0;
- tx_msg.data[0] = (fsm_jaws.act_pos >> 8) & 0xFF;
- tx_msg.data[1] = fsm_jaws.act_pos & 0xFF;
+ tx_msg.data[0] = (fsm_jaws.act_pos_left >> 8) & 0xFF;
+ tx_msg.data[1] = fsm_jaws.act_pos_left & 0xFF;
+ tx_msg.data[2] = (fsm_jaws.can_response >> 8) & 0xFF;
+ tx_msg.data[3] = fsm_jaws.can_response & 0xFF;
+ tx_msg.data[4] = fsm_jaws.flags;
+ /*while*/(can_tx_msg(&tx_msg)); /* CAN erratum workaround */
+
+ //can_msg_t tx_msg;
+ tx_msg.id = CAN_JAW_RIGHT_STATUS;
+ tx_msg.dlc = 5;
+ tx_msg.flags = 0;
+ tx_msg.data[0] = (fsm_jaws.act_pos_right >> 8) & 0xFF;
+ tx_msg.data[1] = fsm_jaws.act_pos_right & 0xFF;
tx_msg.data[2] = (fsm_jaws.can_response >> 8) & 0xFF;
tx_msg.data[3] = fsm_jaws.can_response & 0xFF;
tx_msg.data[4] = fsm_jaws.flags;
up = (up+1)%12;
*/
deb_led_change(LEDG);
- send_rs_int(fsm_jaws.act_pos);
+ send_rs_str("LEFT_ACT_POS:");
+ send_rs_int(fsm_jaws.act_pos_left);
+ send_rs_str("\n");
+ send_rs_str("RIGHT_ACT_POS:");
+ send_rs_int(fsm_jaws.act_pos_right);
send_rs_str("\n");
}
}
send_rs_str("Jaws started\n");
// The above send_rs_str is importat - we wait for the first AD conversion to be finished
- fsm_jaws
-.act_pos = adc_val[0];
- init_fsm(&fsm_jaws
-, &fsm_jaws_init
-);
+ fsm_jaws.act_pos_left = adc_val[0];
+ fsm_jaws.act_pos_right = adc_val[1];
+
+ init_fsm(&fsm_jaws, &fsm_jaws_init);
/* test_vhn(); */
/* return; */
//dbg_print_time();
- fsm_jaws
-.act_pos = adc_val[0];
+ fsm_jaws.act_pos_left = adc_val[0];
+ fsm_jaws.act_pos_right = adc_val[1];
- run_fsm(&fsm_jaws
-);
+ run_fsm(&fsm_jaws);
}
if (timer_msec >= status_time + 100 || //repeat sending message every 100 ms