00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 //_____ I N C L U D E S ___________________________________________________ 00012 00013 #include "config.h" 00014 #include "ushell_task.h" 00015 #include "ascii.h" 00016 #include "USI_TWI_Slave.h" 00017 00018 00019 U16 debug_get_value1(void); 00020 U16 debug_get_value2(void); 00021 00022 extern volatile motorControlFlags_t mcFastFlags; 00023 extern volatile U16 SpeedMeasure; 00024 00025 //_____ M A C R O S ________________________________________________________ 00026 00027 //_____ D E F I N I T I O N S ______________________________________________ 00028 //void convert_param1(void); 00029 //void print_hex16(U16 value); 00030 extern void MotorSetDutyCycle(U16 duty); 00031 00032 //_____ D E C L A R A T I O N S ____________________________________________ 00033 00034 extern U16 speed; 00035 extern U16 current; 00036 extern U8 direction; 00037 volatile Bool ushell_active = FALSE; 00038 volatile U8 debug8; 00039 00048 void ushell_task_init(void) 00049 { 00050 #ifdef __GNUC__ 00051 // fdevopen((int (*)(char, FILE*))(USI_TWI_Transmit_Byte),(int (*)(FILE*))USI_TWI_Receive_Byte); //for printf redirection 00052 #endif 00053 } 00054 00055 00056 00057 00058 00067 void ushell_task(void) 00068 { 00069 if (is_data_received) //Something new of the UART ? 00070 { 00071 is_data_received=FALSE; 00072 switch (data_received) 00073 { 00074 case CMD_RUN: 00075 mcFastFlags.state = STATE_RUN; 00076 mcFastFlags.speed = (U16)(LSB(speed)<<2); 00077 break; 00078 00079 case CMD_STOP: 00080 mcFastFlags.state = STATE_STOP; 00081 break; 00082 00083 case CMD_FORWARD: 00084 mcFastFlags.direction = DIRECTION_FORWARD; 00085 break; 00086 00087 case CMD_BACKWARD: 00088 mcFastFlags.direction = DIRECTION_REVERSE; 00089 break; 00090 00091 case CMD_SET_SPEED: 00092 MSB(speed) = USI_TWI_Receive_Byte(); 00093 LSB(speed) = USI_TWI_Receive_Byte(); 00094 mcFastFlags.speed = (U16)(LSB(speed)<<2); 00095 break; 00096 00097 case CMD_GET_ID: 00098 USI_TWI_Transmit_Byte(BOARD_ID); 00099 USI_TWI_Transmit_Byte(SOFT_ID); 00100 USI_TWI_Transmit_Byte(REV_ID); 00101 break; 00102 00103 case CMD_GET_STATUS: 00104 // if(SpeedMeasure!=0) 00105 // current=12; 00106 // USI_TWI_Transmit_Byte(MSB(SpeedMeasure)); 00107 // USI_TWI_Transmit_Byte(LSB(SpeedMeasure)); 00108 USI_TWI_Transmit_Byte(MSB(speed)); 00109 USI_TWI_Transmit_Byte(LSB(speed)); 00110 USI_TWI_Transmit_Byte(MSB(current)); 00111 USI_TWI_Transmit_Byte(LSB(current)); 00112 00113 ushell_active = TRUE; 00114 break; 00115 default: //Unknown command 00116 break; 00117 } 00118 data_received=CMD_NONE; 00119 } 00120 } 00121
1.5.7.1