1 | //****************************************************************************
|
2 | // @Defines
|
3 | //****************************************************************************
|
4 |
|
5 | // USER CODE BEGIN (CC1_General,4)
|
6 | /*
|
7 | #define MAX 65535 // untere Grenze
|
8 | #define MIN 65135 // obere Grenze
|
9 | #define MAXDREH 3000 // maximale Drehzahl
|
10 |
|
11 | */
|
12 | // USER CODE END
|
13 |
|
14 |
|
15 | //****************************************************************************
|
16 | // @Global Variables
|
17 | //****************************************************************************
|
18 |
|
19 | // USER CODE BEGIN (CC1_General,7)
|
20 | volatile unsigned int CC9alt; // Dummy für Inhalt bei der vorheringen pos. Flanke (global)
|
21 | volatile unsigned long int Counter_dif; // Inhaltdifferenz des Timers bei 2 pos. Flanken
|
22 | volatile unsigned long int Drehzahl_mot; // Istdrehzahl
|
23 |
|
24 |
|
25 | //****************************************************************************
|
26 | // @Prototypes Of Local Functions
|
27 | //****************************************************************************
|
28 |
|
29 | // USER CODE BEGIN (CC1_General,9)
|
30 |
|
31 | unsigned long int Drehzahl (void); // Funktion zur Berechnung der Drehzahl
|
32 | //unsigned long int Drehz_setzen(int); // Solldrehzahl setzen mit Überwinden des Anlaufmomentes
|
33 |
|
34 | // USER CODE END
|
35 |
|
36 |
|
37 |
|
38 |
|
39 | //****************************************************************************
|
40 | // Variablen
|
41 | //****************************************************************************
|
42 | unsigned int Counter = 0; // zum Zählen der Interrupts
|
43 | //int Pulsbreite = 400;
|
44 | //unsigned long int Hexwert; // der entspr. Wert für CC2_CC30
|
45 |
|
46 |
|
47 | //****************************************************************************
|
48 | // Unterfunktionen
|
49 | //****************************************************************************
|
50 | unsigned long int Drehzahl(void)
|
51 | {
|
52 | unsigned long int Drehz =0;
|
53 |
|
54 | /*if (Counter ==1)
|
55 | {
|
56 | CC9alt = 0x0000;
|
57 | } */
|
58 | if (CC1_CC9 < CC9alt) // Heißt: der Timer ist abgelaufen
|
59 | {
|
60 | Counter_dif = 0-(CC1_CC9-CC9alt);
|
61 | //Counter=0;
|
62 | }
|
63 | else
|
64 | {
|
65 | Counter_dif = CC1_CC9-CC9alt;
|
66 | }
|
67 |
|
68 | CC9alt = CC1_CC9;
|
69 |
|
70 |
|
71 | Drehz = 1200000L/(int)Counter_dif; // Drehzahl in Umdrehungen pro Minute
|
72 |
|
73 |
|
74 | return Drehz;
|
75 | }
|
76 |
|
77 |
|
78 | // USER CODE END
|
79 |
|
80 | void CC1_vInit(void)
|
81 | {
|
82 | // USER CODE BEGIN (Init,2)
|
83 |
|
84 | CC9alt = 0x0000; // Vorbelegen für die erste Berechnung der Periode
|
85 |
|
86 | // USER CODE END
|
87 |
|
88 | /// -----------------------------------------------------------------------
|
89 | /// Configuration of CAPCOM1 Control:
|
90 | /// -----------------------------------------------------------------------
|
91 | /// - the contents of the port register is changed by the CAPCOM1 unit
|
92 | /// - staggered mode is disabled
|
93 |
|
94 | CC1_IOC = 0x0004; // load CAPCOM1 I/O control register
|
95 |
|
96 | /// -----------------------------------------------------------------------
|
97 | /// Configuration of CAPCOM1 Timer 0:
|
98 | /// -----------------------------------------------------------------------
|
99 | /// - timer 0 works in timer mode
|
100 | /// - prescaler factor is 4
|
101 | /// - timer 0 run bit is set
|
102 |
|
103 | /// -----------------------------------------------------------------------
|
104 | /// Configuration of CAPCOM1 Timer 1:
|
105 | /// -----------------------------------------------------------------------
|
106 | /// - timer 1 works in timer mode
|
107 | /// - prescaler factor is 1
|
108 | /// - timer 1 run bit is reset
|
109 |
|
110 |
|
111 | CC1_T01CON = 0x0002; // load CAPCOM1 timer 0 and timer 1 control
|
112 | // register
|
113 |
|
114 | CC1_T0 = 0x0000; // load CAPCOM1 timer 0 register
|
115 |
|
116 | CC1_T0REL = 0x0000; // load CAPCOM1 timer 0 reload register
|
117 |
|
118 | CC1_T1 = 0x0000; // load CAPCOM1 timer 1 register
|
119 |
|
120 | CC1_T1REL = 0x0000; // load CAPCOM1 timer 1 reload register
|
121 |
|
122 | /// -----------------------------------------------------------------------
|
123 | /// Configuration of the used CAPCOM1 Timer Port Pins:
|
124 | /// -----------------------------------------------------------------------
|
125 |
|
126 |
|
127 | /// -----------------------------------------------------------------------
|
128 | /// Configuration of the used CAPCOM1 Timer Interrupts:
|
129 | /// -----------------------------------------------------------------------
|
130 | /// Tmr0 service request node configuration:
|
131 | /// - Tmr0 interrupt priority level (ILVL) = 9
|
132 | /// - Tmr0 interrupt group level (GLVL) = 1
|
133 | /// - Tmr0 group priority extension (GPX) = 0
|
134 |
|
135 | CC1_T0IC = 0x0065;
|
136 |
|
137 |
|
138 |
|
139 | /// -----------------------------------------------------------------------
|
140 | /// Configuration of the used CAPCOM1 Channel 0:
|
141 | /// -----------------------------------------------------------------------
|
142 | /// - channel 0 is disabled
|
143 |
|
144 | CC1_CC0 = 0x0000; // load CAPCOM1 channel 0 register
|
145 |
|
146 | /// -----------------------------------------------------------------------
|
147 | /// Configuration of the used CAPCOM1 Channel 1:
|
148 | /// -----------------------------------------------------------------------
|
149 | /// - channel 1 is disabled
|
150 |
|
151 | CC1_CC1 = 0x0000; // load CAPCOM1 channel 1 register
|
152 |
|
153 | /// -----------------------------------------------------------------------
|
154 | /// Configuration of the used CAPCOM1 Channel 2:
|
155 | /// -----------------------------------------------------------------------
|
156 | /// - channel 2 is disabled
|
157 |
|
158 | CC1_CC2 = 0x0000; // load CAPCOM1 channel 2 register
|
159 |
|
160 | /// -----------------------------------------------------------------------
|
161 | /// Configuration of the used CAPCOM1 Channel 3:
|
162 | /// -----------------------------------------------------------------------
|
163 | /// - channel 3 is disabled
|
164 |
|
165 | CC1_CC3 = 0x0000; // load CAPCOM1 channel 3 register
|
166 |
|
167 | /// -----------------------------------------------------------------------
|
168 | /// Configuration of the used CAPCOM1 Channel 4:
|
169 | /// -----------------------------------------------------------------------
|
170 | /// - channel 4 is disabled
|
171 |
|
172 | CC1_CC4 = 0x0000; // load CAPCOM1 channel 4 register
|
173 |
|
174 | /// -----------------------------------------------------------------------
|
175 | /// Configuration of the used CAPCOM1 Channel 5:
|
176 | /// -----------------------------------------------------------------------
|
177 | /// - channel 5 is disabled
|
178 |
|
179 | CC1_CC5 = 0x0000; // load CAPCOM1 channel 5 register
|
180 |
|
181 | /// -----------------------------------------------------------------------
|
182 | /// Configuration of the used CAPCOM1 Channel 6:
|
183 | /// -----------------------------------------------------------------------
|
184 | /// - channel 6 is disabled
|
185 |
|
186 | CC1_CC6 = 0x0000; // load CAPCOM1 channel 6 register
|
187 |
|
188 | /// -----------------------------------------------------------------------
|
189 | /// Configuration of the used CAPCOM1 Channel 7:
|
190 | /// -----------------------------------------------------------------------
|
191 | /// - channel 7 is disabled
|
192 |
|
193 | CC1_CC7 = 0x0000; // load CAPCOM1 channel 7 register
|
194 |
|
195 | /// -----------------------------------------------------------------------
|
196 | /// Configuration of the used CAPCOM1 Channel 8:
|
197 | /// -----------------------------------------------------------------------
|
198 | /// - channel 8 is disabled
|
199 |
|
200 | CC1_CC8 = 0x0000; // load CAPCOM1 channel 8 register
|
201 |
|
202 | /// -----------------------------------------------------------------------
|
203 | /// Configuration of the used CAPCOM1 Channel 9:
|
204 | /// -----------------------------------------------------------------------
|
205 | /// - capture on positive transition (rising edge) at pin CC9IO (P2.9)
|
206 | /// - CC9 allocated to CAPCOM1 timer 0
|
207 | /// - single event mode is disabled
|
208 |
|
209 |
|
210 | CC1_CC9 = 0x0000; // load CAPCOM1 channel 9 register
|
211 |
|
212 | /// -----------------------------------------------------------------------
|
213 | /// Configuration of the used CAPCOM1 Channel 10:
|
214 | /// -----------------------------------------------------------------------
|
215 | /// - channel 10 is disabled
|
216 |
|
217 | CC1_CC10 = 0x0000; // load CAPCOM1 channel 10 register
|
218 |
|
219 | /// -----------------------------------------------------------------------
|
220 | /// Configuration of the used CAPCOM1 Channel 11:
|
221 | /// -----------------------------------------------------------------------
|
222 | /// - channel 11 is disabled
|
223 |
|
224 | CC1_CC11 = 0x0000; // load CAPCOM1 channel 11 register
|
225 |
|
226 | /// -----------------------------------------------------------------------
|
227 | /// Configuration of the used CAPCOM1 Channel 12:
|
228 | /// -----------------------------------------------------------------------
|
229 | /// - channel 12 is disabled
|
230 |
|
231 | CC1_CC12 = 0x0000; // load CAPCOM1 channel 12 register
|
232 |
|
233 | /// -----------------------------------------------------------------------
|
234 | /// Configuration of the used CAPCOM1 Channel 13:
|
235 | /// -----------------------------------------------------------------------
|
236 | /// - channel 13 is disabled
|
237 |
|
238 | CC1_CC13 = 0x0000; // load CAPCOM1 channel 13 register
|
239 |
|
240 | /// -----------------------------------------------------------------------
|
241 | /// Configuration of the used CAPCOM1 Channel 14:
|
242 | /// -----------------------------------------------------------------------
|
243 | /// - channel 14 is disabled
|
244 |
|
245 | CC1_CC14 = 0x0000; // load CAPCOM1 channel 14 register
|
246 |
|
247 | /// -----------------------------------------------------------------------
|
248 | /// Configuration of the used CAPCOM1 Channel 15:
|
249 | /// -----------------------------------------------------------------------
|
250 | /// - channel 15 is disabled
|
251 |
|
252 | CC1_CC15 = 0x0000; // load CAPCOM1 channel 15 register
|
253 |
|
254 | CC1_M0 = 0x0000; // load CAPCOM1 mode register 0
|
255 | CC1_M1 = 0x0000; // load CAPCOM1 mode register 1
|
256 | CC1_M2 = 0x0010; // load CAPCOM1 mode register 2
|
257 | CC1_M3 = 0x0000; // load CAPCOM1 mode register 3
|
258 |
|
259 | CC1_DRM = 0x0000; // load CAPCOM1 double-register mode register
|
260 |
|
261 | CC1_SEM = 0x0000; // load CAPCOM1 single event mode register
|
262 |
|
263 | CC1_SEE = 0x0000; // load CAPCOM1 single event enable register
|
264 |
|
265 | CC1_OUT = 0x0000; // load CAPCOM1 compare output register
|
266 |
|
267 | /// -----------------------------------------------------------------------
|
268 | /// Configuration of the used CAPCOM1 Channel Port Pins:
|
269 | /// -----------------------------------------------------------------------
|
270 | /// - P2.9 is used for CAPCOM1 Input (CC9IO)
|
271 |
|
272 |
|
273 | /// -----------------------------------------------------------------------
|
274 | /// Configuration of the used CAPCOM1 Channels Interrupts:
|
275 | /// -----------------------------------------------------------------------
|
276 | /// CC9 service request node configuration:
|
277 | /// - CC9 interrupt priority level (ILVL) = 9
|
278 | /// - CC9 interrupt group level (GLVL) = 3
|
279 | /// - CC9 group priority extension (GPX) = 0
|
280 |
|
281 | CC1_CC9IC = 0x0067;
|
282 |
|
283 |
|
284 |
|
285 | CC1_T01CON_T0R = 1; // set CAPCOM1 timer 0 run bit
|
286 |
|
287 | // USER CODE BEGIN (Init,3)
|
288 |
|
289 | // USER CODE END
|
290 |
|
291 | } // End of function CC1_vInit
|
292 |
|
293 |
|
294 | //****************************************************************************
|
295 | // @Function void CC1_viTmr0(void)
|
296 | //
|
297 | //----------------------------------------------------------------------------
|
298 | // @Description This is the interrupt service routine for the CAPCOM1 timer
|
299 | // 0. It is called when overflow of the timer 0 register
|
300 | // occurs.
|
301 | // Please note that you have to add application specific code
|
302 | // to this function.
|
303 | //
|
304 | //----------------------------------------------------------------------------
|
305 | // @Returnvalue None
|
306 | //
|
307 | //----------------------------------------------------------------------------
|
308 | // @Parameters None
|
309 | //
|
310 | //----------------------------------------------------------------------------
|
311 | // @Date 21.11.2007
|
312 | //
|
313 | //****************************************************************************
|
314 |
|
315 | // USER CODE BEGIN (Tmr0,1)
|
316 |
|
317 | // USER CODE END
|
318 |
|
319 | void CC1_viTmr0(void) interrupt CC1_T0INT using RB_LEVEL9
|
320 | {
|
321 | // USER CODE BEGIN (Tmr0,2)
|
322 |
|
323 | // USER CODE END
|
324 |
|
325 | } // End of function CC1_viTmr0
|
326 |
|
327 |
|
328 | //****************************************************************************
|
329 | // @Function void CC1_viCC9(void)
|
330 | //
|
331 | //----------------------------------------------------------------------------
|
332 | // @Description This is the interrupt service routine for the CAPCOM1
|
333 | // register CC9. If the content of the corresponding compare
|
334 | // timer (configurable) equals the content of the
|
335 | // capture/compare register CC9 or if a capture event occurs
|
336 | // at the associated port pin, the interrupt request flag is
|
337 | // set and an interrupt is triggered (only if enabled).
|
338 | // Please note that you have to add application specific code
|
339 | // to this function.
|
340 | //
|
341 | //----------------------------------------------------------------------------
|
342 | // @Returnvalue None
|
343 | //
|
344 | //----------------------------------------------------------------------------
|
345 | // @Parameters None
|
346 | //
|
347 | //----------------------------------------------------------------------------
|
348 | // @Date 21.11.2007
|
349 | //
|
350 | //****************************************************************************
|
351 |
|
352 | // USER CODE BEGIN (CC9,1)
|
353 |
|
354 | // USER CODE END
|
355 |
|
356 | void CC1_viCC9(void) interrupt CC1_CC9INT using RB_LEVEL9
|
357 | {
|
358 | // USER CODE BEGIN (CC9,2)
|
359 |
|
360 | Counter++; // zählen der Interrupts und der Encoderimpulse
|
361 |
|
362 | Drehzahl_mot = Drehzahl();
|
363 |
|
364 |
|
365 |
|
366 | // USER CODE END
|
367 |
|
368 | } // End of function CC1_viCC9
|