|
22 | 22 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
23 | 23 | * |
24 | 24 | *******************************************************************************/ |
25 | | - |
| 25 | + |
26 | 26 | // 13/01/2019 Gijs Mos. Put UPIN_RFM_EN in high Z when LoRa not used to prevent power leak |
27 | 27 | // through R2 when VBUS is high (for GPIO without LoRa). LoRa vendor library will make it |
28 | 28 | // an output again and drive it appropriately when LoRa is in use. |
29 | | - |
| 29 | + |
30 | 30 | #include <Arduino.h> |
31 | 31 | #include <SPI.h> |
32 | 32 | #include "Power.hpp" |
@@ -88,15 +88,19 @@ void PowerClass::begin() { |
88 | 88 | */ |
89 | 89 | void PowerClass::apply() { |
90 | 90 | if (state.gpio || state.lora || state.ovrd) { |
91 | | - logDebug("Enabling VBus"); |
92 | | - digitalWrite(UPIN_VBUS_EN, HIGH); |
93 | | - state.vbus = 1; |
| 91 | + if (!state.vbus) { |
| 92 | + logDebug("Enabling VBus"); |
| 93 | + digitalWrite(UPIN_VBUS_EN, HIGH); |
| 94 | + state.vbus = 1; |
| 95 | + } |
94 | 96 | } |
95 | 97 |
|
96 | 98 | else { |
97 | | - logDebug("Disabling VBus"); |
98 | | - digitalWrite(UPIN_VBUS_EN, LOW); |
99 | | - state.vbus = 0; |
| 99 | + if (state.vbus) { |
| 100 | + logDebug("Disabling VBus"); |
| 101 | + digitalWrite(UPIN_VBUS_EN, LOW); |
| 102 | + state.vbus = 0; |
| 103 | + } |
100 | 104 | } |
101 | 105 | } |
102 | 106 |
|
@@ -129,9 +133,10 @@ void PowerClass::setLoRaRadio(uint8_t enabled) { |
129 | 133 | digitalWrite(UPIN_RFM_DIO1, LOW); |
130 | 134 | pinMode(UPIN_RFM_DIO0, OUTPUT); |
131 | 135 | digitalWrite(UPIN_RFM_DIO0, LOW); |
132 | | - // UPIN_RFM_EN to high Z. R2 will pull low when VBUS off. And high when VBUS on for GPIO, |
133 | | - // disabling the LoRa SPI and preventing leak through R2. |
134 | | - pinMode(UPIN_RFM_EN, INPUT); |
| 136 | + |
| 137 | + // UPIN_RFM_EN to high Z. R2 will pull low when VBUS off. And high when VBUS on for GPIO, |
| 138 | + // disabling the LoRa SPI and preventing leak through R2. |
| 139 | + pinMode(UPIN_RFM_EN, INPUT); |
135 | 140 |
|
136 | 141 | // Disable module and VBus |
137 | 142 | state.lora = 0; |
|
0 commit comments