00001
00014 #ifndef _MC_DRV_H_
00015 #define _MC_DRV_H_
00016
00017
00018 #define output_disconnected 0x01
00019
00020
00021 #define Set_timer_data_register_to_zero() (TCNT0=0x00)
00022
00023
00024 #define PSC_ONE_RAMP (0<<PMODE01)|(0<<PMODE00)
00025 #define PSC_TWO_RAMP (0<<PMODE01)|(1<<PMODE00)
00026 #define PSC_FOUR_RAMP (1<<PMODE01)|(0<<PMODE00)
00027 #define PSC_CENTERED (1<<PMODE01)|(1<<PMODE00)
00028
00029 #define RAMP_MODE_NUMBER PSC_ONE_RAMP
00030
00031 #define SET_PLOCK (1<<PLOCK0)
00032 #define RELEASE_PLOCK (0<<PLOCK0)
00033
00034 #define PRESC_NODIV (0<<PPRE01)|(0<<PPRE00)
00035 #define PRESC_DIV_BY_4 (0<<PPRE01)|(1<<PPRE00)
00036 #define PRESC_DIV_BY_16 (1<<PPRE01)|(0<<PPRE00)
00037 #define PRESC_DIV_BY_64 (1<<PPRE01)|(1<<PPRE00)
00038
00039 #define OUTPUT_ACTIVE_HIGH (1<<POP0)
00040 #define OUTPUT_ACTIVE_LOW (0<<POP0)
00041
00042
00043 #define HALL_A() (ANACOMP_0_vect)
00044 #define HALL_B() (ANACOMP_1_vect)
00045 #define HALL_C() (ANACOMP_2_vect)
00046
00047 #ifdef USE_INTERNAL_COMPARATORS
00048
00049 #define HALL_SENSOR_VALUE() (ACSR & 0x07)
00050 #else
00051
00052 #define HALL_SENSOR_VALUE() \
00053 ( (PIND & (1<<PIND7)) >> PIND7 ) \
00054 | ( (PINC & (1<<PINC6)) >> 5 ) \
00055 | ( (PIND & (1<<PIND5)) >> 3 )
00056 #endif
00057
00058 #define MIN_DELAY 2
00059 #define MAX_DELAY 40
00060 #define FILTER_DELAY 4
00061 #define MASK_DEMAG 2
00062
00063 #define Clear_Port_Q1() (PORTB &= ( ~(1<<PORTB0)))
00064 #define Clear_Port_Q3() (PORTC &= ( ~(1<<PORTC0)))
00065 #define Clear_Port_Q5() (PORTD &= ( ~(1<<PORTD0)))
00066 #define Clear_Port_Q2() (PORTB &= ( ~(1<<PORTB1)))
00067 #define Clear_Port_Q4() (PORTB &= ( ~(1<<PORTB6)))
00068 #define Clear_Port_Q6() (PORTB &= ( ~(1<<PORTB7)))
00069 #define Set_Port_Q2() (PORTB |= (1<<PORTB1))
00070 #define Set_Port_Q4() (PORTB |= (1<<PORTB6))
00071 #define Set_Port_Q6() (PORTB |= (1<<PORTB7))
00072
00073
00074 #define Set_none() \
00075 PSOC0 = (0<<POEN0A)|(0<<POEN0B);\
00076 PSOC1 = (0<<POEN1A)|(0<<POEN1B);\
00077 PSOC2 = (0<<POEN2A)|(0<<POEN2B);\
00078 Clear_Port_Q2(); \
00079 Clear_Port_Q4(); \
00080 Clear_Port_Q6(); \
00081 Clear_Port_Q1(); \
00082 Clear_Port_Q3(); \
00083 Clear_Port_Q5();
00084
00085 #define Set_Q1Q4() \
00086 PSOC0 = (0<<POEN0A)|(0<<POEN0B);\
00087 PSOC1 = (0<<POEN1A)|(1<<POEN1B);\
00088 PSOC2 = (1<<POEN2A)|(0<<POEN2B);
00089
00090 #define Set_Q1Q6() \
00091 PSOC1 = (0<<POEN1A)|(0<<POEN1B);\
00092 PSOC0 = (0<<POEN0A)|(1<<POEN0B);\
00093 PSOC2 = (1<<POEN2A)|(0<<POEN2B);
00094
00095 #define Set_Q3Q2() \
00096 PSOC0 = (0<<POEN0A)|(0<<POEN0B);\
00097 PSOC1 = (1<<POEN1A)|(0<<POEN1B);\
00098 PSOC2 = (0<<POEN2A)|(1<<POEN2B);
00099
00100 #define Set_Q3Q6() \
00101 PSOC2 = (0<<POEN2A)|(0<<POEN2B);\
00102 PSOC0 = (0<<POEN0A)|(1<<POEN0B);\
00103 PSOC1 = (1<<POEN1A)|(0<<POEN1B);
00104
00105 #define Set_Q5Q2() \
00106 PSOC1 = (0<<POEN1A)|(0<<POEN1B);\
00107 PSOC0 = (1<<POEN0A)|(0<<POEN0B);\
00108 PSOC2 = (0<<POEN2A)|(1<<POEN2B);
00109
00110 #define Set_Q5Q4() \
00111 PSOC2 = (0<<POEN2A)|(0<<POEN2B);\
00112 PSOC0 = (1<<POEN0A)|(0<<POEN0B);\
00113 PSOC1 = (0<<POEN1A)|(1<<POEN1B);
00114
00115
00116 #define switch_ON_LED() (PORTE &= ~(1<<PE2))
00117 #define switch_OFF_LED() (PORTE |= (1<<PE2))
00118
00119
00120 #define Set_EXT1() (PORTB |= (1<<PB3)) // EXT1
00121 #define Clear_EXT1() (PORTB &= ~(1<<PB3))
00122 #define Set_EXT2() (PORTB |= (1<<PB4)) // EXT2
00123 #define Clear_EXT2() (PORTB &= ~(1<<PB4))
00124 #define Set_EXT3() (PORTC |= (1<<PC1)) // EXT3
00125 #define Clear_EXT3() (PORTC &= ~(1<<PC1))
00126 #define Set_EXT4() (PORTC |= (1<<PC2)) // EXT4
00127 #define Clear_EXT4() (PORTC &= ~(1<<PC2))
00128 #define Set_EXT5() (PORTB |= (1<<PB5)) // EXT5
00129 #define Clear_EXT5() (PORTB &= ~(1<<PB5))
00130 #define Set_EXT6() (PORTE |= (1<<PE1)) // EXT6
00131 #define Clear_EXT6() (PORTE &= ~(1<<PE1))
00132 #define Toggle_EXT6() (PINE |= (1<<PINE1))
00133 #define Set_EXT7() (PORTD |= (1<<PD3)) // EXT7
00134 #define Clear_EXT7() (PORTD &= ~(1<<PD3))
00135 #define Set_EXT8() (PORTD |= (1<<PD4)) // EXT8
00136 #define Clear_EXT8() (PORTD &= ~(1<<PD4))
00137 #define Set_EXT9() (PORTE |= (1<<PE0)) // EXT9
00138 #define Clear_EXT9() (PORTE &= ~(1<<PE0))
00139 #define Toggle_EXT9() (PINE |= (1<<PINE0))
00140 #define Set_EXT10() (PORTD |= (1<<PD2)) // EXT10
00141 #define Clear_EXT10() (PORTD &= ~(1<<PD2))
00142
00143 #define Get_EXT1() ((PINB & (1<<PB3))>>PB3) // EXT1
00144 #define Get_EXT2() ((PINB & (1<<PB4))>>PB4) // EXT2
00145 #define Get_EXT3() ((PINC & (1<<PC1))>>PC1) // EXT3
00146 #define Get_EXT4() ((PINC & (1<<PC2))>>PC2) // EXT4
00147 #define Get_EXT5() ((PINB & (1<<PB5))>>PB5) // EXT5
00148 #define Get_EXT6() ((PINE & (1<<PE1))>>PE1) // EXT6
00149 #define Get_EXT7() ((PIND & (1<<PD3))>>PD3) // EXT7
00150 #define Get_EXT8() ((PIND & (1<<PD4))>>PD4) // EXT8
00151 #define Get_EXT9() ((PINE & (1<<PE0))>>PE0) // EXT9
00152 #define Get_EXT10() ((PIND & (1<<PD2))>>PD2) // EXT10
00153
00154
00155 #define CONV_INIT 0
00156 #define CONV_POT 1
00157 #define CONV_CURRENT 2
00158
00159 #define FREE 0
00160 #define BUSY 1
00161
00162
00163
00164
00165
00166 void mc_init_HW(void);
00167 void mc_init_SW(void);
00168 void mc_init_port(void);
00169 void mc_init_pwm(void);
00170 void mc_init_IT(void);
00171 void PSC0_Init (unsigned int OCRnRB,
00172 unsigned int OCRnSB,
00173 unsigned int OCRnRA,
00174 unsigned int OCRnSA);
00175
00176 void PSC1_Init (unsigned int OCRnRB,
00177 unsigned int OCRnSB,
00178 unsigned int OCRnRA,
00179 unsigned int OCRnSA);
00180
00181 void PSC2_Init (unsigned int OCRnRB,
00182 unsigned int OCRnSB,
00183 unsigned int OCRnRA,
00184 unsigned int OCRnSA);
00185
00186
00187 U8 mc_get_hall(void);
00188 void mc_duty_cycle(U8 level);
00189 void mc_switch_commutation(U8 position);
00190
00191
00192 void mc_config_sampling_period(void);
00193
00194
00195 void mc_config_time_estimation_speed(void);
00196 void mc_estimation_speed(void);
00197
00198
00199 void mc_ADC_Scheduler(void);
00200 U8 mc_Get_Current(void);
00201 U8 mc_Get_Potentiometer(void);
00202
00203
00204 void mc_set_Over_Current(U8 Level);
00205
00206
00207 S32 mc_get_Num_Turn(void);
00208 void mc_reset_Num_Turn(void);
00209
00210 void PSC_Stop(void);
00211 void PSC_Run(void);
00212
00213
00214 #endif