FreeRTOS abschalten, deaktivieren?

OP #5804278
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?
Gast #5804515
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);
}
OP #5804998
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.