« Back to Function sub system PWMGen

State machine PWMGenInner

(Not Available)

State machine states

    • Si se dan las condiciones, empezamos a generar el PWM, en éste caso con un offset.
      • Destination:Offset
      • Condition: offsetCondition
        Code
        PWMGen_timHigh>0 && PWMGen_offset>0
      • Actions:
        • PWMGen
          Sacamos un valor bajo por el puerto de salida
          Code
          PWMGen_output=FALSE;
        • PWMGen
          Resetea los contadores a sus valor iniciales.
          Code
          PWMGen_countOffset=PWMGen_offset;
          PWMGen_countHigh=PWMGen_timHigh;
          PWMGen_countLow=PWMGen_timLow;
    • Se ha especificado un PWM pero el offset es 0, comenzaremos el bucle en High.
      • Destination:High
      • Condition: highCondition
        Code
        PWMGen_timHigh>0 && PWMGen_offset<=0
      • Actions:
        • PWMGen
          Sacamos un valor alto por el puerto de salida
          Code
          PWMGen_output=TRUE;
        • PWMGen
          Resetea los contadores a sus valor iniciales.
          Code
          PWMGen_countOffset=PWMGen_offset;
          PWMGen_countHigh=PWMGen_timHigh;
          PWMGen_countLow=PWMGen_timLow;
    • Tras pasar el periodo de offset, saltaremos al estado High
    • Seguimos decrementando el offset
      • Destination:Offset
      • Condition: (Not Available)
      • Actions:
        • PWMGen
          Decrementamos el contador de offset
          Code
          if (PWMGen_countOffset>0) {
          PWMGen_countOffset--;
          }
    • Hemos acabado el conteo en High (duty), hemos de pasar a Low.
    • Hemos de seguir decrementando la cuenta de duty.
      • Destination:High
      • Condition: (Not Available)
      • Actions:
        • PWMGen
          Decrementamos el contador de duty
          Code
          if (PWMGen_countHigh>0) {
          PWMGen_countHigh--;
          }
  • Low

    • Hemos acabado el conteo de Low, hemos de saltar a offset
      • Destination:Offset
      • Condition: PWMGen_endLowCountToOffset
        Code
        PWMGen_countLow<=0 && PWMGen_offset>0
      • Actions:
        • PWMGen
          Resetea los contadores a sus valor iniciales.
          Code
          PWMGen_countOffset=PWMGen_offset;
          PWMGen_countHigh=PWMGen_timHigh;
          PWMGen_countLow=PWMGen_timLow;
    • No hay offset y hemos acabado la cuenta para Low, saltaremos directamente a High.
      • Destination:High
      • Condition: PWMGen_endLowCountToHigh
        Code
        PWMGen_countLow<=0
        && PWMGen_offset<=0
      • Actions:
        • PWMGen
          Resetea los contadores a sus valor iniciales.
          Code
          PWMGen_countOffset=PWMGen_offset;
          PWMGen_countHigh=PWMGen_timHigh;
          PWMGen_countLow=PWMGen_timLow;
        • PWMGen
          Sacamos un valor alto por el puerto de salida
          Code
          PWMGen_output=TRUE;
    • Seguimos decrementando el contador de Low, pues seguimos en el estado bajo del PWM
      • Destination:Low
      • Condition: (Not Available)
      • Actions:
        • PWMGen
          Decrementamos el contador de Low
          Code
          if (PWMGen_countLow>0) {
          PWMGen_countLow--;
          }