00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 //_____ I N C L U D E S ___________________________________________________ 00012 00013 #ifdef __ICCAVR__ // IAR C Compiler 00014 #include "config.h" 00015 #include "mc_interface.h" 00016 #include "mc_control.h" 00017 #include "mc_drv.h" 00018 #endif 00019 00020 #ifdef __GNUC__ // GNU C Compiler 00021 #include "config_for_gcc.h" 00022 #include "mc_interface.h" 00023 #include "mc_control.h" 00024 #include "mc_drv.h" 00025 #endif 00026 00027 00028 //_____ M A C R O S ________________________________________________________ 00029 00030 //_____ D E F I N I T I O N S ______________________________________________ 00031 void svpwm_init(void); 00032 void Do_Sensor_Interrupt(void); 00033 void PSC_Start(void); 00034 00035 //_____ D E C L A R A T I O N S ____________________________________________ 00036 Bool mci_direction = CW; 00037 volatile Bool mci_run_stop = STOP; 00038 volatile S16 User_Speed = 0; 00039 00040 U8 mci_measured_speed = 0; 00041 U32 mci_measured_current = 0; 00042 U8 mci_potentiometer_value = 0; 00043 00044 00053 Bool mci_motor_is_running(void) 00054 { 00055 return mci_run_stop; 00056 } 00057 00058 00066 void mci_set_speed(U16 speed) 00067 { 00068 User_Speed = speed; 00069 } 00070 00071 00072 /* 00073 * @brief direction modification 00074 * @pre initialization of motor 00075 * @post new value of direction 00076 */ 00077 void mci_set_direction(U8 direction) 00078 { 00079 mci_direction = direction; 00080 } 00081 00082 /* 00083 * @brief set the direction in CW 00084 * @pre initialization of motor 00085 * @post new value of direction 00086 */ 00087 void mci_forward(void) 00088 { 00089 mci_direction = CW; 00090 } 00091 00092 /* 00093 * @brief set the direction in CCW 00094 * @pre initialization of motor 00095 * @post new value of direction 00096 */ 00097 void mci_backward(void) 00098 { 00099 mci_direction = CCW; 00100 } 00101 00102 /* 00103 * @brief direction visualization 00104 * @pre initialization of motor 00105 * @post get direction value 00106 */ 00107 U8 mci_get_direction(void) 00108 { 00109 return mci_direction; 00110 } 00111 00117 void mci_store_measured_speed(U8 measured_speed) 00118 { 00119 mci_measured_speed = measured_speed; 00120 } 00121 00128 U8 mci_get_measured_speed(void) 00129 { 00130 return mci_measured_speed; 00131 } 00132 00138 U16 mci_get_measured_current(void) 00139 { 00140 return (U16)(11*(mci_measured_current/128)); 00141 } 00142 00148 void mci_store_measured_current(U16 current) 00149 { 00150 mci_measured_current = (127 * mci_measured_current + 128*current)/128; 00151 } 00152 00159 void mci_run(void) 00160 { 00161 mci_run_stop = RUN; 00162 Disable_interrupt(); 00163 svpwm_init(); 00164 Do_Sensor_Interrupt(); 00165 Enable_interrupt(); 00166 PSC_Start(); 00167 } 00168 00175 void mci_stop(void) 00176 { 00177 PSC_Stop(); 00178 mci_run_stop = STOP; 00179 } 00180 00181 00182
1.5.3