mc_interface.c

Go to the documentation of this file.
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 

Generated on Tue Sep 16 18:11:19 2008 for Atmel BLDC Sinusoidal on ATAVRMC100 by  doxygen 1.5.3