Adding initial matrix configuration structure
- Uses strobe setup from MatrixARM - New mapping for ADC sense - Initial ADC setup code (not optimized or configurable yet)
This commit is contained in:
parent
39dbb85c1a
commit
271b0af9b9
4 changed files with 293 additions and 3 deletions
|
@ -27,8 +27,145 @@
|
|||
|
||||
// ----- Enums -----
|
||||
|
||||
// Freescale MK20s have GPIO ports A...E
|
||||
typedef enum Port {
|
||||
Port_A = 0,
|
||||
Port_B = 1,
|
||||
Port_C = 2,
|
||||
Port_D = 3,
|
||||
Port_E = 4,
|
||||
} Port;
|
||||
|
||||
// Each port has a possible 32 pins
|
||||
typedef enum Pin {
|
||||
Pin_0 = 0,
|
||||
Pin_1 = 1,
|
||||
Pin_2 = 2,
|
||||
Pin_3 = 3,
|
||||
Pin_4 = 4,
|
||||
Pin_5 = 5,
|
||||
Pin_6 = 6,
|
||||
Pin_7 = 7,
|
||||
Pin_8 = 8,
|
||||
Pin_9 = 9,
|
||||
Pin_10 = 10,
|
||||
Pin_11 = 11,
|
||||
Pin_12 = 12,
|
||||
Pin_13 = 13,
|
||||
Pin_14 = 14,
|
||||
Pin_15 = 15,
|
||||
Pin_16 = 16,
|
||||
Pin_17 = 17,
|
||||
Pin_18 = 18,
|
||||
Pin_19 = 19,
|
||||
Pin_20 = 20,
|
||||
Pin_21 = 21,
|
||||
Pin_22 = 22,
|
||||
Pin_23 = 23,
|
||||
Pin_24 = 24,
|
||||
Pin_25 = 25,
|
||||
Pin_26 = 26,
|
||||
Pin_27 = 27,
|
||||
Pin_28 = 28,
|
||||
Pin_29 = 29,
|
||||
Pin_30 = 30,
|
||||
Pin_31 = 31,
|
||||
} Pin;
|
||||
|
||||
// Depending on the microcontroller, it can have 1 or more ADCs
|
||||
typedef enum ADC {
|
||||
#if defined(_mk20dx128_) || defined(_mk20dx128vlf5_)
|
||||
ADC_0 = 0,
|
||||
#elif defined(_mk20dx256_) || defined(_mk20dx256vlh7_)
|
||||
ADC_0 = 0,
|
||||
ADC_1 = 1,
|
||||
#endif
|
||||
} ADC;
|
||||
|
||||
// ADC Register offset map
|
||||
unsigned int *ADC_reg_offset_map[] = {
|
||||
#if defined(_mk20dx128_) || defined(_mk20dx128vlf5_)
|
||||
(unsigned int*)(&ADC0_SC1A),
|
||||
#elif defined(_mk20dx256_) || defined(_mk20dx256vlh7_)
|
||||
(unsigned int*)(&ADC0_SC1A),
|
||||
(unsigned int*)(&ADC1_SC1A),
|
||||
#endif
|
||||
};
|
||||
|
||||
// Each ADC has a possible 32 channels
|
||||
typedef enum Channel {
|
||||
Channel_0 = 0,
|
||||
Channel_1 = 1,
|
||||
Channel_2 = 2,
|
||||
Channel_3 = 3,
|
||||
Channel_4 = 4,
|
||||
Channel_5 = 5,
|
||||
Channel_6 = 6,
|
||||
Channel_7 = 7,
|
||||
Channel_8 = 8,
|
||||
Channel_9 = 9,
|
||||
Channel_10 = 10,
|
||||
Channel_11 = 11,
|
||||
Channel_12 = 12,
|
||||
Channel_13 = 13,
|
||||
Channel_14 = 14,
|
||||
Channel_15 = 15,
|
||||
Channel_16 = 16,
|
||||
Channel_17 = 17,
|
||||
Channel_18 = 18,
|
||||
Channel_19 = 19,
|
||||
Channel_20 = 20,
|
||||
Channel_21 = 21,
|
||||
Channel_22 = 22,
|
||||
Channel_23 = 23,
|
||||
Channel_24 = 24,
|
||||
Channel_25 = 25,
|
||||
Channel_26 = 26,
|
||||
Channel_27 = 27,
|
||||
Channel_28 = 28,
|
||||
Channel_29 = 29,
|
||||
Channel_30 = 30,
|
||||
Channel_31 = 31,
|
||||
} Channel;
|
||||
|
||||
// Type of pin
|
||||
typedef enum Type {
|
||||
Type_StrobeOn,
|
||||
Type_StrobeOff,
|
||||
Type_StrobeSetup,
|
||||
Type_Sense,
|
||||
Type_SenseSetup,
|
||||
} Type;
|
||||
|
||||
// Keypress States
|
||||
typedef enum KeyPosition {
|
||||
KeyState_Off = 0,
|
||||
KeyState_Press = 1,
|
||||
KeyState_Hold = 2,
|
||||
KeyState_Release = 3,
|
||||
KeyState_Invalid,
|
||||
} KeyPosition;
|
||||
|
||||
|
||||
|
||||
// ----- Structs -----
|
||||
|
||||
// Struct container for defining Strobe pins
|
||||
typedef struct GPIO_Pin {
|
||||
Port port;
|
||||
Pin pin;
|
||||
} GPIO_Pin;
|
||||
|
||||
// Struct container for defining Sense pins
|
||||
typedef struct ADC_Pin {
|
||||
Port port;
|
||||
Pin pin;
|
||||
ADC adc;
|
||||
Channel ch;
|
||||
} ADC_Pin;
|
||||
|
||||
|
||||
|
||||
// ----- Functions -----
|
||||
|
||||
void Matrix_setup();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue