2
2
3
3
#include " RTC.h"
4
4
#include " Arduino_LowPowerPortentaC33.h"
5
+ #include " Arduino_PMIC.h"
6
+
7
+
5
8
6
9
LowPower lowPower;
7
10
RTCTime initialTime (1 , Month::JANUARY, 2000 , 12 , 10 , 00 , DayOfWeek::TUESDAY, SaveLight::SAVING_TIME_ACTIVE);
8
11
9
12
13
+ void turnOffPeripherals (){
14
+ // stopETHClock();
15
+ // Turn off the external power regulator
16
+ PMIC.getControl () -> turnSw2Off (Sw2Mode::Normal);
17
+ PMIC.getControl () -> turnSw2Off (Sw2Mode::Sleep);
18
+ PMIC.getControl () -> turnSw2Off (Sw2Mode::Standby);
19
+
20
+
21
+ // Turn off the Ethernet PHY, SDRAM, and USB PHY
22
+ PMIC.getControl () -> turnSw1Off (Sw1Mode::Normal);
23
+ PMIC.getControl () -> turnSw1Off (Sw1Mode::Sleep);
24
+ PMIC.getControl () -> turnSw1Off (Sw1Mode::Standby);
25
+
26
+
27
+
28
+
29
+ PMIC.getControl () -> turnLDO1Off (Ldo1Mode::Normal);
30
+ PMIC.getControl () -> turnLDO1Off (Ldo1Mode::Sleep);
31
+ PMIC.getControl () -> turnLDO1Off (Ldo1Mode::Standby);
32
+
33
+
34
+ // Turn off misc onboard chips
35
+ PMIC.getControl () -> turnLDO2Off (Ldo2Mode::Normal);
36
+ PMIC.getControl () -> turnLDO2Off (Ldo2Mode::Sleep);
37
+ PMIC.getControl () -> turnLDO2Off (Ldo2Mode::Standby);
38
+
39
+
40
+ // Turn off the 1.2V for Ethernet
41
+ PMIC.getControl () -> turnLDO3Off (Ldo3Mode::Normal);
42
+ PMIC.getControl () -> turnLDO3Off (Ldo3Mode::Sleep);
43
+ PMIC.getControl () -> turnLDO3Off (Ldo3Mode::Standby);
44
+ delay (1 );
45
+
46
+ }
47
+
48
+ void turnOnPeripherals (){
49
+ // startETHClock();
50
+ PMIC.getControl () -> turnLDO1On (Ldo1Mode::Normal);
51
+ PMIC.getControl () -> turnLDO1On (Ldo1Mode::Sleep);
52
+ PMIC.getControl () -> turnLDO1On (Ldo1Mode::Standby);
53
+
54
+ // Turn off misc onboard chips
55
+ PMIC.getControl () -> turnLDO2On (Ldo2Mode::Normal);
56
+ PMIC.getControl () -> turnLDO2On (Ldo2Mode::Sleep);
57
+ PMIC.getControl () -> turnLDO2On (Ldo2Mode::Standby);
58
+
59
+ // Turn off the 1.2V for Ethernet
60
+ PMIC.getControl () -> turnLDO3On (Ldo3Mode::Normal);
61
+ PMIC.getControl () -> turnLDO3On (Ldo3Mode::Sleep);
62
+ PMIC.getControl () -> turnLDO3On (Ldo3Mode::Standby);
63
+
64
+ // Turn off the Ethernet PHY, SDRAM, and USB PHY
65
+ PMIC.getControl () -> turnSw1On (Sw1Mode::Normal);
66
+ PMIC.getControl () -> turnSw1On (Sw1Mode::Sleep);
67
+ PMIC.getControl () -> turnSw1On (Sw1Mode::Standby);
68
+
69
+ // Turn off the external power regulator
70
+ PMIC.getControl () -> turnSw2On (Sw2Mode::Normal);
71
+ PMIC.getControl () -> turnSw2On (Sw2Mode::Sleep);
72
+ PMIC.getControl () -> turnSw2On (Sw2Mode::Standby);
73
+ }
74
+
10
75
void alarmCallback ()
11
76
{
12
77
digitalWrite (LED_BUILTIN, HIGH);
13
78
delay (1000 );
14
79
digitalWrite (LED_BUILTIN, LOW);
80
+ turnOffPeripherals ();
15
81
lowPower.deepSleep ();
16
82
}
17
83
@@ -50,8 +116,12 @@ bool sleepFor(int hours, int minutes, int seconds){
50
116
51
117
52
118
void setup (){
119
+
120
+ PMIC.begin ();
121
+
122
+ turnOnPeripherals ();
53
123
Serial.begin (9600 );
54
- // while(!Serial);
124
+
55
125
56
126
lowPower = LowPower ();
57
127
lowPower.enableWakeupFromRTC ();
@@ -65,9 +135,11 @@ void setup(){
65
135
RTC.setTime (initialTime);
66
136
sleepFor (0 , 0 , 1 );
67
137
}
68
-
138
+
139
+ turnOffPeripherals ();
140
+ lowPower.deepSleep ();
69
141
}
70
142
71
143
void loop (){
72
- lowPower. deepSleep ();
144
+
73
145
}
0 commit comments