Timing auf einem ESP32 mit FreeRTOS (vTaskDelayUntil..)

Gast #6626336
Hallo,
ich habe es geschafft einen Task auf einem ESP32 mit FreeRTOS zum laufen 
zu bringen.
Allerdings habe ich ein verständisproblem (oder konfigurationsproblem) 
mit meinem Timings
1
#define CYCLE_RATE_MS 1000
2
static void testTask(void * pvParameters)
3
{
4
    ESP_LOGI(TAG_NTP, "starting testTask");
5
    TickType_t xLastWakeTime;
6

7
    xLastWakeTime = xTaskGetTickCount();
8

9
    while(1)
10
    {
11
        vTaskDelayUntil(&xLastWakeTime, CYCLE_RATE_MS);
12

13
        ESP_LOGI(TAG, "task executed");
14
    }
15
}
der Task wird jetzt zyklisch ausgeführt aber nicht alle 1000ms, sondern 
alle 10000ms.

gibt es in der Konfiguration noch irgend etwas, was ich einstellen muss?
Gast
soweit ich weiss arbeitet der ESP32 mit 10 ms Ticks, genauer sollte man 
eine Konstante für die Umrechnung ms <-> ticks verwenden:
1
const TickType_t xDelay = 500 / portTICK_PERIOD_MS;
Gast
Johannes schrieb:
> Johannes S. schrieb:
>> soweit ich weiss arbeitet der ESP32 mit 10 ms Ticks
>
> Das hatte ich ja bemerkt.
> Habe gedacht, dass man das auch irgendwo einstellen/umstellen kann.

Nach dem "Denken" hat es für das Lesen der Doku nicht mehr gereicht?
RTFM!

Natürlich kannst Du die Ticklänge einstellen:
Entweder Du machst das manuell in der FreeRTOS Config oder bei Nutzung 
des ESP-IDF über
1
idf.py menuconfig
Component Config -> FreeRTOS -> Tick rate [Hz]

Einfacher geht es nicht.
Gast
Johannes S. schrieb:
> soweit ich weiss arbeitet der ESP32 mit 10 ms Ticks, genauer
> sollte man
> eine Konstante für die Umrechnung ms <-> ticks verwenden:const
> TickType_t xDelay = 500 / portTICK_PERIOD_MS;

Da gibt's ein Makro für pdMS_TO_TICKS.

Der TE müsste also
1
vTaskDelayUntil(&xLastWakeTime, pdMS_TO_TICKS(CYCLE_RATE_MS));
 schreiben, wenn ich mich nicht irre.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 5 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.