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
このライブラリについては、次のWebを参照してください。
http://mbed.org/users/suupen/code/SwAnalogInputLibraryExampleProgram/wiki/Homepage
SwAnalog.h@1:3cdb536ed157, 2013-12-22 (annotated)
- 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?
User | Revision | Line number | New 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 |