Skip to content

Commit f093259

Browse files
committed
upd
1 parent 660d3e3 commit f093259

File tree

5 files changed

+14
-1
lines changed

5 files changed

+14
-1
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@ void sleep(uint8_t period); // сон на фиксиров
6565
uint8_t sleepDelay(uint32_t ms); // сон на произвольный период в миллисекундах (до 52 суток), возвращает остаток времени для коррекции таймеров
6666
void correctMillis(bool state); // корректировать миллис на время сна sleepDelay() (по умолчанию включено)
6767
void wakeUp(void); // помогает выйти из sleepDelay прерыванием (вызывать в будящем прерывании)
68+
bool inSleep(void); // вернёт true, если МК спит (для проверки в прерывании)
6869
```
70+
6971
```cpp
7072
===== РЕЖИМЫ СНА для setSleepMode() =====
7173
IDLE_SLEEP - Легкий сон, отключается только клок CPU и Flash, просыпается мгновенно от любых прерываний
@@ -193,6 +195,7 @@ void loop() {
193195
- v2.0 - оптимизация памяти, переделан sleepDelay, можно точно узнать фактическое время сна
194196
- v2.0.1 - fix compiler warnings
195197
- v2.0.2 - исправлена ошибка компиляции ATtiny85
198+
- v2.1 - добавлена bool inSleep(), для проверки спит ли МК
196199

197200
<a id="feedback"></a>
198201
## Баги и обратная связь

keywords.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ correctMillis KEYWORD2
2525
sleep KEYWORD2
2626
sleepDelay KEYWORD2
2727
wakeUp KEYWORD2
28+
inSleep KEYWORD2
2829

2930
getMaxTimeout KEYWORD2
3031
calibrate KEYWORD2

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=GyverPower
2-
version=2.0.2
2+
version=2.1
33
author=AlexGyver <[email protected]>
44
maintainer=AlexGyver <[email protected]>
55
sentence=Library for power management of AVR

src/GyverPower.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,13 @@ void GyverPower::wakeUp(void) {
126126
wakeFlag = true;
127127
}
128128

129+
bool GyverPower::inSleep(void) {
130+
return sleepF;
131+
}
132+
129133
// ===================== PRIVATE =====================
130134
void GyverPower::prepareSleep() {
135+
sleepF = 1;
131136
// принудительно выкл АЦП и компаратор
132137
if (sleepMode != IDLE_SLEEP && sleepMode != ADC_SLEEP) {
133138
ADCSRA &= ~ (1 << ADEN); // Выкл ацп
@@ -177,6 +182,7 @@ void GyverPower::finishSleep() {
177182
#if defined(__AVR_ATtiny85__)
178183
PLLCSR = pllCopy;
179184
#endif
185+
sleepF = 0;
180186
}
181187

182188
void GyverPower::_wdt_start(uint8_t timeout) {

src/GyverPower.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
v2.0 - оптимизация памяти, переделан sleepDelay, можно точно узнать фактическое время сна
4141
v2.0.1 - fix compiler warnings
4242
v2.0.2 - исправлена ошибка компиляции ATtiny85
43+
v2.1 - добавлена bool inSleep(), для проверки спит ли МК
4344
*/
4445

4546
#ifndef _GyverPower_h
@@ -66,6 +67,7 @@ class GyverPower {
6667
uint8_t sleepDelay(uint32_t ms); // сон на произвольный период в миллисекундах (до 52 суток), возвращает остаток времени для коррекции таймеров
6768
void correctMillis(bool state); // корректировать миллис на время сна sleepDelay() (по умолчанию включено)
6869
void wakeUp(void); // помогает выйти из sleepDelay прерыванием (вызывать в будящем прерывании)
70+
bool inSleep(void); // вернёт true, если МК спит (для проверки в прерывании)
6971

7072
// устарело
7173
void calibrate(uint16_t ms); // ручная калибровка тайм-аутов watchdog для sleepDelay (ввести макс период из getMaxTimeout)
@@ -78,6 +80,7 @@ class GyverPower {
7880
void _wdt_start(uint8_t timeout);
7981

8082
volatile bool wakeFlag = false;
83+
volatile bool sleepF = 0;
8184
bool correct = true;
8285
bool bodEnable = false;
8386
uint8_t sleepMode = 0x2; // (POWERDOWN_SLEEP по умолчанию)

0 commit comments

Comments
 (0)