You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.2 KiB
C
82 lines
2.2 KiB
C
/*
|
|
* 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);
|
|
}
|
|
/********************************************************************/
|
|
|