Timing auf einem ESP32 mit FreeRTOS (vTaskDelayUntil..)

Gast #6626336
Lesenswert?
• ▲
▼
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 #6626743
Lesenswert?
• ▲
▼
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 #6626766
Lesenswert?
• ▲
▼
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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.