1 | #include "main.h"
|
2 |
|
3 | void init_onoff(void) {
|
4 |
|
5 | // A Channels
|
6 | PWMADDR |= (1<<PWM1PIN);
|
7 | PWMADDR |= (1<<PWM2PIN);
|
8 | PWMADDR |= (1<<PWM3PIN);
|
9 | PWMADDR |= (1<<PWM4PIN);
|
10 | PWMADDR |= (1<<PWM5PIN);
|
11 | PWMADDR |= (1<<PWM6PIN);
|
12 | PWMADDR |= (1<<PWM7PIN);
|
13 | PWMADDR |= (1<<PWM8PIN);
|
14 |
|
15 | // C Channels
|
16 | PWMCDDR |= (1<<PWM9PIN);
|
17 | PWMCDDR |= (1<<PWM10PIN);
|
18 | PWMCDDR |= (1<<PWM11PIN);
|
19 | PWMCDDR |= (1<<PWM12PIN);
|
20 | PWMCDDR |= (1<<PWM13PIN);
|
21 | PWMCDDR |= (1<<PWM14PIN);
|
22 | PWMCDDR |= (1<<PWM15PIN);
|
23 | PWMCDDR |= (1<<PWM16PIN);
|
24 |
|
25 | // B Channels
|
26 | PWMBDDR |= (1<<PWM17PIN);
|
27 | PWMBDDR |= (1<<PWM18PIN);
|
28 | PWMBDDR |= (1<<PWM19PIN);
|
29 | PWMBDDR |= (1<<PWM20PIN);
|
30 | PWMBDDR |= (1<<PWM21PIN);
|
31 | PWMBDDR |= (1<<PWM22PIN);
|
32 | PWMBDDR |= (1<<PWM23PIN);
|
33 | PWMBDDR |= (1<<PWM24PIN);
|
34 |
|
35 | // E Channels
|
36 | PWMEDDR |= (1<<PWM25PIN);
|
37 | PWMEDDR |= (1<<PWM26PIN);
|
38 | PWMEDDR |= (1<<PWM27PIN);
|
39 | PWMEDDR |= (1<<PWM28PIN);
|
40 | PWMEDDR |= (1<<PWM29PIN);
|
41 | PWMEDDR |= (1<<PWM30PIN);
|
42 | PWMEDDR |= (1<<PWM31PIN);
|
43 | PWMEDDR |= (1<<PWM32PIN);
|
44 |
|
45 | }
|
46 |
|
47 | void init_onoffchannels(void) {
|
48 |
|
49 | // A Channels
|
50 | PWMAPORT &= ~(1<<PWM1PIN);
|
51 | PWMAPORT &= ~(1<<PWM2PIN);
|
52 | PWMAPORT &= ~(1<<PWM3PIN);
|
53 | PWMAPORT &= ~(1<<PWM4PIN);
|
54 | PWMAPORT &= ~(1<<PWM5PIN);
|
55 | PWMAPORT &= ~(1<<PWM6PIN);
|
56 | PWMAPORT &= ~(1<<PWM7PIN);
|
57 | PWMAPORT &= ~(1<<PWM8PIN);
|
58 |
|
59 | // C Channels
|
60 | PWMCPORT &= ~(1<<PWM9PIN);
|
61 | PWMCPORT &= ~(1<<PWM10PIN);
|
62 | PWMCPORT &= ~(1<<PWM11PIN);
|
63 | PWMCPORT &= ~(1<<PWM12PIN);
|
64 | PWMCPORT &= ~(1<<PWM13PIN);
|
65 | PWMCPORT &= ~(1<<PWM14PIN);
|
66 | PWMCPORT &= ~(1<<PWM15PIN);
|
67 | PWMCPORT &= ~(1<<PWM16PIN);
|
68 |
|
69 | // B Channels
|
70 | PWMBPORT &= ~(1<<PWM17PIN);
|
71 | PWMBPORT &= ~(1<<PWM18PIN);
|
72 | PWMBPORT &= ~(1<<PWM19PIN);
|
73 | PWMBPORT &= ~(1<<PWM20PIN);
|
74 | PWMBPORT &= ~(1<<PWM21PIN);
|
75 | PWMBPORT &= ~(1<<PWM22PIN);
|
76 | PWMBPORT &= ~(1<<PWM23PIN);
|
77 | PWMBPORT &= ~(1<<PWM24PIN);
|
78 |
|
79 | // E Channels
|
80 | PWMEPORT &= ~(1<<PWM25PIN);
|
81 | PWMEPORT &= ~(1<<PWM26PIN);
|
82 | PWMEPORT &= ~(1<<PWM27PIN);
|
83 | PWMEPORT &= ~(1<<PWM28PIN);
|
84 | PWMEPORT &= ~(1<<PWM29PIN);
|
85 | PWMEPORT &= ~(1<<PWM30PIN);
|
86 | PWMEPORT &= ~(1<<PWM31PIN);
|
87 | PWMEPORT &= ~(1<<PWM32PIN);
|
88 |
|
89 | }
|
90 |
|
91 | void init_onoffmodes(void) {
|
92 |
|
93 | // Init OFF Mode
|
94 | for (int ia = 0; ia < NUM_OF_ONOFF_MODES; ia++) {
|
95 | for(int i = 0; i < NUM_OF_CHANS; i++) {
|
96 | onoffmodes[0][i] = 0;
|
97 | }
|
98 | }
|
99 | }
|
100 |
|
101 | void onoff(int channelnumber) {
|
102 | switch(channelnumber) {
|
103 | case 0:
|
104 | if (IOs[channelnumber] == 1) {
|
105 | PWMAPORT &= ~(1<<PWM1PIN);
|
106 | isIOs[channelnumber] = 0;
|
107 | } else {
|
108 | PWMAPORT |= (1<<PWM1PIN);
|
109 | isIOs[channelnumber] = 1;
|
110 | }
|
111 | break;
|
112 |
|
113 | case 1:
|
114 | if (IOs[channelnumber] == 1) {
|
115 | PWMAPORT &= ~(1<<PWM2PIN);
|
116 | isIOs[channelnumber] = 0;
|
117 | } else {
|
118 | PWMAPORT |= (1<<PWM2PIN);
|
119 | isIOs[channelnumber] = 1;
|
120 | }
|
121 | break;
|
122 |
|
123 | case 2:
|
124 | if (IOs[channelnumber] == 1) {
|
125 | PWMAPORT &= ~(1<<PWM3PIN);
|
126 | isIOs[channelnumber] = 0;
|
127 | } else {
|
128 | PWMAPORT |= (1<<PWM3PIN);
|
129 | isIOs[channelnumber] = 1;
|
130 | }
|
131 | break;
|
132 |
|
133 | case 3:
|
134 | if (IOs[channelnumber] == 1) {
|
135 | PWMAPORT &= ~(1<<PWM4PIN);
|
136 | isIOs[channelnumber] = 0;
|
137 | } else {
|
138 | PWMAPORT |= (1<<PWM4PIN);
|
139 | isIOs[channelnumber] = 1;
|
140 | }
|
141 | break;
|
142 |
|
143 | case 4:
|
144 | if (IOs[channelnumber] == 1) {
|
145 | PWMAPORT &= ~(1<<PWM5PIN);
|
146 | isIOs[channelnumber] = 0;
|
147 | } else {
|
148 | PWMAPORT |= (1<<PWM5PIN);
|
149 | isIOs[channelnumber] = 1;
|
150 | }
|
151 | break;
|
152 |
|
153 | case 5:
|
154 | if (IOs[channelnumber] == 1) {
|
155 | PWMAPORT &= ~(1<<PWM6PIN);
|
156 | isIOs[channelnumber] = 0;
|
157 | } else {
|
158 | PWMAPORT |= (1<<PWM6PIN);
|
159 | isIOs[channelnumber] = 1;
|
160 | }
|
161 | break;
|
162 |
|
163 | case 6:
|
164 | if (IOs[channelnumber] == 1) {
|
165 | PWMAPORT &= ~(1<<PWM7PIN);
|
166 | isIOs[channelnumber] = 0;
|
167 | } else {
|
168 | PWMAPORT |= (1<<PWM7PIN);
|
169 | isIOs[channelnumber] = 1;
|
170 | }
|
171 | break;
|
172 |
|
173 | case 7:
|
174 | if (IOs[channelnumber] == 1) {
|
175 | PWMAPORT &= ~(1<<PWM8PIN);
|
176 | isIOs[channelnumber] = 0;
|
177 | } else {
|
178 | PWMAPORT |= (1<<PWM8PIN);
|
179 | isIOs[channelnumber] = 1;
|
180 | }
|
181 | break;
|
182 |
|
183 | case 8:
|
184 | if (IOs[channelnumber] == 1) {
|
185 | PWMCPORT &= ~(1<<PWM9PIN);
|
186 | isIOs[channelnumber] = 0;
|
187 | } else {
|
188 | PWMCPORT |= (1<<PWM9PIN);
|
189 | isIOs[channelnumber] = 1;
|
190 | }
|
191 | break;
|
192 |
|
193 | case 9:
|
194 | if (IOs[channelnumber] == 1) {
|
195 | PWMCPORT &= ~(1<<PWM10PIN);
|
196 | isIOs[channelnumber] = 0;
|
197 | } else {
|
198 | PWMCPORT |= (1<<PWM10PIN);
|
199 | isIOs[channelnumber] = 1;
|
200 | }
|
201 | break;
|
202 |
|
203 | case 10:
|
204 | if (IOs[channelnumber] == 1) {
|
205 | PWMCPORT &= ~(1<<PWM11PIN);
|
206 | isIOs[channelnumber] = 0;
|
207 | } else {
|
208 | PWMCPORT |= (1<<PWM11PIN);
|
209 | isIOs[channelnumber] = 1;
|
210 | }
|
211 | break;
|
212 |
|
213 | case 11:
|
214 | if (IOs[channelnumber] == 1) {
|
215 | PWMCPORT &= ~(1<<PWM12PIN);
|
216 | isIOs[channelnumber] = 0;
|
217 | } else {
|
218 | PWMCPORT |= (1<<PWM12PIN);
|
219 | isIOs[channelnumber] = 1;
|
220 | }
|
221 | break;
|
222 |
|
223 | case 12:
|
224 | if (IOs[channelnumber] == 1) {
|
225 | PWMCPORT &= ~(1<<PWM13PIN);
|
226 | isIOs[channelnumber] = 0;
|
227 | } else {
|
228 | PWMCPORT |= (1<<PWM13PIN);
|
229 | isIOs[channelnumber] = 1;
|
230 | }
|
231 | break;
|
232 |
|
233 | case 13:
|
234 | if (IOs[channelnumber] == 1) {
|
235 | PWMCPORT &= ~(1<<PWM14PIN);
|
236 | isIOs[channelnumber] = 0;
|
237 | } else {
|
238 | PWMCPORT |= (1<<PWM14PIN);
|
239 | isIOs[channelnumber] = 1;
|
240 | }
|
241 | break;
|
242 |
|
243 | case 14:
|
244 | if (IOs[channelnumber] == 1) {
|
245 | PWMCPORT &= ~(1<<PWM15PIN);
|
246 | isIOs[channelnumber] = 0;
|
247 | } else {
|
248 | PWMCPORT |= (1<<PWM15PIN);
|
249 | isIOs[channelnumber] = 1;
|
250 | }
|
251 | break;
|
252 |
|
253 | case 15:
|
254 | if (IOs[channelnumber] == 1) {
|
255 | PWMCPORT &= ~(1<<PWM16PIN);
|
256 | isIOs[channelnumber] = 0;
|
257 | } else {
|
258 | PWMCPORT |= (1<<PWM16PIN);
|
259 | isIOs[channelnumber] = 1;
|
260 | }
|
261 | break;
|
262 |
|
263 | case 16:
|
264 | if (IOs[channelnumber] == 1) {
|
265 | PWMAPORT &= ~(1<<PWM17PIN);
|
266 | isIOs[channelnumber] = 0;
|
267 | } else {
|
268 | PWMAPORT |= (1<<PWM17PIN);
|
269 | isIOs[channelnumber] = 1;
|
270 | }
|
271 | break;
|
272 |
|
273 | case 17:
|
274 | if (IOs[channelnumber] == 1) {
|
275 | PWMAPORT &= ~(1<<PWM18PIN);
|
276 | isIOs[channelnumber] = 0;
|
277 | } else {
|
278 | PWMAPORT |= (1<<PWM18PIN);
|
279 | isIOs[channelnumber] = 1;
|
280 | }
|
281 | break;
|
282 |
|
283 | case 18:
|
284 | if (IOs[channelnumber] == 1) {
|
285 | PWMAPORT &= ~(1<<PWM19PIN);
|
286 | isIOs[channelnumber] = 0;
|
287 | } else {
|
288 | PWMAPORT |= (1<<PWM19PIN);
|
289 | isIOs[channelnumber] = 1;
|
290 | }
|
291 | break;
|
292 |
|
293 | case 19:
|
294 | if (IOs[channelnumber] == 1) {
|
295 | PWMAPORT &= ~(1<<PWM20PIN);
|
296 | isIOs[channelnumber] = 0;
|
297 | } else {
|
298 | PWMAPORT |= (1<<PWM20PIN);
|
299 | isIOs[channelnumber] = 1;
|
300 | }
|
301 | break;
|
302 |
|
303 | case 20:
|
304 | if (IOs[channelnumber] == 1) {
|
305 | PWMAPORT &= ~(1<<PWM21PIN);
|
306 | isIOs[channelnumber] = 0;
|
307 | } else {
|
308 | PWMAPORT |= (1<<PWM21PIN);
|
309 | isIOs[channelnumber] = 1;
|
310 | }
|
311 | break;
|
312 |
|
313 | case 21:
|
314 | if (IOs[channelnumber] == 1) {
|
315 | PWMAPORT &= ~(1<<PWM22PIN);
|
316 | isIOs[channelnumber] = 0;
|
317 | } else {
|
318 | PWMAPORT |= (1<<PWM22PIN);
|
319 | isIOs[channelnumber] = 1;
|
320 | }
|
321 | break;
|
322 |
|
323 | case 22:
|
324 | if (IOs[channelnumber] == 1) {
|
325 | PWMAPORT &= ~(1<<PWM23PIN);
|
326 | isIOs[channelnumber] = 0;
|
327 | } else {
|
328 | PWMAPORT |= (1<<PWM23PIN);
|
329 | isIOs[channelnumber] = 1;
|
330 | }
|
331 | break;
|
332 |
|
333 | case 23:
|
334 | if (IOs[channelnumber] == 1) {
|
335 | PWMAPORT &= ~(1<<PWM24PIN);
|
336 | isIOs[channelnumber] = 0;
|
337 | } else {
|
338 | PWMAPORT |= (1<<PWM24PIN);
|
339 | isIOs[channelnumber] = 1;
|
340 | }
|
341 | break;
|
342 |
|
343 | case 24:
|
344 | if (IOs[channelnumber] == 1) {
|
345 | PWMCPORT &= ~(1<<PWM25PIN);
|
346 | isIOs[channelnumber] = 0;
|
347 | } else {
|
348 | PWMCPORT |= (1<<PWM25PIN);
|
349 | isIOs[channelnumber] = 1;
|
350 | }
|
351 | break;
|
352 |
|
353 | case 25:
|
354 | if (IOs[channelnumber] == 1) {
|
355 | PWMCPORT &= ~(1<<PWM26PIN);
|
356 | isIOs[channelnumber] = 0;
|
357 | } else {
|
358 | PWMCPORT |= (1<<PWM26PIN);
|
359 | isIOs[channelnumber] = 1;
|
360 | }
|
361 | break;
|
362 |
|
363 | case 26:
|
364 | if (IOs[channelnumber] == 1) {
|
365 | PWMCPORT &= ~(1<<PWM27PIN);
|
366 | isIOs[channelnumber] = 0;
|
367 | } else {
|
368 | PWMCPORT |= (1<<PWM27PIN);
|
369 | isIOs[channelnumber] = 1;
|
370 | }
|
371 | break;
|
372 |
|
373 | case 27:
|
374 | if (IOs[channelnumber] == 1) {
|
375 | PWMCPORT &= ~(1<<PWM28PIN);
|
376 | isIOs[channelnumber] = 0;
|
377 | } else {
|
378 | PWMCPORT |= (1<<PWM28PIN);
|
379 | isIOs[channelnumber] = 1;
|
380 | }
|
381 | break;
|
382 |
|
383 | case 28:
|
384 | if (IOs[channelnumber] == 1) {
|
385 | PWMCPORT &= ~(1<<PWM29PIN);
|
386 | isIOs[channelnumber] = 0;
|
387 | } else {
|
388 | PWMCPORT |= (1<<PWM29PIN);
|
389 | isIOs[channelnumber] = 1;
|
390 | }
|
391 | break;
|
392 |
|
393 | case 29:
|
394 | if (IOs[channelnumber] == 1) {
|
395 | PWMCPORT &= ~(1<<PWM30PIN);
|
396 | isIOs[channelnumber] = 0;
|
397 | } else {
|
398 | PWMCPORT |= (1<<PWM30PIN);
|
399 | isIOs[channelnumber] = 1;
|
400 | }
|
401 | break;
|
402 |
|
403 | case 30:
|
404 | if (IOs[channelnumber] == 1) {
|
405 | PWMCPORT &= ~(1<<PWM31PIN);
|
406 | isIOs[channelnumber] = 0;
|
407 | } else {
|
408 | PWMCPORT |= (1<<PWM31PIN);
|
409 | isIOs[channelnumber] = 1;
|
410 | }
|
411 | break;
|
412 |
|
413 | case 31:
|
414 | if (IOs[channelnumber] == 1) {
|
415 | PWMCPORT &= ~(1<<PWM32PIN);
|
416 | isIOs[channelnumber] = 0;
|
417 | } else {
|
418 | PWMCPORT |= (1<<PWM32PIN);
|
419 | isIOs[channelnumber] = 1;
|
420 | }
|
421 | break;
|
422 |
|
423 | default:
|
424 | break;
|
425 | }
|
426 | }
|