]> git.sur5r.net Git - freertos/blob - Demo/ColdFire_MCF52259_CodeWarrior/cpu/mcf5225x.c
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / ColdFire_MCF52259_CodeWarrior / cpu / mcf5225x.c
1 /*\r
2  * File:                mcf52xx.c\r
3  * Purpose:             Source to select CF derivative\r
4  *\r
5  * Notes:\r
6  * \r
7  * License:     All software covered by license agreement in -\r
8  *              docs/Freescale_Software_License.pdf\r
9  */\r
10 /********************************************************************/\r
11 \r
12 #include "common.h"\r
13 \r
14 /********************************************************************/\r
15 /*\r
16  * Pause for the specified number of micro-seconds.\r
17  * Uses DTIM3 as a timer\r
18  */\r
19 void\r
20 cpu_pause(int usecs)\r
21 {\r
22     /* Enable the DMA Timer 3 */\r
23     MCF_DTIM3_DTRR = (vuint32)(usecs - 1);\r
24     MCF_DTIM3_DTER = MCF_DTIM_DTER_REF;\r
25     MCF_DTIM3_DTMR = 0\r
26         | MCF_DTIM_DTMR_PS(SYSTEM_CLOCK)\r
27         | MCF_DTIM_DTMR_FRR\r
28         | MCF_DTIM_DTMR_CLK_DIV1\r
29         | MCF_DTIM_DTMR_RST;\r
30 \r
31     while ((MCF_DTIM3_DTER & MCF_DTIM_DTER_REF) == 0) \r
32     {};\r
33     \r
34     /* Disable the timer */\r
35     MCF_DTIM3_DTMR = 0;\r
36 }\r
37 \r
38 /********************************************************************/\r
39 void\r
40 board_handle_interrupt (int vector)\r
41 {\r
42     switch (vector)\r
43     {\r
44         case 65: /* Eport Interrupt 1 */\r
45             printf("SW2\n");\r
46             MCF_EPORT_EPFR = MCF_EPORT_EPFR_EPF1;\r
47             break;\r
48         case 69: /* Eport Interrupt 5 */\r
49             printf("SW1\n");\r
50             MCF_EPORT_EPFR = MCF_EPORT_EPFR_EPF5;\r
51             break;\r
52         case 71: /* Eport Interrupt 7 */\r
53             printf("ABORT\n");\r
54             MCF_EPORT_EPFR = MCF_EPORT_EPFR_EPF7;\r
55             break;\r
56         case 66: /* Eport Interrupt 2 */\r
57         case 67: /* Eport Interrupt 3 */\r
58         case 68: /* Eport Interrupt 4 */\r
59         case 70: /* Eport Interrupt 6 */\r
60         default:\r
61             MCF_EPORT_EPFR = (uint8)(0x01 << (vector - 64));\r
62             printf("Edge Port Interrupt #%d\n",vector - 64);\r
63             break;\r
64     }\r
65 }\r
66 /********************************************************************/\r
67 \r
68 /********************************************************************/\r
69 void\r
70 cpu_handle_interrupt (int vector)\r
71 {\r
72     if (vector < 64 || vector > 192)\r
73         return;\r
74     \r
75     if (vector >= 64 && vector <= 71)\r
76         board_handle_interrupt(vector);\r
77     else\r
78         printf("User Defined Vector #%d\n",vector);\r
79 }\r
80 /********************************************************************/\r
81 \r