-
Notifications
You must be signed in to change notification settings - Fork 0
/
touch_FR6989.h
131 lines (117 loc) · 3.83 KB
/
touch_FR6989.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/* --COPYRIGHT--,BSD
* Copyright (c) 2016, Texas Instruments Incorporated
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* --/COPYRIGHT--*/
#ifndef TOUCH_FR6989_H_
#define TOUCH_FR6989_H_
/*
* X- port definitions.
*/
#define TOUCH_X_MINUS_PORT GPIO_PORT_P2
#define TOUCH_X_MINUS_PIN GPIO_PIN3
/*
* Y- port definitions.
*/
#define TOUCH_Y_MINUS_PORT GPIO_PORT_P4
#define TOUCH_Y_MINUS_PIN GPIO_PIN7
/*
* SW1 pin definitions.
*/
#define TOUCH_SW1_PORT GPIO_PORT_P1
#define TOUCH_SW1_PIN GPIO_PIN1
/*
* X+ port and ADC12 definitions.
*/
#define TOUCH_X_PLUS_PORT GPIO_PORT_P9//GPIO_PORT_P8
#define TOUCH_X_PLUS_PIN GPIO_PIN7//GPIO_PIN5
#define TOUCH_X_PLUS_INPUT ADC12_B_INPUT_A7
#define TOUCH_X_PLUS_MEMORY ADC12_B_MEMORY_1
#define TOUCH_X_PLUS_IFG ADC12IFG1
/*
* Y+ port and ADC12 definitions.
*/
#define TOUCH_Y_PLUS_PORT GPIO_PORT_P9//GPIO_PORT_P8
#define TOUCH_Y_PLUS_PIN GPIO_PIN6//GPIO_PIN4
#define TOUCH_Y_PLUS_INPUT ADC12_B_INPUT_A6
#define TOUCH_Y_PLUS_MEMORY ADC12_B_MEMORY_0
#define TOUCH_Y_PLUS_IFG ADC12IFG0
/*
* Threshold for detecting if there is a touch, specific to ADC resolution.
*/
#define TOUCH_THRESHOLD 350
/*
* Touch screen calibration value.
*/
#define TOUCH_X_MINIMUM (750 << 2)//625
#define TOUCH_X_MAXIMUM (3500 << 2)//3000
#define TOUCH_Y_MINIMUM (1130 << 2)//1130
#define TOUCH_Y_MAXIMUM (3400 << 2)//3400
#define TOUCH_OVERSAMPLE 8
#define TOUCH_AVERAGE_DIVISOR 3
#define TOUCH_CALIBRATION_KEY 0xA5A5A5A5
#include <stdbool.h>
#include <stdint.h>
typedef struct touch_calibration
{
uint16_t xMin;
uint16_t xMax;
uint16_t yMin;
uint16_t yMax;
uint32_t key;
} touch_calibration;
/*
* Typedef for touch context structure.
*/
typedef struct touch_context
{
bool touch;
uint16_t x;
uint16_t y;
touch_calibration touch_calibrationData;
} touch_context;
/*
* Radius of calibration circles.
*/
#define TOUCH_CALIBRATION_RADIUS 16
/*
* Globals
*/
extern touch_context touch_currentTouch;
/*
* Function prototypes.
*/
void touch_initInterface(void);
void touch_updateCurrentTouch(touch_context *data);
void touch_calibrate(void);
void touch_detectedTouch(void);
bool cal_touch_detectedTouch(void);
uint16_t scaleX(uint16_t);
uint16_t scaleY(uint16_t);
#endif //TOUCH_H_