SMC bastidor de la máquina de estado de escritura

En el método del microcontrolador se convierte en el metal desnudo, el método es relativamente buena máquina de estado, tales como el juicio clave de detección clásico.
De hecho, hay muchos lugares que usted puede utilizar esta idea. Tal como sensor de adquisición de datos, no siempre esperando porque la operación microcontrolador, tales como la baja eficiencia, a menudo en combinación manera FSM + temporizador para mejorar la utilización de la CPU
Un sensor utilizado en el método de FSM.
Como todos sabemos, DS18B20 colección es relativamente lento, después de enviar la instrucción de conversión, la necesidad más lento que esperar a 720ms, esta vez un poco demasiado largo. Simplemente no puede sostenerse.
En la siguiente manera: I utiliza una resolución de 11bit, la resolución es suficiente para 0.125, ya que sólo una referencia de temperatura.
La resolución del sensor de temperatura es de usuario - configurable a 9, 10, 11, o 12 bits, que corresponden a incrementos de 0,5 ° C, 0,25 ° C, 0.125 ° C, y 0,0625 ° C, respectivamente.
Temperatura Tiempo Conversión t CONV
9 - resolución de bit 93,75 ms 0,5
10 - la resolución de bits 187,5 0,25
11 - bits de resolución 375 0,125
12 - bits de resolución 750 0,0625
Bueno, yo desde luego no estoy muerto, etc., y la CPU más desperdiciado muertos, y muchos, la eficiencia es muy baja, el trabajo real no puede ser aceptado.
Por lo tanto, hicimos una máquina de estados:

int main (int argc, const char * argv [])

{
    mientras que (1)
    {
        ds18b20_discope ();
    }
    return 0;
}
ds18b20_discope vacío (vacío)
{
    interruptor (DS18B20 máquina de estado variable global)
    {
    caso envía comandos:
        Enviar comando de conversión
        Asignados a los medios de estado de espera
        descanso;
    Espere caso cargado Estado:
        Determinar si hay un tiempo de espera,
        Si hay un tiempo de espera, entonces: leer, contador se borra, y los comandos de enviar de vuelta al estado
        De lo contrario, no hacer nada
            descanso;
    defecto:
        descanso;
    }
}
La interrupción del reloj de referencia puede refinar a mí mismo, soy una interrupción de 50 ms
HAL_TIM_PeriodElapsedCallback anular (TIM_HandleTypeDef * htim)
{
    Si DS18B20 ha estado en un estado de espera,
    Entonces recuento ++
}
Tal es un simple máquina de estado de temporización de muestreo sensor de la idea, y similares no morirá, alta eficiencia, y estable.
El momento de la nota idea DS18B20 más estrictas, dijo que Internet no debe ser interrumpido, pero más tarde portado a los FreeRTOS, también es posible, el muestreo de la temperatura es bastante estable, pero teniendo en cuenta el programa de seguimiento es relativamente grande, por lo que es de metal desnudo, la máquina de estados básicamente resuelto.

 

Supongo que te gusta

Origin www.cnblogs.com/CodeWorkerLiMing/p/12501934.html
Recomendado
Clasificación