Rev 20 | Rev 23 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 20 | Rev 21 | ||
|---|---|---|---|
| Line 141... | Line 141... | ||
| 141 | 141 | ||
| 142 | // if(lock) |
142 | // if(lock) |
| 143 | 143 | ||
| 144 | int intSample = sampleAverage / freqScale; |
144 | int intSample = sampleAverage / freqScale; |
| 145 | 145 | ||
| 146 | static unsigned strange = 0; |
- | |
| 147 | 146 | ||
| 148 | 147 | ||
| 149 | int deltaPd= pd/ phaseScale; |
148 | int deltaPd= pd/ phaseScale; |
| 150 | 149 | ||
| 151 | 150 | ||
| 152 | if(pd < -2000 || pd > 2000) |
151 | if(deltaPd == 0) |
| 153 | { |
152 | { |
| 154 | strange++; |
153 | if(pd > 0) |
| 155 | } |
154 | deltaPd =1; |
| 156 | 155 | ||
| - | 156 | if(pd< 0) |
|
| 157 | arr = intSample + deltaPd; |
157 | deltaPd =-1; |
| - | 158 | } |
|
| 158 | 159 | ||
| - | 160 | arr = intSample + deltaPd; |
|
| 159 | 161 | ||
| 160 | 162 | ||
| - | 163 | // clamp values |
|
| 161 | 164 | ||
| 162 | 165 | ||
| 163 | if(arr > 65535) |
166 | if(arr > 65535) |
| 164 | arr = 65535; |
167 | arr = 65535; |
| 165 | if(arr < 1000) |
168 | if(arr < 1000) |
| 166 | arr = 1000; |
169 | arr = 1000; |
| 167 | 170 | ||
| 168 | - | ||
| 169 | - | ||
| 170 | count = arr; |
171 | count = arr; |
| 171 | 172 | ||
| 172 | TIM2->ARR = arr -1; |
173 | TIM2->ARR = arr -1; |
| 173 | 174 | ||
| 174 | nominal = intSample * (long) (phase10)/ 3600; |
175 | nominal = intSample * (long) (phase10)/ 3600; |
| 175 | - | ||
| 176 | - | ||
| 177 | 176 | ||
| 178 | float nomRPM = 30E6 / (MICROSECS_PULSE * arr); |
177 | float nomRPM = 30E6 / (MICROSECS_PULSE * arr); |
| 179 | 178 | ||
| 180 | rpm = nomRPM ; |
179 | rpm = nomRPM ; |
| 181 | 180 | ||
| 182 | - | ||
| 183 | adjustRPM(); |
181 | adjustRPM(); |
| 184 | } |
182 | } |
| 185 | 183 | ||
| 186 | 184 | ||
| 187 | 185 | ||
| Line 194... | Line 192... | ||
| 194 | } |
192 | } |
| 195 | 193 | ||
| 196 | 194 | ||
| 197 | 195 | ||
| 198 | // specialist timer setup : |
196 | // specialist timer setup : |
| - | 197 | // timer 2 is a reloading counter with a cycle period controlled by its ARR register. |
|
| - | 198 | // Just before terminal count it produces a pulse of 200 microseconds using its CCR1 count compare register, |
|
| - | 199 | // used to drive the strobe LED. |
|
| - | 200 | // Timer 3 is then used to count the time of the reload of Timer 2 via its Trigger Out being selected as reload. |
|
| - | 201 | // The time is latched in TIM3 CCR2 |
|
| - | 202 | // and ignition pulses are latched on TIM3 CCR1, to allow it to be used in a PLL. |
|
| - | 203 | // |
|
| 199 | void initTimer2() |
204 | void initTimers() |
| 200 | { |
205 | { |
| 201 | rccEnableTIM2(FALSE); |
206 | rccEnableTIM2(FALSE); |
| 202 | rccResetTIM2(); |
207 | rccResetTIM2(); |
| 203 | 208 | ||
| 204 | TIM2->PSC = 72*MICROSECS_PULSE; |
209 | TIM2->PSC = 72*MICROSECS_PULSE; |
| Line 216... | Line 221... | ||
| 216 | 221 | ||
| 217 | 222 | ||
| 218 | TIM2->CR2 = TIM_CR2_MMS_1 ; // trigger out is 010 = update |
223 | TIM2->CR2 = TIM_CR2_MMS_1 ; // trigger out is 010 = update |
| 219 | 224 | ||
| 220 | 225 | ||
| 221 | // change the TIM2 CC2 to TIM3 CC1 |
- | |
| 222 | rccEnableTIM3(FALSE); |
226 | rccEnableTIM3(FALSE); |
| 223 | rccResetTIM3(); |
227 | rccResetTIM3(); |
| 224 | // TIM3 on the PA6 ... pins : remap code 00 |
228 | // TIM3 on the PA6 ... pins : remap code 00 |
| 225 | AFIO->MAPR &= ~ AFIO_MAPR_TIM3_REMAP; |
229 | AFIO->MAPR &= ~ AFIO_MAPR_TIM3_REMAP; |
| 226 | 230 | ||
| 227 | TIM3->PSC = 72*MICROSECS_PULSE; |
231 | TIM3->PSC = 72*MICROSECS_PULSE; |