30 static int g_ecap1_in_use=0;
31 static int g_ecap2_in_use=0;
32 static int g_ecap3_in_use=0;
33 static int g_ecap4_in_use=0;
34 static int g_ecap5_in_use=0;
35 static int g_ecap6_in_use=0;
48 case 1:
if(!g_ecap6_in_use){
51 TMC_BASE_PIO->CTL[0].PUD &= ~(0x1 << 1);
52 TMC_BASE_PIO->CTL[0].QSEL1 &= ~((
Uint32)0x3 << 2);
53 TMC_BASE_PIO->CTL[0].MUX1 |= ((
Uint32)0x2 << 2);
54 ECAP = TMC_BASE_ECAP6;
62 case 3:
if(!g_ecap5_in_use){
65 TMC_BASE_PIO->CTL[0].PUD &= ~(0x1 << 3);
66 TMC_BASE_PIO->CTL[0].QSEL1 &= ~((
Uint32)0x3 << 6);
67 TMC_BASE_PIO->CTL[0].MUX1 |= ((
Uint32)0x2 << 6);
68 ECAP = TMC_BASE_ECAP5;
76 case 5:
if(!g_ecap1_in_use){
79 TMC_BASE_PIO->CTL[0].PUD &= ~(0x1 << 5);
80 TMC_BASE_PIO->CTL[0].QSEL1 &= ~((
Uint32)0x3 << 10);
81 TMC_BASE_PIO->CTL[0].MUX1 |= ((
Uint32)0x3 << 10);
82 ECAP = TMC_BASE_ECAP1;
90 case 7:
if(!g_ecap2_in_use){
93 TMC_BASE_PIO->CTL[0].PUD &= ~((
Uint32)0x1 << 7);
94 TMC_BASE_PIO->CTL[0].QSEL1 &= ~((
Uint32)0x3 << 14);
95 TMC_BASE_PIO->CTL[0].MUX1 |= ((
Uint32)0x3 << 14);
96 ECAP = TMC_BASE_ECAP2;
104 case 9:
if(!g_ecap3_in_use){
107 TMC_BASE_PIO->CTL[0].PUD &= ~((
Uint32)0x1 << 9);
108 TMC_BASE_PIO->CTL[0].QSEL1 &= ~((
Uint32)0x3 << 18);
109 TMC_BASE_PIO->CTL[0].MUX1 |= ((
Uint32)0x3 << 18);
110 ECAP = TMC_BASE_ECAP3;
118 case 11:
if(!g_ecap4_in_use){
121 TMC_BASE_PIO->CTL[0].PUD &= ~(0x1 << 11);
122 TMC_BASE_PIO->CTL[0].QSEL1 &= ~((
Uint32)0x3 << 22);
123 TMC_BASE_PIO->CTL[0].MUX1 |= ((
Uint32)0x3 << 22);
124 ECAP = TMC_BASE_ECAP4;
132 case 24:
if(!g_ecap1_in_use){
135 TMC_BASE_PIO->CTL[0].PUD &= ~((
Uint32)0x1 << 24);
136 TMC_BASE_PIO->CTL[0].QSEL2 &= ~((
Uint32)0x3 << 16);
137 TMC_BASE_PIO->CTL[0].MUX2 |= ((
Uint32)0x1 << 16);
138 ECAP = TMC_BASE_ECAP1;
146 case 25:
if(!g_ecap2_in_use){
149 TMC_BASE_PIO->CTL[0].PUD &= ~((
Uint32)0x1 << 25);
150 TMC_BASE_PIO->CTL[0].QSEL2 &= ~((
Uint32)0x3 << 18);
151 TMC_BASE_PIO->CTL[0].MUX2 |= ((
Uint32)0x1 << 18);
152 ECAP = TMC_BASE_ECAP2;
160 case 26:
if(!g_ecap3_in_use){
163 TMC_BASE_PIO->CTL[0].PUD &= ~((
Uint32)0x1 << 26);
164 TMC_BASE_PIO->CTL[0].QSEL2 &= ~((
Uint32)0x3 << 20);
165 TMC_BASE_PIO->CTL[0].MUX2 |= ((
Uint32)0x1 << 20);
166 ECAP = TMC_BASE_ECAP3;
174 case 27:
if(!g_ecap4_in_use){
177 TMC_BASE_PIO->CTL[0].PUD &= ~((
Uint32)0x1 << 27);
178 TMC_BASE_PIO->CTL[0].QSEL2 &= ~((
Uint32)0x3 << 22);
179 TMC_BASE_PIO->CTL[0].MUX2 |= ((
Uint32)0x1 << 22);
180 ECAP = TMC_BASE_ECAP4;
188 case 34:
if(!g_ecap1_in_use){
191 TMC_BASE_PIO->CTL[1].PUD &= ~(0x1 << 2);
192 TMC_BASE_PIO->CTL[1].QSEL1 &= ~((
Uint32)0x3 << 4);
193 TMC_BASE_PIO->CTL[1].MUX1 |= ((
Uint32)0x1 << 4);
194 ECAP = TMC_BASE_ECAP1;
202 case 37:
if(!g_ecap2_in_use){
205 TMC_BASE_PIO->CTL[1].PUD &= ~(0x1 << 5);
206 TMC_BASE_PIO->CTL[1].QSEL1 &= ~((
Uint32)0x3 << 10);
207 TMC_BASE_PIO->CTL[1].MUX1 |= ((
Uint32)0x3 << 10);
208 ECAP = TMC_BASE_ECAP2;
216 case 48:
if(!g_ecap5_in_use){
219 TMC_BASE_PIO->CTL[1].PUD &= ~((
Uint32)0x1 << 16);
220 TMC_BASE_PIO->CTL[1].QSEL2 &= ~((
Uint32)0x3);
221 TMC_BASE_PIO->CTL[1].MUX2 |= ((
Uint32)0x1);
222 ECAP = TMC_BASE_ECAP5;
230 case 49:
if(!g_ecap6_in_use){
233 TMC_BASE_PIO->CTL[1].PUD &= ~((
Uint32)0x1 << 17);
234 TMC_BASE_PIO->CTL[1].QSEL2 &= ~((
Uint32)0x3 << 2);
235 TMC_BASE_PIO->CTL[1].MUX2 |= ((
Uint32)0x1 << 2);
236 ECAP = TMC_BASE_ECAP6;
246 ECAP->
ECEINT &= ~(0xFFFF);
247 ECAP->
ECCLR |= 0xFFFF;
248 ECAP->
ECCTL1 &= ~(0x1 << 8);
249 ECAP->
ECCTL2 &= ~(0x1 << 4);
252 ECAP->
ECCTL1 &= ~(0x3E00);
254 ECAP->
ECCTL2 |= (0x3 << 1);
257 ECAP->
ECCTL1 &= ~(0x1 << 2);
258 ECAP->
ECCTL1 &= ~(0x1 << 4);
259 ECAP->
ECCTL1 &= ~(0x1 << 6);
261 ECAP->
ECCTL1 |= (0x1 << 1);
262 ECAP->
ECCTL1 |= (0x1 << 3);
263 ECAP->
ECCTL1 |= (0x1 << 5);
264 ECAP->
ECCTL1 |= (0x1 << 7);
266 ECAP->
ECCTL2 &= ~(0x1 << 5);
267 ECAP->
ECCTL2 |= (0x3 << 6);
269 ECAP->
ECCTL1 |= (0x1 << 8);
270 ECAP->
ECCTL2 |= (0x1 << 4);
271 ECAP->
ECCTL2 |= (0x1 << 3);
272 ECAP->
ECEINT |= (0x1 << 4);
273 ECAP->
ECEINT |= (0x1 << 5);
291 if(event > 0 && event <= 7){
294 case 1:
if(g_ecap6_in_use){
295 TMC_BASE_ECAP6->ECEINT |= (0x1 << event);
296 TMC_BASE_INT_REGS->ECAP6_INT = (
Uint32)isr;
297 TMC_BASE_PIE->GROUP[3].IER |= 0x20;
303 case 3:
if(g_ecap5_in_use){
304 TMC_BASE_ECAP5->ECEINT |= (0x1 << event);
305 TMC_BASE_INT_REGS->ECAP5_INT = (
Uint32)isr;
306 TMC_BASE_PIE->GROUP[3].IER |= 0x10;
312 case 5:
if(g_ecap1_in_use){
313 TMC_BASE_ECAP1->ECEINT |= (0x1 << event);
314 TMC_BASE_INT_REGS->ECAP1_INT = (
Uint32)isr;
315 TMC_BASE_PIE->GROUP[3].IER |= 0x1;
321 case 7:
if(g_ecap2_in_use){
322 TMC_BASE_ECAP2->ECEINT |= (0x1 << event);
323 TMC_BASE_INT_REGS->ECAP2_INT = (
Uint32)isr;
324 TMC_BASE_PIE->GROUP[3].IER |= 0x2;
330 case 9:
if(g_ecap3_in_use){
331 TMC_BASE_ECAP3->ECEINT |= (0x1 << event);
332 TMC_BASE_INT_REGS->ECAP3_INT = (
Uint32)isr;
333 TMC_BASE_PIE->GROUP[3].IER |= 0x4;
339 case 11:
if(g_ecap4_in_use){
340 TMC_BASE_ECAP4->ECEINT |= (0x1 << event);
341 TMC_BASE_INT_REGS->ECAP4_INT = (
Uint32)isr;
342 TMC_BASE_PIE->GROUP[3].IER |= 0x8;
348 case 24:
if(g_ecap1_in_use){
349 TMC_BASE_ECAP1->ECEINT |= (0x1 << event);
350 TMC_BASE_INT_REGS->ECAP1_INT = (
Uint32)isr;
351 TMC_BASE_PIE->GROUP[3].IER |= 0x1;
357 case 25:
if(g_ecap2_in_use){
358 TMC_BASE_ECAP2->ECEINT |= (0x1 << event);
359 TMC_BASE_INT_REGS->ECAP2_INT = (
Uint32)isr;
360 TMC_BASE_PIE->GROUP[3].IER |= 0x2;
366 case 26:
if(g_ecap3_in_use){
367 TMC_BASE_ECAP3->ECEINT |= (0x1 << event);
368 TMC_BASE_INT_REGS->ECAP3_INT = (
Uint32)isr;
369 TMC_BASE_PIE->GROUP[3].IER |= 0x4;
375 case 27:
if(g_ecap4_in_use){
376 TMC_BASE_ECAP4->ECEINT |= (0x1 << event);
377 TMC_BASE_INT_REGS->ECAP4_INT = (
Uint32)isr;
378 TMC_BASE_PIE->GROUP[3].IER |= 0x8;
384 case 34:
if(g_ecap1_in_use){
385 TMC_BASE_ECAP1->ECEINT |= (0x1 << event);
386 TMC_BASE_INT_REGS->ECAP1_INT = (
Uint32)isr;
387 TMC_BASE_PIE->GROUP[3].IER |= 0x1;
393 case 37:
if(g_ecap2_in_use){
394 TMC_BASE_ECAP2->ECEINT |= (0x1 << event);
395 TMC_BASE_INT_REGS->ECAP2_INT = (
Uint32)isr;
396 TMC_BASE_PIE->GROUP[3].IER |= 0x2;
402 case 48:
if(g_ecap5_in_use){
403 TMC_BASE_ECAP5->ECEINT |= (0x1 << event);
404 TMC_BASE_INT_REGS->ECAP5_INT = (
Uint32)isr;
405 TMC_BASE_PIE->GROUP[3].IER |= 0x10;
411 case 49:
if(g_ecap6_in_use){
412 TMC_BASE_ECAP6->ECEINT |= (0x1 << event);
413 TMC_BASE_INT_REGS->ECAP6_INT = (
Uint32)isr;
414 TMC_BASE_PIE->GROUP[3].IER |= 0x20;
428 TMC_BASE_PIE->CTRL |= 0x01;
448 if((frequency > 1000000) || (frequency < 1)){
451 else if(dutycycle > 100){
456 case 1: ECAP = TMC_BASE_ECAP6;
458 case 3: ECAP = TMC_BASE_ECAP5;
460 case 5: ECAP = TMC_BASE_ECAP1;
462 case 7: ECAP = TMC_BASE_ECAP2;
464 case 9: ECAP = TMC_BASE_ECAP3;
466 case 11: ECAP = TMC_BASE_ECAP4;
468 case 24: ECAP = TMC_BASE_ECAP1;
470 case 25: ECAP = TMC_BASE_ECAP2;
472 case 26: ECAP = TMC_BASE_ECAP3;
474 case 27: ECAP = TMC_BASE_ECAP4;
476 case 34: ECAP = TMC_BASE_ECAP1;
478 case 37: ECAP = TMC_BASE_ECAP2;
480 case 48: ECAP = TMC_BASE_ECAP5;
482 case 49: ECAP = TMC_BASE_ECAP6;
487 ECAP->
ECCTL2 |= (0x1 << 9);
488 ECAP->
CAP1 |= (F_CPU/frequency);
491 ECAP->
ECCTL2 &= ~(0x1 << 10);
492 ECAP->
ECCTL2 &= ~(0x1 << 5);
493 ECAP->
ECCTL2 |= (0x1 << 6);
494 ECAP->
ECCTL2 |= (0x1 << 4);
509 case 1:
if(g_ecap6_in_use){
520 case 3:
if(g_ecap5_in_use){
531 case 5:
if(g_ecap1_in_use){
542 case 7:
if(g_ecap2_in_use){
553 case 9:
if(g_ecap3_in_use){
564 case 11:
if(g_ecap4_in_use){
575 case 24:
if(g_ecap1_in_use){
586 case 25:
if(g_ecap2_in_use){
597 case 26:
if(g_ecap3_in_use){
608 case 27:
if(g_ecap4_in_use){
619 case 34:
if(g_ecap1_in_use){
630 case 37:
if(g_ecap2_in_use){
641 case 48:
if(g_ecap5_in_use){
652 case 49:
if(g_ecap6_in_use){
673 if((TMC_BASE_ECAP1->ECFLG & 0x0020) && !(TMC_BASE_ECAP1->ECFLG & 0x0010)){
675 TMC_BASE_ECAP1->ECCLR |= (0x1 << 5);
679 TMC_BASE_ECAP1->ECCLR |= (0x1 << 4);
681 TMC_BASE_ECAP1->ECCLR |= 0x1;
683 TMC_BASE_ECAP1->ECCTL1 |= (0x1 << 8);
684 TMC_BASE_ECAP1->ECCTL2 |= (0x1 << 4);
685 TMC_BASE_ECAP1->ECCTL2 |= (0x1 << 3);
686 TMC_BASE_PIE->ACK |= 0x8;
695 if((TMC_BASE_ECAP2->ECFLG & 0x0020) && !(TMC_BASE_ECAP2->ECFLG & 0x0010)){
697 TMC_BASE_ECAP2->ECCLR |= (0x1 << 5);
701 TMC_BASE_ECAP2->ECCLR |= (0x1 << 4);
703 TMC_BASE_ECAP2->ECCLR |= 0x1;
705 TMC_BASE_ECAP2->ECCTL1 |= (0x1 << 8);
706 TMC_BASE_ECAP2->ECCTL2 |= (0x1 << 4);
707 TMC_BASE_ECAP2->ECCTL2 |= (0x1 << 3);
708 TMC_BASE_PIE->ACK |= 0x8;
717 if((TMC_BASE_ECAP3->ECFLG & 0x0020) && !(TMC_BASE_ECAP3->ECFLG & 0x0010)){
719 TMC_BASE_ECAP3->ECCLR |= (0x1 << 5);
723 TMC_BASE_ECAP3->ECCLR |= (0x1 << 4);
725 TMC_BASE_ECAP3->ECCLR |= 0x1;
727 TMC_BASE_ECAP3->ECCTL1 |= (0x1 << 8);
728 TMC_BASE_ECAP3->ECCTL2 |= (0x1 << 4);
729 TMC_BASE_ECAP3->ECCTL2 |= (0x1 << 3);
730 TMC_BASE_PIE->ACK |= 0x8;
739 if((TMC_BASE_ECAP4->ECFLG & 0x0020) && !(TMC_BASE_ECAP4->ECFLG & 0x0010)){
741 TMC_BASE_ECAP4->ECCLR |= (0x1 << 5);
745 TMC_BASE_ECAP4->ECCLR |= (0x1 << 4);
747 TMC_BASE_ECAP4->ECCLR |= 0x1;
749 TMC_BASE_ECAP4->ECCTL1 |= (0x1 << 8);
750 TMC_BASE_ECAP4->ECCTL2 |= (0x1 << 4);
751 TMC_BASE_ECAP4->ECCTL2 |= (0x1 << 3);
752 TMC_BASE_PIE->ACK |= 0x8;
761 if((TMC_BASE_ECAP5->ECFLG & 0x0020) && !(TMC_BASE_ECAP5->ECFLG & 0x0010)){
763 TMC_BASE_ECAP5->ECCLR |= (0x1 << 5);
767 TMC_BASE_ECAP5->ECCLR |= (0x1 << 4);
769 TMC_BASE_ECAP5->ECCLR |= 0x1;
771 TMC_BASE_ECAP5->ECCTL1 |= (0x1 << 8);
772 TMC_BASE_ECAP5->ECCTL2 |= (0x1 << 4);
773 TMC_BASE_ECAP5->ECCTL2 |= (0x1 << 3);
774 TMC_BASE_PIE->ACK |= 0x8;
783 if((TMC_BASE_ECAP6->ECFLG & 0x0020) && !(TMC_BASE_ECAP6->ECFLG & 0x0010)){
785 TMC_BASE_ECAP6->ECCLR |= (0x1 << 5);
789 TMC_BASE_ECAP6->ECCLR |= (0x1 << 4);
791 TMC_BASE_ECAP6->ECCLR |= 0x1;
793 TMC_BASE_ECAP6->ECCTL1 |= (0x1 << 8);
794 TMC_BASE_ECAP6->ECCTL2 |= (0x1 << 4);
795 TMC_BASE_ECAP6->ECCTL2 |= (0x1 << 3);
796 TMC_BASE_PIE->ACK |= 0x8;
808 case 1: TMC_BASE_ECAP6->ECFRC |= (0x1 << 5);
810 case 3: TMC_BASE_ECAP5->ECFRC |= (0x1 << 5);
812 case 5: TMC_BASE_ECAP1->ECFRC |= (0x1 << 5);
814 case 7: TMC_BASE_ECAP2->ECFRC |= (0x1 << 5);
816 case 9: TMC_BASE_ECAP3->ECFRC |= (0x1 << 5);
818 case 11: TMC_BASE_ECAP4->ECFRC |= (0x1 << 5);
820 case 24: TMC_BASE_ECAP1->ECFRC |= (0x1 << 5);
822 case 25: TMC_BASE_ECAP2->ECFRC |= (0x1 << 5);
824 case 26: TMC_BASE_ECAP3->ECFRC |= (0x1 << 5);
826 case 27: TMC_BASE_ECAP4->ECFRC |= (0x1 << 5);
828 case 34: TMC_BASE_ECAP1->ECFRC |= (0x1 << 5);
830 case 37: TMC_BASE_ECAP2->ECFRC |= (0x1 << 5);
832 case 48: TMC_BASE_ECAP5->ECFRC |= (0x1 << 5);
834 case 49: TMC_BASE_ECAP6->ECFRC |= (0x1 << 5);