Tick period

Ciao a tutti

volevo chiedere come è correlato il valore della Linea 2 con quello della Linea 1.
Inoltre il valore della Linea 1 che corrisponde al tick period della scheda viene impostato settando i registri del uC ?

Grazie

Linea 1: portUSE_WDTO = 0 (che corrisponde a WDTO_15MS)
Linea 2: configTICK_RATE_HZ = 62
Linea 3: portTICK_PERIOD_MS = 16

Stai "giocando" con freeRTOS™? ... e che versione di FreeRTOS stai usando ?

In vari files della libreria, vengono definiti:

/* Timing for the scheduler.
 * Watchdog Timer is 128kHz nominal,
 * but 120 kHz at 5V DC and 25 degrees is actually more accurate,
 * from data sheet.
 */
#define portTICK_PERIOD_MS          ( (TickType_t) _BV( portUSE_WDTO + 4 ) )
...
...
//    xxx Watchdog Timer is 128kHz nominal, but 120 kHz at 5V DC and 25 degrees is actually more accurate, from data sheet.
#define configTICK_RATE_HZ      ( (TickType_t)( (uint32_t)128000 >> (portUSE_WDTO + 11) ) )

... quindi, partendo dalla prima definizione:

#define portUSE_WDTO        WDTO_15MS

... e sapendo che WDTO_15MS è uguale a 0, dovresti poter calcolare i valori delle altre due #define.

Guglielmo

Ah, rammenta che, nominalmente, il WDT viaggia a 128KHz, e quando si seleziona WDTO_15MS (0) si seleziona il primo dei prescaler che vale 2K, i successivi valori sono 4K, 8K, 16K, 32K, 128K 256K, 512K, 1024K.

Se applichi tutti i valori, vedi che vengono quei risultati.

Guglielmo

Ciao Guglielmo

si uso FreeRTOS.
grazie molte per la tua tempestiva ed esauriente risposta.

Grazie

Ciao

un'altra domanda. Nel file FreeRTOSConfig.h non trovo la costante configUSE_TICKLESS_IDLE.

Perchè ?

Grazie

Dovresti chiedere a chi ha fatto il porting su Arduino non ti pare?

Vai su GitHub, apri una "issue" e chiediglielo ...

O magari basta aggiungerla a mano ... di costanti ne esistono un'infinità e, sia per seplicità, che per dimensioni del codice, tante vengono omesse perché si usano solo in casi specifici.

Guglielmoglielmo