This library has been tested with LPC1768. I can use the analog port of six of p20 from p15 of the LPC1768.

Dependents:   SwAnalogInputLibraryExampleProgram

Fork of SwAnalog by suu pen

このライブラリについては、次のWebを参照してください。
http://mbed.org/users/suupen/code/SwAnalogInputLibraryExampleProgram/wiki/Homepage

Committer:
suupen
Date:
Sun Dec 22 09:05:06 2013 +0000
Revision:
1:3cdb536ed157
Parent:
0:ba027616fdf1
This library is used to perform the SW recognized by the analog port

Who changed what in which revision?

UserRevisionLine numberNew contents of line
suupen 0:ba027616fdf1 1 /* SwAnalog Library
suupen 0:ba027616fdf1 2 * Copyright (c) 2012 suupen
suupen 0:ba027616fdf1 3 *
suupen 0:ba027616fdf1 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
suupen 0:ba027616fdf1 5 * of this software and associated documentation files (the "Software"), to deal
suupen 0:ba027616fdf1 6 * in the Software without restriction, including without limitation the rights
suupen 0:ba027616fdf1 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
suupen 0:ba027616fdf1 8 * copies of the Software, and to permit persons to whom the Software is
suupen 0:ba027616fdf1 9 * furnished to do so, subject to the following conditions:
suupen 0:ba027616fdf1 10 *
suupen 0:ba027616fdf1 11 * The above copyright notice and this permission notice shall be included in
suupen 0:ba027616fdf1 12 * all copies or substantial portions of the Software.
suupen 0:ba027616fdf1 13 *
suupen 0:ba027616fdf1 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
suupen 0:ba027616fdf1 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
suupen 0:ba027616fdf1 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
suupen 0:ba027616fdf1 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
suupen 0:ba027616fdf1 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
suupen 0:ba027616fdf1 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
suupen 0:ba027616fdf1 20 * THE SOFTWARE.
suupen 0:ba027616fdf1 21 */
suupen 0:ba027616fdf1 22
suupen 0:ba027616fdf1 23 /***********************************************************************/
suupen 0:ba027616fdf1 24 /* */
suupen 0:ba027616fdf1 25 /* SwAnalog.h */
suupen 0:ba027616fdf1 26 /* */
suupen 0:ba027616fdf1 27 /* */
suupen 0:ba027616fdf1 28 /* 2012/02/12 : V1.0 */
suupen 0:ba027616fdf1 29 /***********************************************************************/
suupen 0:ba027616fdf1 30 #ifndef _SWANALOG_H
suupen 0:ba027616fdf1 31 #define _SWANALOG_H
suupen 0:ba027616fdf1 32
suupen 0:ba027616fdf1 33 #include "mbed.h"
suupen 0:ba027616fdf1 34
suupen 0:ba027616fdf1 35 /** SWANALOG control class, based on a "mbed function"
suupen 0:ba027616fdf1 36 *
suupen 0:ba027616fdf1 37 * Example:
suupen 0:ba027616fdf1 38 * @code
suupen 1:3cdb536ed157 39 * // ********************************************************************
suupen 0:ba027616fdf1 40 * // SwAnalogInput Library example program
suupen 1:3cdb536ed157 41 * // Per pin analog port, SW recognition There are three possible.
suupen 0:ba027616fdf1 42 * //
suupen 0:ba027616fdf1 43 * // <schematic>
suupen 0:ba027616fdf1 44 * // -.- mbed VOUT(+3.3[V])
suupen 0:ba027616fdf1 45 * // | |--------------------> mbed p20(ADinput)
suupen 1:3cdb536ed157 46 * // | 8.2[kohm] 3.9[kohm] 2.0[kohm] | 1.0[kohm]
suupen 0:ba027616fdf1 47 * // | --------- --------- --------- | ---------
suupen 0:ba027616fdf1 48 * // .---| Rsw2 |---.---| Rsw1 |---.---| Rsw0 |---.---| Rout |----|
suupen 0:ba027616fdf1 49 * // | --------- | --------- | --------- | --------- |
suupen 0:ba027616fdf1 50 * // | ---- | ----- | ----- | |
suupen 0:ba027616fdf1 51 * // |-----o o------.-----o o------.-----o o------| -----
suupen 0:ba027616fdf1 52 * // SW2 SW1 SW0 mbed GND(0[V])
suupen 0:ba027616fdf1 53 * //
suupen 1:3cdb536ed157 54 * //
suupen 1:3cdb536ed157 55 * // Accuracy of the resistance value that is within ± 1%
suupen 0:ba027616fdf1 56 * //
suupen 1:3cdb536ed157 57 * // <Operation details of this program>
suupen 1:3cdb536ed157 58 * // mbed LED1 : When it detects the ON level of the SW0, and turns the LED1.
suupen 1:3cdb536ed157 59 * // mbed LED2 : When it detects the OFF level of the SW1, and turns the LED2.
suupen 1:3cdb536ed157 60 * // mbed LED3 : When it detects the ON edge of SW2, inverting the output to LED3.
suupen 1:3cdb536ed157 61 * // mbed LED4 : When it detects the OFF edge of SW2, inverting the output to LED4.
suupen 0:ba027616fdf1 62 * //
suupen 0:ba027616fdf1 63 * //
suupen 1:3cdb536ed157 64 * // <history>
suupen 1:3cdb536ed157 65 * // 120212 : first edtion
suupen 1:3cdb536ed157 66 * // 131221 : In this edition, I have changed the behavior of the program content
suupen 1:3cdb536ed157 67 * //
suupen 0:ba027616fdf1 68 * // *********************************************************************
suupen 0:ba027616fdf1 69 *
suupen 0:ba027616fdf1 70 * #include "mbed.h"
suupen 0:ba027616fdf1 71 * #include "SwAnalog.h"
suupen 0:ba027616fdf1 72 *
suupen 0:ba027616fdf1 73 * DigitalOut led1(LED1);
suupen 0:ba027616fdf1 74 * DigitalOut led2(LED2);
suupen 0:ba027616fdf1 75 * DigitalOut led3(LED3);
suupen 0:ba027616fdf1 76 * DigitalOut led4(LED4);
suupen 0:ba027616fdf1 77 *
suupen 0:ba027616fdf1 78 * SwAnalog sw(p20); // p20(adinput) :sw0,sw1,sw2
suupen 1:3cdb536ed157 79 *
suupen 1:3cdb536ed157 80 * enum{
suupen 1:3cdb536ed157 81 * sw0 = 0,
suupen 1:3cdb536ed157 82 * sw1,
suupen 1:3cdb536ed157 83 * sw2
suupen 1:3cdb536ed157 84 * };
suupen 0:ba027616fdf1 85 *
suupen 0:ba027616fdf1 86 * int main() {
suupen 1:3cdb536ed157 87 * while(1) {
suupen 1:3cdb536ed157 88 * //===========================================
suupen 1:3cdb536ed157 89 * // sw edge data refresh
suupen 1:3cdb536ed157 90 * //===========================================
suupen 1:3cdb536ed157 91 * sw.refreshEdgeData();
suupen 1:3cdb536ed157 92 *
suupen 1:3cdb536ed157 93 * //===========================================
suupen 1:3cdb536ed157 94 * // SW level action
suupen 1:3cdb536ed157 95 * //===========================================
suupen 1:3cdb536ed157 96 * // sw0 : OFF:LED1=ON ON:LED1=OFF
suupen 1:3cdb536ed157 97 * led1 = sw.checkLevel(sw0);
suupen 1:3cdb536ed157 98 *
suupen 1:3cdb536ed157 99 * // sw1 : OFF:LED2=OFF ON:LED2=ON
suupen 1:3cdb536ed157 100 * led2 = !sw.checkLevel(sw1);
suupen 1:3cdb536ed157 101 *
suupen 1:3cdb536ed157 102 * //===========================================
suupen 1:3cdb536ed157 103 * // SW edge action
suupen 1:3cdb536ed157 104 * //===========================================
suupen 1:3cdb536ed157 105 * // sw2 on edge : LED3 invert
suupen 1:3cdb536ed157 106 * if(sw.checkEdgeOn(sw2) == 1){
suupen 1:3cdb536ed157 107 * led3 = !led3;
suupen 1:3cdb536ed157 108 * }
suupen 1:3cdb536ed157 109 *
suupen 1:3cdb536ed157 110 * // sw2 off edge : LED4 invert
suupen 1:3cdb536ed157 111 * if(sw.checkEdgeOff(sw2) == 1){
suupen 1:3cdb536ed157 112 * led4 = !led4;
suupen 1:3cdb536ed157 113 * }
suupen 1:3cdb536ed157 114 * }
suupen 0:ba027616fdf1 115 * }
suupen 0:ba027616fdf1 116 * @endcode
suupen 0:ba027616fdf1 117 */
suupen 0:ba027616fdf1 118
suupen 0:ba027616fdf1 119 class SwAnalog {
suupen 0:ba027616fdf1 120 public:
suupen 0:ba027616fdf1 121
suupen 0:ba027616fdf1 122 /** Create a sw analog input object connected to the specified analog Input pin
suupen 0:ba027616fdf1 123 *
suupen 0:ba027616fdf1 124 * @param PinName adinput0 : analog input pin(pin15 to pin20) : sw0 kara sw2 no ninsiki
suupen 0:ba027616fdf1 125 * @param PinName adinput1 : analog input pin(pin15 to pin20) : sw3 kara sw5 no ninsiki
suupen 0:ba027616fdf1 126 * @param PinName adinput2 : analog input pin(pin15 to pin20) : sw6 kara sw8 no ninsiki
suupen 0:ba027616fdf1 127 * @param PinName adinput3 : analog input pin(pin15 to pin20) : sw9 kara sw11 no ninsiki
suupen 0:ba027616fdf1 128 * @param PinName adinput4 : analog input pin(pin15 to pin20) : sw12 kara sw14 no ninsiki
suupen 0:ba027616fdf1 129 * @param PinName adinput5 : analog input pin(pin15 to pin20) : sw15 kara sw17 no ninsiki
suupen 0:ba027616fdf1 130 *
suupen 0:ba027616fdf1 131 * Recognition of the SW period is 10ms
suupen 0:ba027616fdf1 132 */
suupen 0:ba027616fdf1 133 SwAnalog(PinName adinput0 = NC, PinName adinput1 = NC, PinName adinput2 = NC, PinName adinput3 = NC, PinName adinput4 = NC,
suupen 0:ba027616fdf1 134 PinName adinput5 = NC
suupen 0:ba027616fdf1 135 );
suupen 0:ba027616fdf1 136
suupen 0:ba027616fdf1 137 /** refresh edge data
suupen 0:ba027616fdf1 138 *
suupen 0:ba027616fdf1 139 * @param none
suupen 0:ba027616fdf1 140 * @param return none
suupen 0:ba027616fdf1 141 *
suupen 0:ba027616fdf1 142 * main de edge data wo tukau maeni jiko suru
suupen 0:ba027616fdf1 143 */
suupen 0:ba027616fdf1 144 void refreshEdgeData(void);
suupen 0:ba027616fdf1 145
suupen 0:ba027616fdf1 146 /** Check Off to On edge
suupen 0:ba027616fdf1 147 *
suupen 0:ba027616fdf1 148 * @param uint8_t swNo : 0:sw0, 1:sw1, ... ,17:sw17
suupen 0:ba027616fdf1 149 * @param return uint8_t On edge check 0: edge Nasi 1: edge Ari
suupen 0:ba027616fdf1 150 *
suupen 0:ba027616fdf1 151 */
suupen 0:ba027616fdf1 152 uint8_t checkEdgeOn(uint8_t swNo);
suupen 0:ba027616fdf1 153
suupen 0:ba027616fdf1 154 /** Check On to Off edge
suupen 0:ba027616fdf1 155 *
suupen 0:ba027616fdf1 156 * @param uint8_t swNo : 0:sw0, 1:sw1, ... ,17:sw17
suupen 0:ba027616fdf1 157 * @param return uint8_t Off edge check 0 : Nasi 1 : Ari
suupen 0:ba027616fdf1 158 *
suupen 0:ba027616fdf1 159 */
suupen 0:ba027616fdf1 160 uint8_t checkEdgeOff(uint8_t swNo);
suupen 0:ba027616fdf1 161
suupen 0:ba027616fdf1 162 /** Check sw Level
suupen 0:ba027616fdf1 163 *
suupen 0:ba027616fdf1 164 * @param uint8_t swNo : 0:sw0, 1:sw1, ... ,17:sw17
suupen 0:ba027616fdf1 165 * @param return uint8_t sw level check 0 : Off 1 : On
suupen 0:ba027616fdf1 166 *
suupen 0:ba027616fdf1 167 */
suupen 0:ba027616fdf1 168 uint8_t checkLevel(uint8_t swNo);
suupen 0:ba027616fdf1 169
suupen 0:ba027616fdf1 170 /** SW Number call name
suupen 0:ba027616fdf1 171 *
suupen 0:ba027616fdf1 172 * @param adinput0 : Z_sw1 to Z_sw3
suupen 0:ba027616fdf1 173 * @param adinput1 : Z_sw4 to Z_sw6
suupen 0:ba027616fdf1 174 * @param ....
suupen 0:ba027616fdf1 175 * @param adinput5 : Z_sw16 tp Z_sw18
suupen 0:ba027616fdf1 176 */
suupen 0:ba027616fdf1 177 enum{
suupen 0:ba027616fdf1 178 Z_sw0, // adinput1 no sw
suupen 0:ba027616fdf1 179 Z_sw1,
suupen 0:ba027616fdf1 180 Z_sw2,
suupen 0:ba027616fdf1 181
suupen 0:ba027616fdf1 182 Z_sw3, // adinput2 no sw
suupen 0:ba027616fdf1 183 Z_sw4,
suupen 0:ba027616fdf1 184 Z_sw5,
suupen 0:ba027616fdf1 185
suupen 0:ba027616fdf1 186 Z_sw6, // adinput3 no sw
suupen 0:ba027616fdf1 187 Z_sw7,
suupen 0:ba027616fdf1 188 Z_sw8,
suupen 0:ba027616fdf1 189
suupen 0:ba027616fdf1 190 Z_sw9, // adinput4 no sw
suupen 0:ba027616fdf1 191 Z_sw10,
suupen 0:ba027616fdf1 192 Z_sw11,
suupen 0:ba027616fdf1 193
suupen 0:ba027616fdf1 194 Z_sw12, // adinput5 no sw
suupen 0:ba027616fdf1 195 Z_sw13,
suupen 0:ba027616fdf1 196 Z_sw14,
suupen 0:ba027616fdf1 197
suupen 0:ba027616fdf1 198 Z_sw15, // adinput6 no sw
suupen 0:ba027616fdf1 199 Z_sw16,
suupen 0:ba027616fdf1 200 Z_sw17
suupen 0:ba027616fdf1 201 };
suupen 0:ba027616fdf1 202
suupen 0:ba027616fdf1 203 //protected:
suupen 0:ba027616fdf1 204 private:
suupen 0:ba027616fdf1 205 AnalogIn _adinput0;
suupen 0:ba027616fdf1 206 AnalogIn _adinput1;
suupen 0:ba027616fdf1 207 AnalogIn _adinput2;
suupen 0:ba027616fdf1 208 AnalogIn _adinput3;
suupen 0:ba027616fdf1 209 AnalogIn _adinput4;
suupen 0:ba027616fdf1 210
suupen 0:ba027616fdf1 211 AnalogIn _adinput5;
suupen 0:ba027616fdf1 212
suupen 0:ba027616fdf1 213
suupen 0:ba027616fdf1 214 Ticker swCheckTimer;
suupen 0:ba027616fdf1 215
suupen 0:ba027616fdf1 216 void input(void);
suupen 0:ba027616fdf1 217
suupen 0:ba027616fdf1 218 #define Z_matchcycle (10000) // 10000[us](10[ms]) to 100000[us](100[ms]) 1[us]/count
suupen 0:ba027616fdf1 219
suupen 0:ba027616fdf1 220 uint8_t D_swPinSuu; // touroku sareta Sw Pin Suu 1 to Z_swPinSuuMax
suupen 0:ba027616fdf1 221 #define Z_swPinSuuMax (6) // SW warituke pin suu max
suupen 0:ba027616fdf1 222 #define Z_swInNoMax (3) // 1pin atari no sw setuzoku suu (1pin ni 3ko no sw setuzoku)
suupen 0:ba027616fdf1 223
suupen 0:ba027616fdf1 224 uint8_t B_kariLevel[Z_swPinSuuMax * Z_swInNoMax]; // kakutei mae no ninsiki Level 0bit:saisin(t) 1bit:t-1, ... ,7bit:t-7 0:Off 1:On
suupen 0:ba027616fdf1 225 // match number define
suupen 0:ba027616fdf1 226 //#define Z_itchiPattern (0x03) // 2kai itch
suupen 0:ba027616fdf1 227 #define Z_itchiPattern (0x07) // 3kai itchi
suupen 0:ba027616fdf1 228 //#define Z_itchiPattern (0x0f) // 4kai itchi
suupen 0:ba027616fdf1 229 //#define Z_itchiPattern (0x1f) // 5kai itchi
suupen 0:ba027616fdf1 230 //#define Z_itchiPattern (0x3f) // 6kai itchi
suupen 0:ba027616fdf1 231 //#define Z_itchiPattern (0x7f) // 7kai itchi
suupen 0:ba027616fdf1 232 //#define Z_itchiPattern (0xff) // 8kai itchi
suupen 0:ba027616fdf1 233
suupen 0:ba027616fdf1 234 // sw level data
suupen 0:ba027616fdf1 235 uint8_t D_nowLevel[Z_swPinSuuMax * Z_swInNoMax]; // saisin no kakutei Level 0:Off 1:On
suupen 0:ba027616fdf1 236 uint8_t D_oldLevel[Z_swPinSuuMax * Z_swInNoMax]; // zenkai no kakutei Level 0:Off 1:On
suupen 0:ba027616fdf1 237 #define Z_levelOff (0)
suupen 0:ba027616fdf1 238 #define Z_levelOn (1)
suupen 0:ba027616fdf1 239
suupen 0:ba027616fdf1 240 // sw edge data
suupen 0:ba027616fdf1 241 // swDigital.c naibu hensu
suupen 0:ba027616fdf1 242 uint8_t B_edgeOn[Z_swPinSuuMax * Z_swInNoMax]; // off kara on no ninsiki(on edge) 0:Nasi 1:Ari
suupen 0:ba027616fdf1 243 uint8_t B_edgeOff[Z_swPinSuuMax * Z_swInNoMax]; // on kara off no ninsiki(off edge) 0:Nasi 1:Ari
suupen 0:ba027616fdf1 244 // user use hensu
suupen 0:ba027616fdf1 245 uint8_t D_edgeOn[Z_swPinSuuMax * Z_swInNoMax]; // off kara on no ninsiki(on edge) 0:Nasi 1:Ari
suupen 0:ba027616fdf1 246 uint8_t D_edgeOff[Z_swPinSuuMax * Z_swInNoMax]; // on kara off no ninsiki(off edge) 0:Nasi 1:Ari
suupen 0:ba027616fdf1 247 #define Z_edgeNasi (0)
suupen 0:ba027616fdf1 248 #define Z_edgeAri (1)
suupen 0:ba027616fdf1 249
suupen 0:ba027616fdf1 250 //------------------
suupen 0:ba027616fdf1 251 // Resistor network
suupen 0:ba027616fdf1 252 //------------------
suupen 0:ba027616fdf1 253
suupen 0:ba027616fdf1 254 // -.- mbed VOUT(+3.3[V])
suupen 0:ba027616fdf1 255 // | |--------------------> mbed p15 - p20(analog port)
suupen 0:ba027616fdf1 256 // | --------- --------- --------- | ---------
suupen 0:ba027616fdf1 257 // .---| Rsw2 |---.---| Rsw1 |---.---| Rsw0 |---.---| Rout |----|
suupen 0:ba027616fdf1 258 // | --------- | --------- | --------- | --------- |
suupen 0:ba027616fdf1 259 // | ---- | ----- | ----- | |
suupen 0:ba027616fdf1 260 // |-----o o------.-----o o------.-----o o------| -----
suupen 0:ba027616fdf1 261 // SW2 SW1 SW0 mbed GND(0[V])
suupen 0:ba027616fdf1 262 //
suupen 0:ba027616fdf1 263 // | |
suupen 0:ba027616fdf1 264 // |<----------------------- Rall --------------------------------->|
suupen 0:ba027616fdf1 265 // | | |
suupen 0:ba027616fdf1 266 // ----> Z_R0 to Z_R7
suupen 0:ba027616fdf1 267
suupen 0:ba027616fdf1 268
suupen 0:ba027616fdf1 269 #define Z_Rsw2 (8200.0F) // SW2 no R (1/1 [ohm]/count)
suupen 0:ba027616fdf1 270 #define Z_Rsw1 (3900.0F) // SW1 no R (1/1 [ohm]/count)
suupen 0:ba027616fdf1 271 #define Z_Rsw0 (2000.0F) // adinput1 no R (1/1 [ohm]/count)
suupen 0:ba027616fdf1 272 #define Z_Rout (1000.0F) // Vout no R (1/1 [ohm]/count)
suupen 0:ba027616fdf1 273 //Z_Rsw2,Z_Rsw1,Z_Rsw0,Z_Rout niwa +-1[%]no seido no teiko wo tukau koto
suupen 0:ba027616fdf1 274
suupen 0:ba027616fdf1 275 #define Z_gosaMax (1.020F) // Z_Rout(max) / Z_Rx(min) = (Z_Rout * 1.01) / (Z_Rx * 0.99) = (Z_Rout / Z_Rx) * 1.020
suupen 0:ba027616fdf1 276 #define Z_gosaMin (0.990F) // Z_Rout(min) / Z_Rx(max) = (Z_Rout * 0.99) / (Z_Rx * 1.01) = (Z_Rout / Z_Rx) * 0.980
suupen 0:ba027616fdf1 277
suupen 0:ba027616fdf1 278 // Rall keisanchi
suupen 0:ba027616fdf1 279 // SW2 SW1 SW0
suupen 0:ba027616fdf1 280 #define Z_R0 ((Z_Rsw2 + Z_Rsw1 + Z_Rsw0 + Z_Rout)) // OFF OFF OFF
suupen 0:ba027616fdf1 281 #define Z_R1 ((Z_Rsw2 + Z_Rsw1 + 0 + Z_Rout)) // OFF OFF ON
suupen 0:ba027616fdf1 282 #define Z_R2 ((Z_Rsw2 + 0 + Z_Rsw0 + Z_Rout)) // OFF ON OFF
suupen 0:ba027616fdf1 283 #define Z_R3 ((Z_Rsw2 + 0 + 0 + Z_Rout)) // OFF ON ON
suupen 0:ba027616fdf1 284 #define Z_R4 ((0 + Z_Rsw1 + Z_Rsw0 + Z_Rout)) // ON OFF OFF
suupen 0:ba027616fdf1 285 #define Z_R5 ((0 + Z_Rsw1 + 0 + Z_Rout)) // ON OFF ON
suupen 0:ba027616fdf1 286 #define Z_R6 ((0 + 0 + Z_Rsw0 + Z_Rout)) // ON ON OFF
suupen 0:ba027616fdf1 287 #define Z_R7 ((0 + 0 + 0 + Z_Rout)) // ON ON ON
suupen 0:ba027616fdf1 288
suupen 0:ba027616fdf1 289 // Rout : Rall (max , min)
suupen 0:ba027616fdf1 290 #define Z_R0max (((Z_Rout * Z_gosaMax) / Z_R0))
suupen 0:ba027616fdf1 291 #define Z_R0min (((Z_Rout * Z_gosaMin) / Z_R0))
suupen 0:ba027616fdf1 292 #define Z_R1max (((Z_Rout * Z_gosaMax) / Z_R1))
suupen 0:ba027616fdf1 293 #define Z_R1min (((Z_Rout * Z_gosaMin) / Z_R1))
suupen 0:ba027616fdf1 294 #define Z_R2max (((Z_Rout * Z_gosaMax) / Z_R2))
suupen 0:ba027616fdf1 295 #define Z_R2min (((Z_Rout * Z_gosaMin) / Z_R2))
suupen 0:ba027616fdf1 296 #define Z_R3max (((Z_Rout * Z_gosaMax) / Z_R3))
suupen 0:ba027616fdf1 297 #define Z_R3min (((Z_Rout * Z_gosaMin) / Z_R3))
suupen 0:ba027616fdf1 298 #define Z_R4max (((Z_Rout * Z_gosaMax) / Z_R4))
suupen 0:ba027616fdf1 299 #define Z_R4min (((Z_Rout * Z_gosaMin) / Z_R4))
suupen 0:ba027616fdf1 300 #define Z_R5max (((Z_Rout * Z_gosaMax) / Z_R5))
suupen 0:ba027616fdf1 301 #define Z_R5min (((Z_Rout * Z_gosaMin) / Z_R5))
suupen 0:ba027616fdf1 302 #define Z_R6max (((Z_Rout * Z_gosaMax) / Z_R6))
suupen 0:ba027616fdf1 303 #define Z_R6min (((Z_Rout * Z_gosaMin) / Z_R6))
suupen 0:ba027616fdf1 304 #define Z_R7max (((Z_Rout * Z_gosaMax) / Z_R7))
suupen 0:ba027616fdf1 305 #define Z_R7min (((Z_Rout * Z_gosaMin) / Z_R7))
suupen 0:ba027616fdf1 306
suupen 0:ba027616fdf1 307 // threshold lvevel
suupen 0:ba027616fdf1 308 // GND(0[V]) -> 0_1 -> 1_2 -> 2_3 -> 3_4 -> 4_5 -> 5_6 -> 6_7 -> Vcc(3.3[V])
suupen 0:ba027616fdf1 309 // --------------+------+------+------+------+------+------+---------------
suupen 0:ba027616fdf1 310 // SW0 | OFF ON OFF ON OFF ON OFF ON
suupen 0:ba027616fdf1 311 // SW1 | OFF OFF ON ON OFF OFF ON ON
suupen 0:ba027616fdf1 312 // SW2 | OFF OFF OFF OFF ON ON ON ON
suupen 0:ba027616fdf1 313
suupen 0:ba027616fdf1 314 #define Z_threshold0_1 (((Z_R0max + Z_R1min) / 2))
suupen 0:ba027616fdf1 315 #define Z_threshold1_2 (((Z_R1max + Z_R2min) / 2))
suupen 0:ba027616fdf1 316 #define Z_threshold2_3 (((Z_R2max + Z_R3min) / 2))
suupen 0:ba027616fdf1 317 #define Z_threshold3_4 (((Z_R3max + Z_R4min) / 2))
suupen 0:ba027616fdf1 318 #define Z_threshold4_5 (((Z_R4max + Z_R5min) / 2))
suupen 0:ba027616fdf1 319 #define Z_threshold5_6 (((Z_R5max + Z_R6min) / 2))
suupen 0:ba027616fdf1 320 #define Z_threshold6_7 (((Z_R6max + Z_R7min) / 2))
suupen 0:ba027616fdf1 321
suupen 0:ba027616fdf1 322 void adInput(float ad, uint8_t swInNo);
suupen 0:ba027616fdf1 323
suupen 0:ba027616fdf1 324 };
suupen 0:ba027616fdf1 325
suupen 0:ba027616fdf1 326 #endif // _SWANALOG_H