Pergunta

Estou usando um MSP430F5438 com a versão 5.4 do Freertos.

Estou tendo um problema engraçado que não consigo descobrir.

Basicamente, quando eu defino o configtick_rate_hz para valores diferentes, o LED pisca mais rápido ou mais lento; Deve permanecer a mesma taxa. Ele pisca mais devagar quanto mais alto eu configuro configuração configtick_rate_hz e mais rápido quando eu defini tick_rate mais baixo.

vtaskdelayuntil (& xlastflashtime, xflashrate); é tal que o LED deve piscar apenas uma vez por segundo, não importa qual seja o configtick_rate_hz. Passei e verifiquei o Xflashrate para ter certeza. É sempre = para o configtick_rate_hz. Código:

xFlashRate = ledFLASH_RATE_BASE;//my flash base rate is 1000ms
xFlashRate /= portTICK_RATE_MS; //so xFlashrate = whatever configTICK_RATE_HZ equals

/* We need to initialise xLastFlashTime prior to the first call to vTaskDelayUntil().*/ 
xLastFlashTime = xTaskGetTickCount();
for(;;) { 
vTaskDelayUntil( &xLastFlashTime, xFlashRate ); vParTestToggleLED( uxLED ); 
flashled();//this should happen every 1 second.
}

O LED pisca com um período superior a 1 segundo, quando eu defino o configtick_rate_hz como 1000 e o LED pisca com um período muito menor que 1s quando eu defino a taxa de carrapatos para algo menos que ~ 200

configtick_rate_hz não deve afetar o pisca -pisca de LED.

Sei que são necessárias mais informações e fornecerá prontamente quaisquer trechos de código que forem necessários para ajudar.

Foi útil?

Solução

O carrapato RTOS é gerado por uma interrupção do timer. O temporizador foi definido (de forma inadequada), de modo que sempre causava um carrapato fixo a 400kHz, não importa o que você defina o configtick_rate_hz também. Como a taxa de piscar é definida sob a suposição de que a taxa de ticks RTOs é representada corretamente pelo configtick_rate_hz (porttick_rate_ms = 1000/configtick_rate_hz), os problemas se seguiram.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top