Hallo, ich sitze nun schon eine Weile an einem Problem mit FreeRTOS und dem NFR52. Der NRF52 soll im sleep so wenig wie möglich Strom benötigen. Aktuell schaffe ich 5-6µA. Aber das FreeRTOS in der NRF52 Arduino Library von Adafruit lässt den Controller natürlich ständig aus dem Sleep aufwachen mit der eingestellten Tick Rate. Dadurch steigt der Strom auf etwa 200µA. Wenn ich die Tick Rate auf 4 Hz reduziere, schaffe ich meine 5-6µA Aber viele Funktionen (insbesondere die I2C) leiden darunter. Kann man das FreeRTOS nicht für eine bestimmte Zeit deaktivieren? Ich habe zwar etwas über den Tickless mode gelesen, aber wie kann ich den aktivieren? meine Idee: FreeRTOS deaktivieren und dann in den Sleep und beim aufwachen das FreeRTOS wieder aktivieren. Geht sowas? Kann mir jemand den entscheidenen Hinweis geben?
Indem man den Tick IRQ abschaltet.
int32_t OS_Tick_Enable (void) {
if (PendST != 0U) {
PendST = 0U;
SCB->ICSR = SCB_ICSR_PENDSTSET_Msk;
}
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
return (0);
}
int32_t OS_Tick_Disable (void) {
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
if ((SCB->ICSR & SCB_ICSR_PENDSTSET_Msk) != 0U) {
SCB->ICSR = SCB_ICSR_PENDSTCLR_Msk;
PendST = 1U;
}
return (0);
}
chris schrieb: > Indem man den Tick IRQ abschaltet. werde ich mal ausprobieren, danke für den Hinweis. Aber deaktiviert dies nicht den Systick vom NRF52? Ich möchte ja auch verstehen was ich da tue. gre schrieb: > Tickless unterstützung? Ja, denke schon. Zumindest ist die im config file eingetragen. #define configUSE_TICKLESS_IDLE 1 #define configUSE_TICKLESS_IDLE_SIMPLE_DEBUG 1
John P. schrieb: > chris schrieb: >> Indem man den Tick IRQ abschaltet. > > werde ich mal ausprobieren, danke für den Hinweis. funktioniert leider nicht... Der NRF52 wacht trotzdem mit der FreeRTOS Tick Rate auf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.