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.
121 lines
3.4 KiB
C
121 lines
3.4 KiB
C
2 years ago
|
/**
|
||
|
* @file AD_touch.h
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef AD_TOUCH_H
|
||
|
#define AD_TOUCH_H
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/*********************
|
||
|
* INCLUDES
|
||
|
*********************/
|
||
|
#ifndef LV_DRV_NO_CONF
|
||
|
#ifdef LV_CONF_INCLUDE_SIMPLE
|
||
|
#include "lv_drv_conf.h"
|
||
|
#else
|
||
|
#include "../../lv_drv_conf.h"
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#if USE_AD_TOUCH
|
||
|
|
||
|
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||
|
#include "lvgl.h"
|
||
|
#else
|
||
|
#include "lvgl/lvgl.h"
|
||
|
#endif
|
||
|
|
||
|
#define _SUPPRESS_PLIB_WARNING
|
||
|
#include <plib.h>
|
||
|
|
||
|
#include "GenericTypeDefs.h"
|
||
|
|
||
|
#define DISP_ORIENTATION 0
|
||
|
#define DISP_HOR_RESOLUTION 320
|
||
|
#define DISP_VER_RESOLUTION 240
|
||
|
|
||
|
/*GetMaxX Macro*/
|
||
|
#if (DISP_ORIENTATION == 90) || (DISP_ORIENTATION == 270)
|
||
|
#define GetMaxX() (DISP_VER_RESOLUTION - 1)
|
||
|
#elif (DISP_ORIENTATION == 0) || (DISP_ORIENTATION == 180)
|
||
|
#define GetMaxX() (DISP_HOR_RESOLUTION - 1)
|
||
|
#endif
|
||
|
|
||
|
/*GetMaxY Macro*/
|
||
|
#if (DISP_ORIENTATION == 90) || (DISP_ORIENTATION == 270)
|
||
|
#define GetMaxY() (DISP_HOR_RESOLUTION - 1)
|
||
|
#elif (DISP_ORIENTATION == 0) || (DISP_ORIENTATION == 180)
|
||
|
#define GetMaxY() (DISP_VER_RESOLUTION - 1)
|
||
|
#endif
|
||
|
|
||
|
/*********************************************************************
|
||
|
* HARDWARE PROFILE FOR THE RESISTIVE TOUCHSCREEN
|
||
|
*********************************************************************/
|
||
|
|
||
|
#define TOUCH_ADC_INPUT_SEL AD1CHS
|
||
|
|
||
|
// ADC Sample Start
|
||
|
#define TOUCH_ADC_START AD1CON1bits.SAMP
|
||
|
|
||
|
// ADC Status
|
||
|
#define TOUCH_ADC_DONE AD1CON1bits.DONE
|
||
|
|
||
|
#define RESISTIVETOUCH_ANALOG 1
|
||
|
#define RESISTIVETOUCH_DIGITAL 0
|
||
|
|
||
|
// ADC channel constants
|
||
|
#define ADC_XPOS ADC_CH0_POS_SAMPLEA_AN12
|
||
|
#define ADC_YPOS ADC_CH0_POS_SAMPLEA_AN13
|
||
|
|
||
|
// ADC Port Control Bits
|
||
|
#define ADPCFG_XPOS AD1PCFGbits.PCFG12 //XR
|
||
|
#define ADPCFG_YPOS AD1PCFGbits.PCFG13 //YD
|
||
|
|
||
|
// X port definitions
|
||
|
#define ResistiveTouchScreen_XPlus_Drive_High() LATBbits.LATB12 = 1
|
||
|
#define ResistiveTouchScreen_XPlus_Drive_Low() LATBbits.LATB12 = 0 //LAT_XPOS
|
||
|
#define ResistiveTouchScreen_XPlus_Config_As_Input() TRISBbits.TRISB12 = 1 //TRIS_XPOS
|
||
|
#define ResistiveTouchScreen_XPlus_Config_As_Output() TRISBbits.TRISB12 = 0
|
||
|
|
||
|
#define ResistiveTouchScreen_XMinus_Drive_High() LATFbits.LATF0 = 1
|
||
|
#define ResistiveTouchScreen_XMinus_Drive_Low() LATFbits.LATF0 = 0 //LAT_XNEG
|
||
|
#define ResistiveTouchScreen_XMinus_Config_As_Input() TRISFbits.TRISF0 = 1 //TRIS_XNEG
|
||
|
#define ResistiveTouchScreen_XMinus_Config_As_Output() TRISFbits.TRISF0 = 0
|
||
|
|
||
|
// Y port definitions
|
||
|
#define ResistiveTouchScreen_YPlus_Drive_High() LATBbits.LATB13 = 1
|
||
|
#define ResistiveTouchScreen_YPlus_Drive_Low() LATBbits.LATB13 = 0 //LAT_YPOS
|
||
|
#define ResistiveTouchScreen_YPlus_Config_As_Input() TRISBbits.TRISB13 = 1 //TRIS_YPOS
|
||
|
#define ResistiveTouchScreen_YPlus_Config_As_Output() TRISBbits.TRISB13 = 0
|
||
|
|
||
|
#define ResistiveTouchScreen_YMinus_Drive_High() LATFbits.LATF1 = 1
|
||
|
#define ResistiveTouchScreen_YMinus_Drive_Low() LATFbits.LATF1 = 0 //LAT_YNEG
|
||
|
#define ResistiveTouchScreen_YMinus_Config_As_Input() TRISFbits.TRISF1 = 1 //TRIS_YNEG
|
||
|
#define ResistiveTouchScreen_YMinus_Config_As_Output() TRISFbits.TRISF1 = 0
|
||
|
|
||
|
// Default calibration points
|
||
|
#define TOUCHCAL_ULX 0x0348
|
||
|
#define TOUCHCAL_ULY 0x00CC
|
||
|
#define TOUCHCAL_URX 0x00D2
|
||
|
#define TOUCHCAL_URY 0x00CE
|
||
|
#define TOUCHCAL_LLX 0x034D
|
||
|
#define TOUCHCAL_LLY 0x0335
|
||
|
#define TOUCHCAL_LRX 0x00D6
|
||
|
#define TOUCHCAL_LRY 0x032D
|
||
|
|
||
|
void ad_touch_init(void);
|
||
|
bool ad_touch_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data);
|
||
|
int16_t ad_touch_handler(void);
|
||
|
|
||
|
#endif /* USE_AD_TOUCH */
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
} /* extern "C" */
|
||
|
#endif
|
||
|
|
||
|
#endif /* AD_TOUCH_H */
|