annotate Scan/ADCTest/scan_loop.c @ 308:ab4515606277

Fix whitespace Use a consistent standard - Tabs in front for indenting, spaces after for anything else. This way everything stays nice and lined up while also letting users change there prefered indent level. Most of the new files from Haata where already in this format.
author Rowan Decker <Smasher816@gmail.com>
date Sun, 08 Mar 2015 18:40:01 -0700
parents 9afed592bcb5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
132
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
1 /* Copyright (C) 2014 by Jacob Alexander
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
2 *
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
4 * of this software and associated documentation files (the "Software"), to deal
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
5 * in the Software without restriction, including without limitation the rights
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
7 * copies of the Software, and to permit persons to whom the Software is
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
8 * furnished to do so, subject to the following conditions:
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
9 *
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
10 * The above copyright notice and this permission notice shall be included in
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
11 * all copies or substantial portions of the Software.
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
12 *
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
19 * THE SOFTWARE.
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
20 */
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
21
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
22 // ----- Includes -----
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
23
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
24 // Compiler Includes
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
25 #include <Lib/ScanLib.h>
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
26
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
27 // Project Includes
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
28 #include <cli.h>
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
29 #include <led.h>
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
30 #include <print.h>
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
31
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
32 // Local Includes
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
33 #include "scan_loop.h"
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
34
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
35
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
36
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
37 // ----- Defines -----
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
38
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
39 // ADC Clock divisor settings (F_BUS == 48000000)
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
40 #define ADC_CFG1_6MHZ ADC_CFG1_ADIV(2) + ADC_CFG1_ADICLK(1)
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
41 #define ADC_CFG1_12MHZ ADC_CFG1_ADIV(1) + ADC_CFG1_ADICLK(1)
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
42 #define ADC_CFG1_24MHZ ADC_CFG1_ADIV(0) + ADC_CFG1_ADICLK(1)
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
43
132
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
44
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
45
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
46 // ----- Macros -----
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
47
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
48
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
49
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
50 // ----- Function Declarations -----
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
51
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
52 void cliFunc_adc ( char* args );
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
53 void cliFunc_adcInit( char* args );
133
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
54 void cliFunc_dac ( char* args );
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
55 void cliFunc_dacVref( char* args );
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
56 void cliFunc_echo ( char* args );
132
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
57
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
58
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
59
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
60 // ----- Variables -----
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
61
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
62 // Buffer used to inform the macro processing module which keys have been detected as pressed
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
63 volatile uint8_t KeyIndex_Buffer[KEYBOARD_BUFFER];
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
64 volatile uint8_t KeyIndex_BufferUsed;
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
65
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
66
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
67 // Scan Module command dictionary
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 137
diff changeset
68 char scanCLIDictName[] = "ADC Test Module Commands";
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 137
diff changeset
69 const CLIDictItem scanCLIDict[] = {
263
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 195
diff changeset
70 #if defined(_mk20dx128_) || defined(_mk20dx256_) || defined(_mk20dx256vlh7_) // ARM
137
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
71 { "adc", "Read the specified number of values from the ADC at the given pin: <pin> [# of reads]"
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 263
diff changeset
72 NL "\t\t See \033[35mLib/pin_map.teensy3\033[0m for ADC0 channel number.", cliFunc_adc },
137
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
73 { "adcInit", "Intialize/calibrate ADC: <ADC Resolution> <Vref> <Hardware averaging samples>"
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 263
diff changeset
74 NL "\t\tADC Resolution -> 8, 10, 12, 16 (bit)"
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 263
diff changeset
75 NL "\t\t Vref -> 0 (1.2 V), 1 (External)"
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 263
diff changeset
76 NL "\t\tHw Avg Samples -> 0 (disabled), 4, 8, 16, 32", cliFunc_adcInit },
137
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
77 #endif
263
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 195
diff changeset
78 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) // DAC is only supported on Teensy 3.1
133
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
79 { "dac", "Set DAC output value, from 0 to 4095 (1/4096 Vref to Vref).", cliFunc_dac },
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
80 { "dacVref", "Set DAC Vref. 0 is 1.2V. 1 is 3.3V.", cliFunc_dacVref },
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
81 #endif
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
82 { "echo", "Example command, echos the arguments.", cliFunc_echo },
132
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
83 { 0, 0, 0 } // Null entry for dictionary end
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
84 };
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
85
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
86
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
87
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
88 // ----- Functions -----
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
89
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
90 // Setup
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
91 inline void Scan_setup()
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
92 #if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_) // AVR
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
93 {
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
94 // Register Scan CLI dictionary
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
95 CLI_registerDictionary( scanCLIDict, scanCLIDictName );
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
96 }
263
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 195
diff changeset
97 #elif defined(_mk20dx128_) || defined(_mk20dx256_) || defined(_mk20dx256vlh7_) // ARM
132
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
98 {
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
99 // Register Scan CLI dictionary
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
100 CLI_registerDictionary( scanCLIDict, scanCLIDictName );
133
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
101
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
102 // ADC Setup
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
103 VREF_TRM = 0x60;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
104 VREF_SC = 0xE1; // Enable 1.2V Vref
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
105
263
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 195
diff changeset
106 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) // DAC is only supported on Teensy 3.1
133
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
107 // DAC Setup
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
108 SIM_SCGC2 |= SIM_SCGC2_DAC0;
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
109 DAC0_C0 = DAC_C0_DACEN | DAC_C0_DACRFS; // 3.3V VDDA is DACREF_2
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
110 #endif
132
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
111 }
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
112 #endif
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
113
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
114
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
115 // Main Detection Loop
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
116 inline uint8_t Scan_loop()
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
117 {
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
118 return 0;
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
119 }
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
120
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
121
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
122 // Signal KeyIndex_Buffer that it has been properly read
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
123 void Scan_finishedWithBuffer( uint8_t sentKeys )
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
124 {
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
125 }
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
126
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
127
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
128 // Signal that the keys have been properly sent over USB
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
129 void Scan_finishedWithUSBBuffer( uint8_t sentKeys )
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
130 {
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
131 }
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
132
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
133
132
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
134 // Reset Keyboard
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
135 void Scan_resetKeyboard()
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
136 {
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
137 }
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
138
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
139
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
140 // ----- CLI Command Functions -----
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
141
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
142 // XXX Just an example command showing how to parse arguments (more complex than generally needed)
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
143 void cliFunc_echo( char* args )
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
144 {
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
145 char* curArgs;
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
146 char* arg1Ptr;
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
147 char* arg2Ptr = args;
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
148
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
149 // Parse args until a \0 is found
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
150 while ( 1 )
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
151 {
137
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
152 print( NL ); // No \r\n by default after the command is entered
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
153
132
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
154 curArgs = arg2Ptr; // Use the previous 2nd arg pointer to separate the next arg from the list
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
155 CLI_argumentIsolation( curArgs, &arg1Ptr, &arg2Ptr );
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
156
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
157 // Stop processing args if no more are found
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
158 if ( *arg1Ptr == '\0' )
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
159 break;
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
160
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
161 // Print out the arg
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
162 dPrint( arg1Ptr );
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
163 }
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
164 }
e08d7b586ea3 Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
165
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
166 void cliFunc_adc( char* args )
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
167 #if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_) // AVR
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
168 {
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
169 }
263
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 195
diff changeset
170 #elif defined(_mk20dx128_) || defined(_mk20dx256_) || defined(_mk20dx256vlh7_) // ARM
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
171 {
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
172 // Parse code from argument
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
173 // NOTE: Only first argument is used
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
174 char* arg1Ptr;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
175 char* arg2Ptr;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
176 CLI_argumentIsolation( args, &arg1Ptr, &arg2Ptr );
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
177
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
178 // Set the ADC Channel
195
58cfcb7bac88 Changing decToInt to numToInt (adds support for Hex number interpreter)
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
179 uint8_t channel = numToInt( arg1Ptr );
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
180 __disable_irq();
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
181 ADC0_SC1A = channel;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
182 __enable_irq();
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
183
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
184 // Number of ADC samples to display
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
185 CLI_argumentIsolation( arg2Ptr, &arg1Ptr, &arg2Ptr );
137
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
186
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
187 int displayedADC = 1; // Default to 1 read
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
188 if ( arg1Ptr ) // If there is an argument, use that instead
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
189 {
195
58cfcb7bac88 Changing decToInt to numToInt (adds support for Hex number interpreter)
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
190 displayedADC = numToInt( arg1Ptr );
137
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
191 }
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
192
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
193 // Poll ADC until it gets a value, making sure to serve interrupts on each attempt
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
194 while ( displayedADC > 0 )
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
195 {
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
196 __disable_irq();
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
197
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
198 // ADC Sample is ready
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
199 if ( (ADC0_SC1A & ADC_SC1_COCO) )
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
200 {
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
201 int result = ADC0_RA;
137
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
202 print( NL );
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
203 printInt32( result );
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
204 displayedADC--;
137
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
205
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
206 // Prepare for another read
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
207 if ( displayedADC > 0 )
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
208 {
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
209 ADC0_SC1A = channel;
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
210 }
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
211 }
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
212
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
213 __enable_irq();
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
214 yield(); // Make sure interrupts actually get serviced
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
215 }
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
216 }
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
217 #endif
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
218
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
219 void cliFunc_adcInit( char* args )
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
220 #if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_) // AVR
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
221 {
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
222 }
263
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 195
diff changeset
223 #elif defined(_mk20dx128_) || defined(_mk20dx256_) || defined(_mk20dx256vlh7_) // ARM
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
224 {
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
225 // Parse code from argument
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
226 // NOTE: Only first argument is used
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
227 char* arg1Ptr;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
228 char* arg2Ptr;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
229 CLI_argumentIsolation( args, &arg1Ptr, &arg2Ptr );
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
230
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
231 // Make sure calibration has stopped
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
232 ADC0_SC3 = 0;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
233
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
234 // Select bit resolution
195
58cfcb7bac88 Changing decToInt to numToInt (adds support for Hex number interpreter)
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
235 int bitResolution = numToInt( arg1Ptr );
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
236 switch ( bitResolution )
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
237 {
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
238 case 8: // 8-bit
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
239 ADC0_CFG1 = ADC_CFG1_24MHZ + ADC_CFG1_MODE(0);
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
240 ADC0_CFG2 = ADC_CFG2_MUXSEL + ADC_CFG2_ADLSTS(3);
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
241 break;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
242
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
243 case 10: // 10-bit
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
244 ADC0_CFG1 = ADC_CFG1_12MHZ + ADC_CFG1_MODE(2) + ADC_CFG1_ADLSMP;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
245 ADC0_CFG2 = ADC_CFG2_MUXSEL + ADC_CFG2_ADLSTS(3);
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
246 break;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
247
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
248 case 12: // 12-bit
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
249 ADC0_CFG1 = ADC_CFG1_12MHZ + ADC_CFG1_MODE(1) + ADC_CFG1_ADLSMP;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
250 ADC0_CFG2 = ADC_CFG2_MUXSEL + ADC_CFG2_ADLSTS(2);
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
251 break;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
252
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
253 case 16: // 16-bit
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
254 ADC0_CFG1 = ADC_CFG1_12MHZ + ADC_CFG1_MODE(3) + ADC_CFG1_ADLSMP;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
255 ADC0_CFG2 = ADC_CFG2_MUXSEL + ADC_CFG2_ADLSTS(2);
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
256 break;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
257
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
258 default: return; // Do nothing, invalid arg
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
259 }
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
260
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
261 // Select Vref
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
262 CLI_argumentIsolation( arg2Ptr, &arg1Ptr, &arg2Ptr );
195
58cfcb7bac88 Changing decToInt to numToInt (adds support for Hex number interpreter)
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
263 int vRef = numToInt( arg1Ptr );
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
264 switch ( vRef )
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
265 {
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
266 case 0: // 1.2V internal Vref
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
267 ADC0_SC2 = ADC_SC2_REFSEL(1);
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
268 break;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
269
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
270 case 1: // Vcc/Ext Vref
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
271 ADC0_SC2 = ADC_SC2_REFSEL(0);
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
272 break;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
273
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
274 default: return; // Do nothing, invalid arg
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
275 }
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
276
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
277 // Hardware averaging (and start calibration)
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
278 CLI_argumentIsolation( arg2Ptr, &arg1Ptr, &arg2Ptr );
195
58cfcb7bac88 Changing decToInt to numToInt (adds support for Hex number interpreter)
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
279 int hardwareAvg = numToInt( arg1Ptr );
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
280 switch ( hardwareAvg )
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
281 {
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
282 case 0: // No hardware averaging
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
283 ADC0_SC3 = ADC_SC3_CAL; // Just start calibration
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
284 break;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
285
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
286 case 4: // 4 sample averaging
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
287 ADC0_SC3 = ADC_SC3_CAL + ADC_SC3_AVGE + ADC_SC3_AVGS(0);
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
288 break;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
289
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
290 case 8: // 8 sample averaging
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
291 ADC0_SC3 = ADC_SC3_CAL + ADC_SC3_AVGE + ADC_SC3_AVGS(1);
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
292 break;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
293
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
294 case 16: // 16 sample averaging
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
295 ADC0_SC3 = ADC_SC3_CAL + ADC_SC3_AVGE + ADC_SC3_AVGS(2);
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
296 break;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
297
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
298 case 32: // 32 sample averaging
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
299 ADC0_SC3 = ADC_SC3_CAL + ADC_SC3_AVGE + ADC_SC3_AVGS(3);
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
300 break;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
301
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
302 default: return; // Do nothing, invalid arg
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
303 }
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
304
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
305 // Wait for calibration
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
306 while ( ADC0_SC3 & ADC_SC3_CAL );
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
307
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
308 // Set calibration
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
309 uint16_t sum;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
310
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
311 // XXX Why is PJRC doing this? Is the self-calibration not good enough? -HaaTa
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
312 // ADC Plus-Side Gain Register
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
313 __disable_irq(); // Disable interrupts
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
314 sum = ADC0_CLPS + ADC0_CLP4 + ADC0_CLP3 + ADC0_CLP2 + ADC0_CLP1 + ADC0_CLP0;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
315 sum = (sum / 2) | 0x8000;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
316 ADC0_PG = sum;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
317
137
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
318 print( NL );
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
319 info_msg("Calibration ADC0_PG (Plus-Side Gain Register) set to: ");
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
320 printInt16( sum );
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
321
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
322 // ADC Minus-Side Gain Register
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
323 // XXX I don't think this is necessary when doing single-ended (as opposed to differential) -HaaTa
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
324 // K20P64M72SF1RM.pdf 31.3.10 pg. 666
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
325 sum = ADC0_CLMS + ADC0_CLM4 + ADC0_CLM3 + ADC0_CLM2 + ADC0_CLM1 + ADC0_CLM0;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
326 sum = (sum / 2) | 0x8000;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
327 ADC0_MG = sum;
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
328
137
c12b8cfca6a5 ADC0 is now working on Teensy 3.1.
Jacob Alexander <haata@kiibohd.com>
parents: 135
diff changeset
329 print( NL );
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
330 info_msg("Calibration ADC0_MG (Minus-Side Gain Register) set to: ");
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
331 printInt16( sum );
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
332 __enable_irq(); // Re-enable interrupts
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
333 }
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
334 #endif
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
335
133
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
336 void cliFunc_dac( char* args )
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
337 {
263
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 195
diff changeset
338 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) // DAC is only supported on Teensy 3.1
133
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
339 // Parse code from argument
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
340 // NOTE: Only first argument is used
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
341 char* arg1Ptr;
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
342 char* arg2Ptr;
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
343 CLI_argumentIsolation( args, &arg1Ptr, &arg2Ptr );
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
344
195
58cfcb7bac88 Changing decToInt to numToInt (adds support for Hex number interpreter)
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
345 int dacOut = numToInt( arg1Ptr );
133
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
346
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
347 // Make sure the value is between 0 and 4096, otherwise ignore
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
348 if ( dacOut >= 0 && dacOut <= 4095 )
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
349 {
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
350 *(int16_t *) &(DAC0_DAT0L) = dacOut;
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
351 }
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
352 #endif
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
353 }
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
354
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
355 void cliFunc_dacVref( char* args )
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
356 {
263
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 195
diff changeset
357 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) // DAC is only supported on Teensy 3.1
133
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
358 // Parse code from argument
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
359 // NOTE: Only first argument is used
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
360 char* arg1Ptr;
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
361 char* arg2Ptr;
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
362 CLI_argumentIsolation( args, &arg1Ptr, &arg2Ptr );
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
363
195
58cfcb7bac88 Changing decToInt to numToInt (adds support for Hex number interpreter)
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
364 switch ( numToInt( arg1Ptr ) )
133
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
365 {
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
366 case 0:
135
9b98d431312b Adding initial code for ADC1 on Teensy 3.1 (and 3.0).
Jacob Alexander <haata@kiibohd.com>
parents: 133
diff changeset
367 DAC0_C0 = DAC_C0_DACEN; // 1.2V Vref is DACREF_1
133
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
368 break;
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
369 case 1:
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
370 DAC0_C0 = DAC_C0_DACEN | DAC_C0_DACRFS; // 3.3V VDDA is DACREF_2
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
371 break;
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
372 }
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
373 #endif
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
374 }
945565653607 ADCTest DAC support for Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents: 132
diff changeset
375