53 #define d4dtch_mcf52277_asp_ID 1
58 #if (D4D_MK_STR(D4D_LLD_TCH) == d4dtch_mcf52277_asp_ID)
71 static unsigned char D4DTCH_Init_Mcf52277_asp(
void);
72 static unsigned char D4DTCH_DeInit_Mcf52277_asp(
void);
74 static unsigned char D4DTCH_GetPositionRaw_Mcf52277_asp(
unsigned short *TouchPositionX,
75 unsigned short *TouchPositionY);
88 D4DTCH_Init_Mcf52277_asp,
89 D4DTCH_GetPositionRaw_Mcf52277_asp,
90 D4DTCH_GetRawLimits_Mcf52277_asp,
91 D4DTCH_DeInit_Mcf52277_asp
109 static uint32 touched = 0;
110 static uint16 coordinationX = 0;
111 static uint16 coordinationY = 0;
120 static void mcf5xxx_set_handler (
int vector,
int (*handler) (
void));
121 int aspc_handler(
void);
122 void read_aspc_fifo(
void);
133 static unsigned char D4DTCH_Init_Mcf52277_asp(
void)
135 mcf5xxx_set_handler(128+61, aspc_handler);
137 MCF_INTC1_ICR61 |= 4;
138 MCF_INTC1_IMRH &= ~(MCF_INTC_IMRH_INT_MASK61);
149 &~(MCF_ASP_CR_TSTYPE(0x00))
155 &~(MCF_ASP_CR_MODE(00))
156 | MCF_ASP_CR_MODE(0x01)
161 MCF_ASP_CLKD = MCF_ASP_CLKD_CLKD(0x4E);
174 |MCF_ASP_ICR_FIFO_WM(16)
179 MCF_ASP_TIM = 0x0F00ffFF;
183 MCF_ASP_ISR = 0x000000B7;
185 MCF_ASP_CR |= ( MCF_ASP_CR_AUTO);
200 static unsigned char D4DTCH_DeInit_Mcf52277_asp(
void)
202 MCF_ASP_CR = 0x00080000;
231 static unsigned char D4DTCH_GetPositionRaw_Mcf52277_asp (
unsigned short *TouchPositionX,
232 unsigned short *TouchPositionY)
238 *TouchPositionX = coordinationX;
239 *TouchPositionY = coordinationY;
245 static void mcf5xxx_set_handler (
int vector,
int (*handler) (
void))
249 D4DTCHHW_VECTOR_RAM[vector] = (uint32)handler;
255 void read_aspc_fifo(
void)
259 uint32 MCF_ASP_SFIFO_temp;
265 while (((MCF_ASP_FIFOP & 0x003F0000)>>16) != (MCF_ASP_FIFOP & 0x0000003F))
267 MCF_ASP_SFIFO_temp=MCF_ASP_SFIFO;
269 switch(MCF_ASP_SFIFO_temp & 0x0000F000)
271 case MCF_ASP_SFIFO_CHANID_X_COORD:
272 coorX[incount] = (uint16)(MCF_ASP_SFIFO_temp & 0x00000FFF);
275 case MCF_ASP_SFIFO_CHANID_Y_COORD:
276 coorY[incount] = (uint16)(MCF_ASP_SFIFO_temp & 0x00000FFF);
285 for (avgcount=1;avgcount<=incount-1;avgcount++){
286 coorX[0] += coorX[avgcount];
287 coorY[0] += coorY[avgcount];
291 coorX[0] /= avgcount;
292 coorY[0] /= avgcount;
295 #if D4DTCH_MIRROVED_X == 1
296 coordinationX = (uint16)(4096 - coorX[0]);
298 coordinationX = coorX[0];
301 #if D4DTCH_MIRROVED_Y == 1
302 coordinationY = (uint16)(4096 - coorY[0]);
304 coordinationY = coorY[0];
307 #if D4DTCH_SWAP_AXES == 1
308 coorX[0] = coordinationX;
309 coordinationX = coordinationY;
310 coordinationY = coorX[0];
322 __declspec(interrupt) int aspc_handler(
void)
325 if(MCF_ASP_ISR & MCF_ASP_ISR_PUF){
327 MCF_ASP_ISR = MCF_ASP_ISR_PUF | MCF_ASP_ISR_PDF;
329 MCF_ASP_ICR |= MCF_ASP_ICR_PDIE;
331 MCF_GPIO_PCLRR_TIMER = 0xf7;
333 #if D4DTCH_ASYNCH_EVENTS == 1
337 if(MCF_ASP_ISR & MCF_ASP_ISR_PFFF){
341 if(MCF_ASP_ISR & MCF_ASP_ISR_PFLF){
343 MCF_ASP_CR &= (~MCF_ASP_CR_ASPE);
345 MCF_GPIO_PPDSDR_TIMER = 0x08;
347 #if D4DTCH_ASYNCH_EVENTS == 1
351 if(MCF_ASP_ISR & MCF_ASP_ISR_PDRF){
353 MCF_ASP_ISR = MCF_ASP_ISR_PDRF;
355 if(MCF_ASP_ISR & MCF_ASP_ISR_PDF){
357 MCF_ASP_ISR = MCF_ASP_ISR_PDF;
358 MCF_ASP_ICR &= ~MCF_ASP_ICR_PDIE;
359 MCF_ASP_CR |= MCF_ASP_CR_ASPE;
363 if(MCF_ASP_ISR & MCF_ASP_ISR_POVF){
366 MCF_ASP_ISR = MCF_ASP_ISR_POVF;
372 #endif //(D4D_MK_STR(D4D_LLD_TCH) == d4dtch_mcf52277_asp_ID)
#define D4DTCHHW_VECTOR_RAM
#define D4DTCH_Y_TOUCH_OFFMAX
#define D4DTCH_FULL_SCALE
D4D low level touch screen interface API structure.
#define D4DTCH_Y_TOUCH_MIN
D4D Driver main header file.
void D4D_PutRawTouchScreen(D4D_BOOL touched, D4D_COOR x, D4D_COOR y)
D4D Driver private header file.
#define D4DTCH_X_TOUCH_OFFMAX
D4D low level touch screen limitation structure.
#define D4DTCH_X_TOUCH_MIN
D4D driver - mcf52277_asp touch screen driver function header file.
D4D driver - resistive touch screen driver function header file.