| /* | |
| * File: mcf52xx.c | |
| * Purpose: Source to select CF derivative | |
| * | |
| * Notes: | |
| * | |
| * License: All software covered by license agreement in - | |
| * docs/Freescale_Software_License.pdf | |
| */ | |
| /********************************************************************/ | |
| #include "common.h" | |
| /********************************************************************/ | |
| /* | |
| * Pause for the specified number of micro-seconds. | |
| * Uses DTIM3 as a timer | |
| */ | |
| void | |
| cpu_pause(int usecs) | |
| { | |
| /* Enable the DMA Timer 3 */ | |
| MCF_DTIM3_DTRR = (vuint32)(usecs - 1); | |
| MCF_DTIM3_DTER = MCF_DTIM_DTER_REF; | |
| MCF_DTIM3_DTMR = 0 | |
| | MCF_DTIM_DTMR_PS(SYSTEM_CLOCK) | |
| | MCF_DTIM_DTMR_FRR | |
| | MCF_DTIM_DTMR_CLK_DIV1 | |
| | MCF_DTIM_DTMR_RST; | |
| while ((MCF_DTIM3_DTER & MCF_DTIM_DTER_REF) == 0) | |
| {}; | |
| /* Disable the timer */ | |
| MCF_DTIM3_DTMR = 0; | |
| } | |
| /********************************************************************/ | |
| void | |
| board_handle_interrupt (int vector) | |
| { | |
| switch (vector) | |
| { | |
| case 65: /* Eport Interrupt 1 */ | |
| printf("SW2\n"); | |
| MCF_EPORT_EPFR = MCF_EPORT_EPFR_EPF1; | |
| break; | |
| case 69: /* Eport Interrupt 5 */ | |
| printf("SW1\n"); | |
| MCF_EPORT_EPFR = MCF_EPORT_EPFR_EPF5; | |
| break; | |
| case 71: /* Eport Interrupt 7 */ | |
| printf("ABORT\n"); | |
| MCF_EPORT_EPFR = MCF_EPORT_EPFR_EPF7; | |
| break; | |
| case 66: /* Eport Interrupt 2 */ | |
| case 67: /* Eport Interrupt 3 */ | |
| case 68: /* Eport Interrupt 4 */ | |
| case 70: /* Eport Interrupt 6 */ | |
| default: | |
| MCF_EPORT_EPFR = (uint8)(0x01 << (vector - 64)); | |
| printf("Edge Port Interrupt #%d\n",vector - 64); | |
| break; | |
| } | |
| } | |
| /********************************************************************/ | |
| /********************************************************************/ | |
| void | |
| cpu_handle_interrupt (int vector) | |
| { | |
| if (vector < 64 || vector > 192) | |
| return; | |
| if (vector >= 64 && vector <= 71) | |
| board_handle_interrupt(vector); | |
| else | |
| printf("User Defined Vector #%d\n",vector); | |
| } | |
| /********************************************************************/ | |