Forum: Mikrocontroller und Digitale Elektronik FreeRTOS abschalten, deaktivieren?


von John P. (brushlesspower)


Lesenswert?

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?

von chris (Gast)


Lesenswert?

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);
}

von gre (Gast)


Lesenswert?

Tickless unterstützung?

von John P. (brushlesspower)


Lesenswert?

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

von John P. (brushlesspower)


Lesenswert?

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
Noch kein Account? Hier anmelden.