#include "fsm.h"
#include "def.h"
#include <adc.h>
+#include <servo.h>
#define CAN_SPEED 1000000 //< CAN bus speed
#define CAN_ISR 0
#define ADC_ISR 1
+#define JAW_LEFT 0
+#define JAW_RIGHT 1
+
#define TIMER_IRQ_PRIORITY 5
deb_led_on(LEDB);
switch (rx_msg.id)
- {
+ {
+ //JAW_LEFT_OPEN ff 0xff
+ //JAW_RIGHT_OPEN 0x00
+
+ //JAW_LEFT_CLOSE 0x80
+ //JAW_RIGHT_CLOSE 0x80
+
+ //JAW_LEFT_CATCH 0xB8
+ //JAW_RIGHT_CATCH 0x38
+
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 >= 0x80 && req <= 0xff) {
+ set_servo(JAW_LEFT, (char)req);
+ }
- if (req >= fsm_jaw_left.min_pos && req <= fsm_jaw_left.max_pos) {
- fsm_jaw_left.flags &= ~CAN_JAW_OUT_OF_BOUNDS;
- fsm_jaw_left.can_req_position = req;
- fsm_jaw_left.can_req_spd = spd;
- } else
- fsm_jaw_left.flags |= CAN_JAW_OUT_OF_BOUNDS;
+// if (req >= fsm_jaw_left.min_pos && req <= fsm_jaw_left.max_pos) {
+// fsm_jaw_left.flags &= ~CAN_JAW_OUT_OF_BOUNDS;
+// fsm_jaw_left.can_req_position = req;
+// fsm_jaw_left.can_req_spd = spd;
+// } else
+// fsm_jaw_left.flags |= CAN_JAW_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 >= fsm_jaw_right.min_pos && req <= fsm_jaw_right.max_pos) {
- fsm_jaw_right.flags &= ~CAN_JAW_OUT_OF_BOUNDS;
- fsm_jaw_right.can_req_position = req;
- fsm_jaw_right.can_req_spd = spd;
- } else
- fsm_jaw_right.flags |= CAN_JAW_OUT_OF_BOUNDS;
+
+ if (req >= 0x00 && req <= 0x80) {
+ set_servo(JAW_RIGHT, (char)req);
+ }
+
+// if (req >= fsm_jaw_right.min_pos && req <= fsm_jaw_right.max_pos) {
+// fsm_jaw_right.flags &= ~CAN_JAW_OUT_OF_BOUNDS;
+// fsm_jaw_right.can_req_position = req;
+// fsm_jaw_right.can_req_spd = spd;
+// } else
+// fsm_jaw_right.flags |= CAN_JAW_OUT_OF_BOUNDS;
break;
+
default:break;
}
init_uart();
init_adc(ADC_ISR);
-
-}
+ init_servo(7); //7 is interrupt priority
+ set_servo(JAW_LEFT, 0x80);
+ set_servo(JAW_RIGHT,0x80);
+}
+
/*********************************************************/
void can_send_status(struct fsm *fsm){
can_msg_t tx_msg;