What's causing this power spike in STM32 low power modeWaking Up From Deep Sleep ModesArduino low power consumption and multiplexerPIC32 sleep mode with watchdog wakeup failingShut down regulator during sleepSTM32 Sleep Mode: Interrupt gets executed but the CPU stays in WFIHow to correctly configure deepsleep for STM32L0xxEntering stop mode on STM32L011 only works first timeWait make the STM32L073RZ freeze in stopmodeSTM32 L0 wake from STOP mode with WAKEUP pinHow to debug current consumption with STM32 Nucleo board?
Is it possible to upcast ritual spells?
Sailing the cryptic seas
Gantt Chart like rectangles with log scale
What options are left, if Britain cannot decide?
Charles Hockett - 'F' article?
How to terminate ping <dest> &
How Could an Airship Be Repaired Mid-Flight
Can I use USB data pins as power source
What is the significance behind "40 days" that often appears in the Bible?
Property of summation
Official degrees of earth’s rotation per day
Why does Bach not break the rules here?
Can a druid choose the size of its wild shape beast?
What should tie a collection of short-stories together?
PTIJ: Who should I vote for? (21st Knesset Edition)
If I can solve Sudoku can I solve Travelling Salesman Problem(TSP)? If yes, how?
What's the meaning of “spike” in the context of “adrenaline spike”?
Gravity magic - How does it work?
Employee lack of ownership
Do the common programs (for example: "ls", "cat") in Linux and BSD come from the same source code?
Are all passive ability checks floors for active ability checks?
Opacity of an object in 2.8
Why is the President allowed to veto a cancellation of emergency powers?
Define, (actually define) the "stability" and "energy" of a compound
What's causing this power spike in STM32 low power mode
Waking Up From Deep Sleep ModesArduino low power consumption and multiplexerPIC32 sleep mode with watchdog wakeup failingShut down regulator during sleepSTM32 Sleep Mode: Interrupt gets executed but the CPU stays in WFIHow to correctly configure deepsleep for STM32L0xxEntering stop mode on STM32L011 only works first timeWait make the STM32L073RZ freeze in stopmodeSTM32 L0 wake from STOP mode with WAKEUP pinHow to debug current consumption with STM32 Nucleo board?
$begingroup$
I'm using an STM32L073RZ on a bare board with just the CPU and decoupling caps. I'm powering the board straight from an Otii Arc and measuring current consumption. I'm running MbedOS 5.11.2.
When I call the sleep()
function the CPU goes into a low power mode, with an occasional 5mA spike in current consumption approximately every second, see the image below:
What is the cause of this? I'm attempting to place the CPU into STOP mode with an RTC running - this should draw, according to the datasheet, 1µA current.
Further to this, how can I tell which low power mode the sleep()
function has chosen? I'm trying to stay away from the HAL because I've had many issues configuring interrupts and the like.
For completeness, here's the code that's running on the board:
#include "mbed.h"
int main()
sleep();
stm32 low-power mbed
$endgroup$
|
show 1 more comment
$begingroup$
I'm using an STM32L073RZ on a bare board with just the CPU and decoupling caps. I'm powering the board straight from an Otii Arc and measuring current consumption. I'm running MbedOS 5.11.2.
When I call the sleep()
function the CPU goes into a low power mode, with an occasional 5mA spike in current consumption approximately every second, see the image below:
What is the cause of this? I'm attempting to place the CPU into STOP mode with an RTC running - this should draw, according to the datasheet, 1µA current.
Further to this, how can I tell which low power mode the sleep()
function has chosen? I'm trying to stay away from the HAL because I've had many issues configuring interrupts and the like.
For completeness, here's the code that's running on the board:
#include "mbed.h"
int main()
sleep();
stm32 low-power mbed
$endgroup$
1
$begingroup$
I would guess your mcu is waking up once a second for some reason
$endgroup$
– Colin
10 hours ago
2
$begingroup$
It seems quite plausible that the RTC is generating an interrupt once per second. Put a breakpoint on the RTC interrupt handler.
$endgroup$
– Jeremy
9 hours ago
$begingroup$
@Jeremy thanks for the suggestion, doesn't appear to be an RTC interrupt as the handler doesn't trigger if I include it.
$endgroup$
– Adam Mitchell
9 hours ago
1
$begingroup$
@Adam - Even if the interrupt is masked, if the RTC is active it may be bringing elements out of low-power mode anyway.
$endgroup$
– Jeremy
9 hours ago
$begingroup$
@Jeremy that's a fair suggestion. I think I'll have to get to grips with the HAL so I can be absolutely sure which timers are running, which power mode the CPU is in etc.. Thanks!
$endgroup$
– Adam Mitchell
9 hours ago
|
show 1 more comment
$begingroup$
I'm using an STM32L073RZ on a bare board with just the CPU and decoupling caps. I'm powering the board straight from an Otii Arc and measuring current consumption. I'm running MbedOS 5.11.2.
When I call the sleep()
function the CPU goes into a low power mode, with an occasional 5mA spike in current consumption approximately every second, see the image below:
What is the cause of this? I'm attempting to place the CPU into STOP mode with an RTC running - this should draw, according to the datasheet, 1µA current.
Further to this, how can I tell which low power mode the sleep()
function has chosen? I'm trying to stay away from the HAL because I've had many issues configuring interrupts and the like.
For completeness, here's the code that's running on the board:
#include "mbed.h"
int main()
sleep();
stm32 low-power mbed
$endgroup$
I'm using an STM32L073RZ on a bare board with just the CPU and decoupling caps. I'm powering the board straight from an Otii Arc and measuring current consumption. I'm running MbedOS 5.11.2.
When I call the sleep()
function the CPU goes into a low power mode, with an occasional 5mA spike in current consumption approximately every second, see the image below:
What is the cause of this? I'm attempting to place the CPU into STOP mode with an RTC running - this should draw, according to the datasheet, 1µA current.
Further to this, how can I tell which low power mode the sleep()
function has chosen? I'm trying to stay away from the HAL because I've had many issues configuring interrupts and the like.
For completeness, here's the code that's running on the board:
#include "mbed.h"
int main()
sleep();
stm32 low-power mbed
stm32 low-power mbed
asked 10 hours ago
Adam MitchellAdam Mitchell
1416
1416
1
$begingroup$
I would guess your mcu is waking up once a second for some reason
$endgroup$
– Colin
10 hours ago
2
$begingroup$
It seems quite plausible that the RTC is generating an interrupt once per second. Put a breakpoint on the RTC interrupt handler.
$endgroup$
– Jeremy
9 hours ago
$begingroup$
@Jeremy thanks for the suggestion, doesn't appear to be an RTC interrupt as the handler doesn't trigger if I include it.
$endgroup$
– Adam Mitchell
9 hours ago
1
$begingroup$
@Adam - Even if the interrupt is masked, if the RTC is active it may be bringing elements out of low-power mode anyway.
$endgroup$
– Jeremy
9 hours ago
$begingroup$
@Jeremy that's a fair suggestion. I think I'll have to get to grips with the HAL so I can be absolutely sure which timers are running, which power mode the CPU is in etc.. Thanks!
$endgroup$
– Adam Mitchell
9 hours ago
|
show 1 more comment
1
$begingroup$
I would guess your mcu is waking up once a second for some reason
$endgroup$
– Colin
10 hours ago
2
$begingroup$
It seems quite plausible that the RTC is generating an interrupt once per second. Put a breakpoint on the RTC interrupt handler.
$endgroup$
– Jeremy
9 hours ago
$begingroup$
@Jeremy thanks for the suggestion, doesn't appear to be an RTC interrupt as the handler doesn't trigger if I include it.
$endgroup$
– Adam Mitchell
9 hours ago
1
$begingroup$
@Adam - Even if the interrupt is masked, if the RTC is active it may be bringing elements out of low-power mode anyway.
$endgroup$
– Jeremy
9 hours ago
$begingroup$
@Jeremy that's a fair suggestion. I think I'll have to get to grips with the HAL so I can be absolutely sure which timers are running, which power mode the CPU is in etc.. Thanks!
$endgroup$
– Adam Mitchell
9 hours ago
1
1
$begingroup$
I would guess your mcu is waking up once a second for some reason
$endgroup$
– Colin
10 hours ago
$begingroup$
I would guess your mcu is waking up once a second for some reason
$endgroup$
– Colin
10 hours ago
2
2
$begingroup$
It seems quite plausible that the RTC is generating an interrupt once per second. Put a breakpoint on the RTC interrupt handler.
$endgroup$
– Jeremy
9 hours ago
$begingroup$
It seems quite plausible that the RTC is generating an interrupt once per second. Put a breakpoint on the RTC interrupt handler.
$endgroup$
– Jeremy
9 hours ago
$begingroup$
@Jeremy thanks for the suggestion, doesn't appear to be an RTC interrupt as the handler doesn't trigger if I include it.
$endgroup$
– Adam Mitchell
9 hours ago
$begingroup$
@Jeremy thanks for the suggestion, doesn't appear to be an RTC interrupt as the handler doesn't trigger if I include it.
$endgroup$
– Adam Mitchell
9 hours ago
1
1
$begingroup$
@Adam - Even if the interrupt is masked, if the RTC is active it may be bringing elements out of low-power mode anyway.
$endgroup$
– Jeremy
9 hours ago
$begingroup$
@Adam - Even if the interrupt is masked, if the RTC is active it may be bringing elements out of low-power mode anyway.
$endgroup$
– Jeremy
9 hours ago
$begingroup$
@Jeremy that's a fair suggestion. I think I'll have to get to grips with the HAL so I can be absolutely sure which timers are running, which power mode the CPU is in etc.. Thanks!
$endgroup$
– Adam Mitchell
9 hours ago
$begingroup$
@Jeremy that's a fair suggestion. I think I'll have to get to grips with the HAL so I can be absolutely sure which timers are running, which power mode the CPU is in etc.. Thanks!
$endgroup$
– Adam Mitchell
9 hours ago
|
show 1 more comment
2 Answers
2
active
oldest
votes
$begingroup$
I can't speak about mbed specifically, but the general idea is that sleep()
causes the execution of the current process to pause for some number of seconds, or indefinitely if no argument (equivalent to an argument of 0) is given.
In a multiprocess environment, that means that it simply yields the CPU to other processes. If there are no other processes ready to run, the OS may or may not put the CPU into a low-power state while waiting for interrupts — it depends on how the idle()
task is written. This would not generally be the lowest-power state available on the CPU, however, since it wants to wake quickly when interrupts occur.
In your case, it appears to be waking up once a second to handle the system timer tick.
If you really want to get into a lower-power state, there are generally platform-specific calls for that, and that's exactly the sort of thing the HAL is for. You shouldn't avoid it, you should learn it.
After a quick search, I discovered that the documentation here: APIs - power management discusses this specifically.
$endgroup$
$begingroup$
Thanks for your response, very useful. In Mbed,sleep()
is supposed to place to CPU into a low-power mode, but no documentation that I can find explains this logic. I've disabled the SysTick IRQ in the NVIC to no avail, I guess I'll just keep turning off timers/counters until it disappears..
$endgroup$
– Adam Mitchell
9 hours ago
1
$begingroup$
@AdamMitchell - more likely what you need to do is actually read through the Mbed code (it is open source, even if by default they link a binary version of it) and figure out what they are doing, then decide if that can be brought into alignment with your goals, or if their goals are just too different.
$endgroup$
– Chris Stratton
8 hours ago
add a comment |
$begingroup$
As explained in the documentation, the following drivers can prevent deep sleep:
- Ticker
- Timeout
- Timer
- SPI
- I2C
- CAN
- SerialBase
If you need to identify what is blocking deep sleep, you can build from the command line, and enable the verbose debugging - even though it seems you do not have any in your example.
You can also review the tickless documentation. I believe this mode is relatively new, so it is possible that your platform has some problems in the HAL.
$endgroup$
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
);
);
, "mathjax-editing");
StackExchange.ifUsing("editor", function ()
return StackExchange.using("schematics", function ()
StackExchange.schematics.init();
);
, "cicuitlab");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "135"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f427383%2fwhats-causing-this-power-spike-in-stm32-low-power-mode%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
I can't speak about mbed specifically, but the general idea is that sleep()
causes the execution of the current process to pause for some number of seconds, or indefinitely if no argument (equivalent to an argument of 0) is given.
In a multiprocess environment, that means that it simply yields the CPU to other processes. If there are no other processes ready to run, the OS may or may not put the CPU into a low-power state while waiting for interrupts — it depends on how the idle()
task is written. This would not generally be the lowest-power state available on the CPU, however, since it wants to wake quickly when interrupts occur.
In your case, it appears to be waking up once a second to handle the system timer tick.
If you really want to get into a lower-power state, there are generally platform-specific calls for that, and that's exactly the sort of thing the HAL is for. You shouldn't avoid it, you should learn it.
After a quick search, I discovered that the documentation here: APIs - power management discusses this specifically.
$endgroup$
$begingroup$
Thanks for your response, very useful. In Mbed,sleep()
is supposed to place to CPU into a low-power mode, but no documentation that I can find explains this logic. I've disabled the SysTick IRQ in the NVIC to no avail, I guess I'll just keep turning off timers/counters until it disappears..
$endgroup$
– Adam Mitchell
9 hours ago
1
$begingroup$
@AdamMitchell - more likely what you need to do is actually read through the Mbed code (it is open source, even if by default they link a binary version of it) and figure out what they are doing, then decide if that can be brought into alignment with your goals, or if their goals are just too different.
$endgroup$
– Chris Stratton
8 hours ago
add a comment |
$begingroup$
I can't speak about mbed specifically, but the general idea is that sleep()
causes the execution of the current process to pause for some number of seconds, or indefinitely if no argument (equivalent to an argument of 0) is given.
In a multiprocess environment, that means that it simply yields the CPU to other processes. If there are no other processes ready to run, the OS may or may not put the CPU into a low-power state while waiting for interrupts — it depends on how the idle()
task is written. This would not generally be the lowest-power state available on the CPU, however, since it wants to wake quickly when interrupts occur.
In your case, it appears to be waking up once a second to handle the system timer tick.
If you really want to get into a lower-power state, there are generally platform-specific calls for that, and that's exactly the sort of thing the HAL is for. You shouldn't avoid it, you should learn it.
After a quick search, I discovered that the documentation here: APIs - power management discusses this specifically.
$endgroup$
$begingroup$
Thanks for your response, very useful. In Mbed,sleep()
is supposed to place to CPU into a low-power mode, but no documentation that I can find explains this logic. I've disabled the SysTick IRQ in the NVIC to no avail, I guess I'll just keep turning off timers/counters until it disappears..
$endgroup$
– Adam Mitchell
9 hours ago
1
$begingroup$
@AdamMitchell - more likely what you need to do is actually read through the Mbed code (it is open source, even if by default they link a binary version of it) and figure out what they are doing, then decide if that can be brought into alignment with your goals, or if their goals are just too different.
$endgroup$
– Chris Stratton
8 hours ago
add a comment |
$begingroup$
I can't speak about mbed specifically, but the general idea is that sleep()
causes the execution of the current process to pause for some number of seconds, or indefinitely if no argument (equivalent to an argument of 0) is given.
In a multiprocess environment, that means that it simply yields the CPU to other processes. If there are no other processes ready to run, the OS may or may not put the CPU into a low-power state while waiting for interrupts — it depends on how the idle()
task is written. This would not generally be the lowest-power state available on the CPU, however, since it wants to wake quickly when interrupts occur.
In your case, it appears to be waking up once a second to handle the system timer tick.
If you really want to get into a lower-power state, there are generally platform-specific calls for that, and that's exactly the sort of thing the HAL is for. You shouldn't avoid it, you should learn it.
After a quick search, I discovered that the documentation here: APIs - power management discusses this specifically.
$endgroup$
I can't speak about mbed specifically, but the general idea is that sleep()
causes the execution of the current process to pause for some number of seconds, or indefinitely if no argument (equivalent to an argument of 0) is given.
In a multiprocess environment, that means that it simply yields the CPU to other processes. If there are no other processes ready to run, the OS may or may not put the CPU into a low-power state while waiting for interrupts — it depends on how the idle()
task is written. This would not generally be the lowest-power state available on the CPU, however, since it wants to wake quickly when interrupts occur.
In your case, it appears to be waking up once a second to handle the system timer tick.
If you really want to get into a lower-power state, there are generally platform-specific calls for that, and that's exactly the sort of thing the HAL is for. You shouldn't avoid it, you should learn it.
After a quick search, I discovered that the documentation here: APIs - power management discusses this specifically.
edited 8 hours ago
answered 10 hours ago
Dave Tweed♦Dave Tweed
121k9151259
121k9151259
$begingroup$
Thanks for your response, very useful. In Mbed,sleep()
is supposed to place to CPU into a low-power mode, but no documentation that I can find explains this logic. I've disabled the SysTick IRQ in the NVIC to no avail, I guess I'll just keep turning off timers/counters until it disappears..
$endgroup$
– Adam Mitchell
9 hours ago
1
$begingroup$
@AdamMitchell - more likely what you need to do is actually read through the Mbed code (it is open source, even if by default they link a binary version of it) and figure out what they are doing, then decide if that can be brought into alignment with your goals, or if their goals are just too different.
$endgroup$
– Chris Stratton
8 hours ago
add a comment |
$begingroup$
Thanks for your response, very useful. In Mbed,sleep()
is supposed to place to CPU into a low-power mode, but no documentation that I can find explains this logic. I've disabled the SysTick IRQ in the NVIC to no avail, I guess I'll just keep turning off timers/counters until it disappears..
$endgroup$
– Adam Mitchell
9 hours ago
1
$begingroup$
@AdamMitchell - more likely what you need to do is actually read through the Mbed code (it is open source, even if by default they link a binary version of it) and figure out what they are doing, then decide if that can be brought into alignment with your goals, or if their goals are just too different.
$endgroup$
– Chris Stratton
8 hours ago
$begingroup$
Thanks for your response, very useful. In Mbed,
sleep()
is supposed to place to CPU into a low-power mode, but no documentation that I can find explains this logic. I've disabled the SysTick IRQ in the NVIC to no avail, I guess I'll just keep turning off timers/counters until it disappears..$endgroup$
– Adam Mitchell
9 hours ago
$begingroup$
Thanks for your response, very useful. In Mbed,
sleep()
is supposed to place to CPU into a low-power mode, but no documentation that I can find explains this logic. I've disabled the SysTick IRQ in the NVIC to no avail, I guess I'll just keep turning off timers/counters until it disappears..$endgroup$
– Adam Mitchell
9 hours ago
1
1
$begingroup$
@AdamMitchell - more likely what you need to do is actually read through the Mbed code (it is open source, even if by default they link a binary version of it) and figure out what they are doing, then decide if that can be brought into alignment with your goals, or if their goals are just too different.
$endgroup$
– Chris Stratton
8 hours ago
$begingroup$
@AdamMitchell - more likely what you need to do is actually read through the Mbed code (it is open source, even if by default they link a binary version of it) and figure out what they are doing, then decide if that can be brought into alignment with your goals, or if their goals are just too different.
$endgroup$
– Chris Stratton
8 hours ago
add a comment |
$begingroup$
As explained in the documentation, the following drivers can prevent deep sleep:
- Ticker
- Timeout
- Timer
- SPI
- I2C
- CAN
- SerialBase
If you need to identify what is blocking deep sleep, you can build from the command line, and enable the verbose debugging - even though it seems you do not have any in your example.
You can also review the tickless documentation. I believe this mode is relatively new, so it is possible that your platform has some problems in the HAL.
$endgroup$
add a comment |
$begingroup$
As explained in the documentation, the following drivers can prevent deep sleep:
- Ticker
- Timeout
- Timer
- SPI
- I2C
- CAN
- SerialBase
If you need to identify what is blocking deep sleep, you can build from the command line, and enable the verbose debugging - even though it seems you do not have any in your example.
You can also review the tickless documentation. I believe this mode is relatively new, so it is possible that your platform has some problems in the HAL.
$endgroup$
add a comment |
$begingroup$
As explained in the documentation, the following drivers can prevent deep sleep:
- Ticker
- Timeout
- Timer
- SPI
- I2C
- CAN
- SerialBase
If you need to identify what is blocking deep sleep, you can build from the command line, and enable the verbose debugging - even though it seems you do not have any in your example.
You can also review the tickless documentation. I believe this mode is relatively new, so it is possible that your platform has some problems in the HAL.
$endgroup$
As explained in the documentation, the following drivers can prevent deep sleep:
- Ticker
- Timeout
- Timer
- SPI
- I2C
- CAN
- SerialBase
If you need to identify what is blocking deep sleep, you can build from the command line, and enable the verbose debugging - even though it seems you do not have any in your example.
You can also review the tickless documentation. I believe this mode is relatively new, so it is possible that your platform has some problems in the HAL.
answered 3 hours ago
Sean HoulihaneSean Houlihane
3,37711022
3,37711022
add a comment |
add a comment |
Thanks for contributing an answer to Electrical Engineering Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f427383%2fwhats-causing-this-power-spike-in-stm32-low-power-mode%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
$begingroup$
I would guess your mcu is waking up once a second for some reason
$endgroup$
– Colin
10 hours ago
2
$begingroup$
It seems quite plausible that the RTC is generating an interrupt once per second. Put a breakpoint on the RTC interrupt handler.
$endgroup$
– Jeremy
9 hours ago
$begingroup$
@Jeremy thanks for the suggestion, doesn't appear to be an RTC interrupt as the handler doesn't trigger if I include it.
$endgroup$
– Adam Mitchell
9 hours ago
1
$begingroup$
@Adam - Even if the interrupt is masked, if the RTC is active it may be bringing elements out of low-power mode anyway.
$endgroup$
– Jeremy
9 hours ago
$begingroup$
@Jeremy that's a fair suggestion. I think I'll have to get to grips with the HAL so I can be absolutely sure which timers are running, which power mode the CPU is in etc.. Thanks!
$endgroup$
– Adam Mitchell
9 hours ago