Mercurial > louis > kiibohd-controller
annotate Scan/ADCTest/analog.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 |
rev | line source |
---|---|
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1 /* Teensyduino Core Library |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
2 * http://www.pjrc.com/teensy/ |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
3 * Copyright (c) 2013 PJRC.COM, LLC. |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
4 * |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
5 * Permission is hereby granted, free of charge, to any person obtaining |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
6 * a copy of this software and associated documentation files (the |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
7 * "Software"), to deal in the Software without restriction, including |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
8 * without limitation the rights to use, copy, modify, merge, publish, |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
9 * distribute, sublicense, and/or sell copies of the Software, and to |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
10 * permit persons to whom the Software is furnished to do so, subject to |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
11 * the following conditions: |
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 * 1. The above copyright notice and this permission notice shall be |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
14 * included in all copies or substantial portions of the Software. |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
15 * |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
16 * 2. If the Software is incorporated into a build system that allows |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
17 * selection among a list of target devices, then similar target |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
18 * devices manufactured by PJRC.COM must be included in the list of |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
19 * target devices and selectable in the same manner. |
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 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
22 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
23 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
24 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
25 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
26 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
27 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
28 * SOFTWARE. |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
29 */ |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
30 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
31 #include <Lib/ScanLib.h> |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
32 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
33 static uint8_t calibrating; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
34 static uint8_t analog_right_shift = 0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
35 static uint8_t analog_config_bits = 10; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
36 static uint8_t analog_num_average = 4; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
37 static uint8_t analog_reference_internal = 0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
38 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
39 // the alternate clock is connected to OSCERCLK (16 MHz). |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
40 // datasheet says ADC clock should be 2 to 12 MHz for 16 bit mode |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
41 // datasheet says ADC clock should be 1 to 18 MHz for 8-12 bit mode |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
42 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
43 #if F_BUS == 48000000 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
44 #define ADC_CFG1_6MHZ ADC_CFG1_ADIV(2) + ADC_CFG1_ADICLK(1) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
45 #define ADC_CFG1_12MHZ ADC_CFG1_ADIV(1) + ADC_CFG1_ADICLK(1) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
46 #define ADC_CFG1_24MHZ ADC_CFG1_ADIV(0) + ADC_CFG1_ADICLK(1) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
47 #elif F_BUS == 24000000 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
48 #define ADC_CFG1_6MHZ ADC_CFG1_ADIV(2) + ADC_CFG1_ADICLK(0) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
49 #define ADC_CFG1_12MHZ ADC_CFG1_ADIV(1) + ADC_CFG1_ADICLK(0) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
50 #define ADC_CFG1_24MHZ ADC_CFG1_ADIV(0) + ADC_CFG1_ADICLK(0) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
51 #else |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
52 #error |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
53 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
54 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
55 void analog_init(void) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
56 { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
57 uint32_t num; |
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 VREF_TRM = 0x60; |
308 | 60 VREF_SC = 0xE1; // enable 1.2 volt ref |
132
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 if (analog_config_bits == 8) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
63 ADC0_CFG1 = ADC_CFG1_24MHZ + ADC_CFG1_MODE(0); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
64 ADC0_CFG2 = ADC_CFG2_MUXSEL + ADC_CFG2_ADLSTS(3); |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
65 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
66 ADC1_CFG1 = ADC_CFG1_24MHZ + ADC_CFG1_MODE(0); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
67 ADC1_CFG2 = ADC_CFG2_MUXSEL + ADC_CFG2_ADLSTS(3); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
68 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
69 } else if (analog_config_bits == 10) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
70 ADC0_CFG1 = ADC_CFG1_12MHZ + ADC_CFG1_MODE(2) + ADC_CFG1_ADLSMP; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
71 ADC0_CFG2 = ADC_CFG2_MUXSEL + ADC_CFG2_ADLSTS(3); |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
72 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
73 ADC1_CFG1 = ADC_CFG1_12MHZ + ADC_CFG1_MODE(2) + ADC_CFG1_ADLSMP; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
74 ADC1_CFG2 = ADC_CFG2_MUXSEL + ADC_CFG2_ADLSTS(3); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
75 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
76 } else if (analog_config_bits == 12) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
77 ADC0_CFG1 = ADC_CFG1_12MHZ + ADC_CFG1_MODE(1) + ADC_CFG1_ADLSMP; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
78 ADC0_CFG2 = ADC_CFG2_MUXSEL + ADC_CFG2_ADLSTS(2); |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
79 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
80 ADC1_CFG1 = ADC_CFG1_12MHZ + ADC_CFG1_MODE(1) + ADC_CFG1_ADLSMP; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
81 ADC1_CFG2 = ADC_CFG2_MUXSEL + ADC_CFG2_ADLSTS(2); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
82 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
83 } else { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
84 ADC0_CFG1 = ADC_CFG1_12MHZ + ADC_CFG1_MODE(3) + ADC_CFG1_ADLSMP; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
85 ADC0_CFG2 = ADC_CFG2_MUXSEL + ADC_CFG2_ADLSTS(2); |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
86 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
87 ADC1_CFG1 = ADC_CFG1_12MHZ + ADC_CFG1_MODE(3) + ADC_CFG1_ADLSMP; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
88 ADC1_CFG2 = ADC_CFG2_MUXSEL + ADC_CFG2_ADLSTS(2); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
89 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
90 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
91 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
92 if (analog_reference_internal) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
93 ADC0_SC2 = ADC_SC2_REFSEL(1); // 1.2V ref |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
94 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
95 ADC1_SC2 = ADC_SC2_REFSEL(1); // 1.2V ref |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
96 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
97 } else { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
98 ADC0_SC2 = ADC_SC2_REFSEL(0); // vcc/ext ref |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
99 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
100 ADC1_SC2 = ADC_SC2_REFSEL(0); // vcc/ext ref |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
101 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
102 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
103 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
104 num = analog_num_average; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
105 if (num <= 1) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
106 ADC0_SC3 = ADC_SC3_CAL; // begin cal |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
107 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
108 ADC1_SC3 = ADC_SC3_CAL; // begin cal |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
109 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
110 } else if (num <= 4) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
111 ADC0_SC3 = ADC_SC3_CAL + ADC_SC3_AVGE + ADC_SC3_AVGS(0); |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
112 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
113 ADC1_SC3 = ADC_SC3_CAL + ADC_SC3_AVGE + ADC_SC3_AVGS(0); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
114 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
115 } else if (num <= 8) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
116 ADC0_SC3 = ADC_SC3_CAL + ADC_SC3_AVGE + ADC_SC3_AVGS(1); |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
117 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
118 ADC1_SC3 = ADC_SC3_CAL + ADC_SC3_AVGE + ADC_SC3_AVGS(1); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
119 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
120 } else if (num <= 16) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
121 ADC0_SC3 = ADC_SC3_CAL + ADC_SC3_AVGE + ADC_SC3_AVGS(2); |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
122 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
123 ADC1_SC3 = ADC_SC3_CAL + ADC_SC3_AVGE + ADC_SC3_AVGS(2); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
124 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
125 } else { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
126 ADC0_SC3 = ADC_SC3_CAL + ADC_SC3_AVGE + ADC_SC3_AVGS(3); |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
127 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
128 ADC1_SC3 = ADC_SC3_CAL + ADC_SC3_AVGE + ADC_SC3_AVGS(3); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
129 #endif |
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 calibrating = 1; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
132 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
133 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
134 static void wait_for_cal(void) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
135 { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
136 uint16_t sum; |
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 //serial_print("wait_for_cal\n"); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
139 #if defined(_mk20dx128_) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
140 while (ADC0_SC3 & ADC_SC3_CAL) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
141 // wait |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
142 } |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
143 #elif defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
144 while ((ADC0_SC3 & ADC_SC3_CAL) || (ADC1_SC3 & ADC_SC3_CAL)) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
145 // wait |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
146 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
147 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
148 __disable_irq(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
149 if (calibrating) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
150 //serial_print("\n"); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
151 sum = ADC0_CLPS + ADC0_CLP4 + ADC0_CLP3 + ADC0_CLP2 + ADC0_CLP1 + ADC0_CLP0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
152 sum = (sum / 2) | 0x8000; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
153 ADC0_PG = sum; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
154 //serial_print("ADC0_PG = "); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
155 //serial_phex16(sum); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
156 //serial_print("\n"); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
157 sum = ADC0_CLMS + ADC0_CLM4 + ADC0_CLM3 + ADC0_CLM2 + ADC0_CLM1 + ADC0_CLM0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
158 sum = (sum / 2) | 0x8000; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
159 ADC0_MG = sum; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
160 //serial_print("ADC0_MG = "); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
161 //serial_phex16(sum); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
162 //serial_print("\n"); |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
163 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
164 sum = ADC1_CLPS + ADC1_CLP4 + ADC1_CLP3 + ADC1_CLP2 + ADC1_CLP1 + ADC1_CLP0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
165 sum = (sum / 2) | 0x8000; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
166 ADC1_PG = sum; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
167 sum = ADC1_CLMS + ADC1_CLM4 + ADC1_CLM3 + ADC1_CLM2 + ADC1_CLM1 + ADC1_CLM0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
168 sum = (sum / 2) | 0x8000; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
169 ADC1_MG = sum; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
170 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
171 calibrating = 0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
172 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
173 __enable_irq(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
174 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
175 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
176 // ADCx_SC2[REFSEL] bit selects the voltage reference sources for ADC. |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
177 // VREFH/VREFL - connected as the primary reference option |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
178 // 1.2 V VREF_OUT - connected as the VALT reference option |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
179 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
180 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
181 #define DEFAULT 0 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
182 #define INTERNAL 2 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
183 #define INTERNAL1V2 2 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
184 #define INTERNAL1V1 2 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
185 #define EXTERNAL 0 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
186 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
187 void analogReference(uint8_t type) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
188 { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
189 if (type) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
190 // internal reference requested |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
191 if (!analog_reference_internal) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
192 analog_reference_internal = 1; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
193 if (calibrating) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
194 ADC0_SC3 = 0; // cancel cal |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
195 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
196 ADC1_SC3 = 0; // cancel cal |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
197 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
198 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
199 analog_init(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
200 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
201 } else { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
202 // vcc or external reference requested |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
203 if (analog_reference_internal) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
204 analog_reference_internal = 0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
205 if (calibrating) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
206 ADC0_SC3 = 0; // cancel cal |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
207 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
208 ADC1_SC3 = 0; // cancel cal |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
209 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
210 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
211 analog_init(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
212 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
213 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
214 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
215 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
216 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
217 void analogReadRes(unsigned int bits) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
218 { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
219 unsigned int config; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
220 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
221 if (bits >= 13) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
222 if (bits > 16) bits = 16; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
223 config = 16; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
224 } else if (bits >= 11) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
225 config = 12; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
226 } else if (bits >= 9) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
227 config = 10; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
228 } else { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
229 config = 8; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
230 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
231 analog_right_shift = config - bits; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
232 if (config != analog_config_bits) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
233 analog_config_bits = config; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
234 if (calibrating) ADC0_SC3 = 0; // cancel cal |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
235 analog_init(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
236 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
237 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
238 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
239 void analogReadAveraging(unsigned int num) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
240 { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
241 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
242 if (calibrating) wait_for_cal(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
243 if (num <= 1) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
244 num = 0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
245 ADC0_SC3 = 0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
246 } else if (num <= 4) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
247 num = 4; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
248 ADC0_SC3 = ADC_SC3_AVGE + ADC_SC3_AVGS(0); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
249 } else if (num <= 8) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
250 num = 8; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
251 ADC0_SC3 = ADC_SC3_AVGE + ADC_SC3_AVGS(1); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
252 } else if (num <= 16) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
253 num = 16; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
254 ADC0_SC3 = ADC_SC3_AVGE + ADC_SC3_AVGS(2); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
255 } else { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
256 num = 32; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
257 ADC0_SC3 = ADC_SC3_AVGE + ADC_SC3_AVGS(3); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
258 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
259 analog_num_average = num; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
260 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
261 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
262 // The SC1A register is used for both software and hardware trigger modes of operation. |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
263 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
264 #if defined(_mk20dx128_) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
265 static const uint8_t channel2sc1a[] = { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
266 5, 14, 8, 9, 13, 12, 6, 7, 15, 4, |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
267 0, 19, 3, 21, 26, 22, 23 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
268 }; |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
269 #elif defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
270 static const uint8_t channel2sc1a[] = { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
271 5, 14, 8, 9, 13, 12, 6, 7, 15, 4, |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
272 0, 19, 3, 19+128, 26, 22, 23, |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
273 5+192, 5+128, 4+128, 6+128, 7+128, 4+192 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
274 // A15 26 E1 ADC1_SE5a 5+64 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
275 // A16 27 C9 ADC1_SE5b 5 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
276 // A17 28 C8 ADC1_SE4b 4 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
277 // A18 29 C10 ADC1_SE6b 6 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
278 // A19 30 C11 ADC1_SE7b 7 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
279 // A20 31 E0 ADC1_SE4a 4+64 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
280 }; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
281 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
282 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
283 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
284 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
285 // TODO: perhaps this should store the NVIC priority, so it works recursively? |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
286 static volatile uint8_t analogReadBusyADC0 = 0; |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
287 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
288 static volatile uint8_t analogReadBusyADC1 = 0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
289 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
290 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
291 int analogRead(uint8_t pin) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
292 { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
293 int result; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
294 uint8_t index, channel; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
295 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
296 //serial_phex(pin); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
297 //serial_print(" "); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
298 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
299 if (pin <= 13) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
300 index = pin; // 0-13 refer to A0-A13 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
301 } else if (pin <= 23) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
302 index = pin - 14; // 14-23 are A0-A9 |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
303 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
304 } else if (pin >= 26 && pin <= 31) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
305 index = pin - 9; // 26-31 are A15-A20 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
306 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
307 } else if (pin >= 34 && pin <= 40) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
308 index = pin - 24; // 34-37 are A10-A13, 38 is temp sensor, |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
309 // 39 is vref, 40 is unused (A14 on Teensy 3.1) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
310 } else { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
311 return 0; // all others are invalid |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
312 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
313 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
314 //serial_phex(index); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
315 //serial_print(" "); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
316 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
317 channel = channel2sc1a[index]; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
318 //serial_phex(channel); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
319 //serial_print(" "); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
320 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
321 //serial_print("analogRead"); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
322 //return 0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
323 if (calibrating) wait_for_cal(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
324 //pin = 5; // PTD1/SE5b, pin 14, analog 0 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
325 |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
326 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
327 if (channel & 0x80) goto beginADC1; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
328 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
329 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
330 __disable_irq(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
331 startADC0: |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
332 //serial_print("startADC0\n"); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
333 ADC0_SC1A = channel; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
334 analogReadBusyADC0 = 1; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
335 __enable_irq(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
336 while (1) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
337 __disable_irq(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
338 if ((ADC0_SC1A & ADC_SC1_COCO)) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
339 result = ADC0_RA; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
340 analogReadBusyADC0 = 0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
341 __enable_irq(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
342 result >>= analog_right_shift; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
343 return result; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
344 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
345 // detect if analogRead was used from an interrupt |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
346 // if so, our analogRead got canceled, so it must |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
347 // be restarted. |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
348 if (!analogReadBusyADC0) goto startADC0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
349 __enable_irq(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
350 yield(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
351 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
352 |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
353 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
354 beginADC1: |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
355 __disable_irq(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
356 startADC1: |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
357 //serial_print("startADC0\n"); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
358 // ADC1_CFG2[MUXSEL] bit selects between ADCx_SEn channels a and b. |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
359 if (channel & 0x40) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
360 ADC1_CFG2 &= ~ADC_CFG2_MUXSEL; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
361 } else { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
362 ADC1_CFG2 |= ADC_CFG2_MUXSEL; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
363 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
364 ADC1_SC1A = channel & 0x3F; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
365 analogReadBusyADC1 = 1; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
366 __enable_irq(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
367 while (1) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
368 __disable_irq(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
369 if ((ADC1_SC1A & ADC_SC1_COCO)) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
370 result = ADC1_RA; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
371 analogReadBusyADC1 = 0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
372 __enable_irq(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
373 result >>= analog_right_shift; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
374 return result; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
375 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
376 // detect if analogRead was used from an interrupt |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
377 // if so, our analogRead got canceled, so it must |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
378 // be restarted. |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
379 if (!analogReadBusyADC1) goto startADC1; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
380 __enable_irq(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
381 yield(); |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
382 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
383 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
384 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
385 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
386 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
387 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
388 void analogWriteDAC0(int val) |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
389 { |
263
9afed592bcb5
Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents:
135
diff
changeset
|
390 #if defined(_mk20dx256_) || defined(_mk20dx256vlh7_) |
132
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
391 SIM_SCGC2 |= SIM_SCGC2_DAC0; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
392 if (analog_reference_internal) { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
393 DAC0_C0 = DAC_C0_DACEN; // 1.2V ref is DACREF_1 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
394 } else { |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
395 DAC0_C0 = DAC_C0_DACEN | DAC_C0_DACRFS; // 3.3V VDDA is DACREF_2 |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
396 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
397 if (val < 0) val = 0; // TODO: saturate instruction? |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
398 else if (val > 4095) val = 4095; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
399 *(int16_t *)&(DAC0_DAT0L) = val; |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
400 #endif |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
401 } |
e08d7b586ea3
Adding analog.c lib from teensyduino.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
402 |