Skip to content

Commit 7304fe0

Browse files
committed
[ARC32] RTC wakeup from idle() works
code from https://github.com/bigdinotech/Arduino101Power/
1 parent e99fcef commit 7304fe0

File tree

6 files changed

+183
-1323
lines changed

6 files changed

+183
-1323
lines changed

src/ArduinoLowPower.h

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@
88
#endif
99

1010
#ifdef ARDUINO_ARCH_ARC32
11-
#include "include/arc32/power_states.h"
12-
#include "include/arc32/ss_power_states.h"
13-
#include "include/arc32/qm_sensor_regs.h"
14-
#include "include/arc32/qm_soc_regs.h"
11+
#include "include/arc32/defines.h"
1512
#endif
1613

1714
#ifdef ARDUINO_ARCH_SAMD
@@ -24,15 +21,28 @@ class ArduinoLowPowerClass {
2421
public:
2522
void idle(void);
2623
void idle(uint32_t millis);
24+
void idle(int millis) {
25+
idle((uint32_t)millis);
26+
}
2727

2828
void sleep(void);
2929
void sleep(uint32_t millis);
30+
void sleep(int millis) {
31+
sleep((uint32_t)millis);
32+
}
3033

3134
void deepSleep(void);
3235
void deepSleep(uint32_t millis);
36+
void deepSleep(int millis) {
37+
deepSleep((uint32_t)millis);
38+
}
3339

3440
void attachInterruptWakeup(uint32_t pin, voidFuncPtr callback, uint32_t mode);
3541

42+
#ifdef ARDUINO_ARCH_ARC32
43+
void wakeFromSleepCallback(void);
44+
#endif
45+
3646
private:
3747
#ifdef ARDUINO_ARCH_SAMD
3848
void setAlarmIn(uint32_t millis);
@@ -41,18 +51,20 @@ class ArduinoLowPowerClass {
4151
#endif
4252

4353
#ifdef ARDUINO_ARCH_ARC32
44-
void ss_power_soc_lpss_enable();
45-
void ss_power_soc_lpss_disable();
46-
void ss_power_cpu_ss1(const ss_power_cpu_ss1_mode_t mode);
47-
void ss_power_cpu_ss2();
48-
void ss_power_soc_sleep_restore();
49-
void ss_power_soc_deep_sleep_restore();
50-
void ss_power_sleep_wait();
51-
void power_soc_set_ss_restore_flag();
52-
void power_soc_sleep();
53-
void power_soc_deep_sleep();
54-
void setAlarmIn(uint32_t millis);
55-
#define RTC_ALARM_WAKEUP 0xFF
54+
void wakeFromDoze();
55+
void switchToHybridOscillator();
56+
void switchToCrystalOscillator();
57+
void attachWakeInterruptRTC(void (*userCallBack)());
58+
void turnOffUSB();
59+
void turnOnUSB();
60+
void setRTCCMR(int milliseconds);
61+
uint32_t readRTC_CCVR();
62+
bool isSleeping = false;
63+
uint32_t millisToRTCTicks(int milliseconds);
64+
void enableRTCInterrupt();
65+
void x86_C2Request();
66+
void (*pmCB)();
67+
#define RTC_ALARM_WAKEUP 0xFF
5668
#define RESET_BUTTON_WAKEUP 0xFE
5769
#endif
5870

0 commit comments

Comments
 (0)