📄 events.c
字号:
/** ###################################################################
** Filename : Events.C
** Project : touchpanal
** Processor : MC9S08QG8CDT
** Beantype : Events
** Version : Driver 01.02
** Compiler : CodeWarrior HCS08 C Compiler
** Date/Time : 2007-9-14, 12:46
** Abstract :
** This is user's event module.
** Put your event handler code here.
** Settings :
** Contents :
** SM1_OnRxChar - void SM1_OnRxChar(void);
** SM1_OnTxChar - void SM1_OnTxChar(void);
** SM1_OnError - void SM1_OnError(void);
**
** (c) Copyright UNIS, spol. s r.o. 1997-2006
** UNIS, spol. s r.o.
** Jundrovska 33
** 624 00 Brno
** Czech Republic
** http : www.processorexpert.com
** mail : info@processorexpert.com
** ###################################################################*/
/* MODULE Events */
#include "Cpu.h"
#include "Events.h"
#define PC_write_board
//#define ms718
bool send718flag=0;
word sendtomst718counter=0;
byte position[2][10] ={0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0};
byte p_position;
word TouchNumber=0;
/*
** ===================================================================
** Event : SM1_OnRxChar (module Events)
**
** From bean : SM1 [SynchroMaster]
** Description :
** This event is called after a correct character is
** received.
** The event is available only when the <Interrupt
** service/event> property is enabled.
** Parameters : None
** Returns : Nothing
** ===================================================================
*/
void SM1_OnRxChar(void)
{
/* Write your code here ... */
}
/*
** ===================================================================
** Event : SM1_OnTxChar (module Events)
**
** From bean : SM1 [SynchroMaster]
** Description :
** This event is called after a character is transmitted.
** Parameters : None
** Returns : Nothing
** ===================================================================
*/
bool Flag_SPI_reading=0;
bool Flag_SPI_reading_status=0;
#define PenDetect PTAD_PTAD2
#define SPI_CS PTBD_PTBD5
#define SETX (byte)0xD8 //D8 8bitADC VDD ref /PENIRQ enable
#define SETY (byte)0X98
char ReadTouchPanleStep=0;
word X_coordinate=0,Y_coordinate=0;
void SendDataRs232(byte x,byte y)
{
ReadTouchPanleStep=0;
#ifdef ms718
uart_transmit_data[1] = x&0xf0 + y&0x0f;
uart_transmit_data[2]=0;
if(send718flag){
send718flag=0;
AS1_SendChar(uart_transmit_data[0]);
}
#endif
// uart_transmit_data[2]=(byte)(Y_coordinate>>8);
// uart_transmit_data[3]=(byte)Y_coordinate;
#ifdef PC_write_board
uart_transmit_data[1]=x;
uart_transmit_data[2]=y;
AS1_SendChar(uart_transmit_data[0]);
#endif
}
void SavePanelData(byte x,byte y)
{
byte ii;
position[0][p_position]=x;
position[1][p_position]=y;
p_position++;
if(p_position>9)
p_position=0;
TouchNumber++;
if(TouchNumber>50000)
TouchNumber=10000;
if(TouchNumber>4){
if(p_position>1)
ii = p_position-2;
else
ii= p_position+10-2;
SendDataRs232(position[0][ii] , position[1][ii]);
}
}
byte spi_temp=0;
byte xx,yy;
void SM1_OnTxChar(void)
{
switch (ReadTouchPanleStep){
case 0 : SM1_SendChar(0);
ReadTouchPanleStep++;
break;
case 1 : SM1_RecvChar(&xx);
xx<<=1;
SM1_SendChar(SETY);
ReadTouchPanleStep++;
break;
case 2 : SM1_RecvChar(&spi_temp);
xx += spi_temp>>7;
SM1_SendChar(0);
ReadTouchPanleStep++;
break;
case 3 : SM1_RecvChar(&yy);
yy<<=1;
SM1_SendChar(0);
ReadTouchPanleStep++;
break;
case 4 : SM1_RecvChar(&spi_temp);
yy += spi_temp>>7;
ReadTouchPanleStep=0;
if(PenDetect){
Flag_SPI_reading=0;
ReadTouchPanleStep=0;
p_position=0;
TouchNumber=0;
}
else {
SavePanelData(xx,yy);
}
SPI_CS=1;
break;
default :
break;
}
}
/*
** ===================================================================
** Event : SM1_OnError (module Events)
**
** From bean : SM1 [SynchroMaster]
** Description :
** This event is called when a channel error (not the error
** returned by a given method) occurs. The errors can be
** read using <GetError> method.
** The event is available only when the <Interrupt
** service/event> property is enabled.
** Parameters : None
** Returns : Nothing
** ===================================================================
*/
void SM1_OnError(void)
{
/* Write your code here ... */
}
/*
** ===================================================================
** Event : AS1_OnTxComplete (module Events)
**
** From bean : AS1 [AsynchroSerial]
** Description :
** This event indicates that the transmitter is finished
** transmitting all data, preamble, and break characters and
** is idle. It can be used to determine when it is safe to
** switch a line driver (e.g. in RS-485 applications).
** The event is available only when both <Interrupt
** service/event> and <Transmitter> properties are enabled.
** Parameters : None
** Returns : Nothing
** ===================================================================
*/
char uart_transmit_data[10]={0x69,0xaa,0x22,0x11, 0xbb,0x77,0x66,0x99};
char uart_transmit_point=0;
void AS1_OnTxComplete(void)
{
uart_transmit_point++;
if(uart_transmit_point<3) //send 3 byet out
AS1_SendChar(uart_transmit_data[uart_transmit_point]);
else
uart_transmit_point=0;
}
/*
** ===================================================================
** Event : TI1_OnInterrupt (module Events)
**
** From bean : TI1 [TimerInt]
** Description :
** When a timer interrupt occurs this event is called (only
** when the bean is enabled - <"Enable"> and the events are
** enabled - <"EnableEvent">). This event is enabled only if
** a interrupt service/event is enabled.
** Parameters : None
** Returns : Nothing
** ===================================================================
*/
void TI1_OnInterrupt(void)
{
/* Write your code here ... */
PTAD_PTAD0 = ~PTAD_PTAD0;
sendtomst718counter++;
if(sendtomst718counter>50000)
sendtomst718counter=10000;
if((sendtomst718counter>20)&&(sendtomst718counter<22))
send718flag=1;
SPI_CS=0;
SM1_SendChar(SETX); //spi send data
}
/* END Events */
/*
** ###################################################################
**
** This file was created by UNIS Processor Expert 3.00 [03.89]
** for the Freescale HCS08 series of microcontrollers.
**
** ###################################################################
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -