« Back to Function sub system PWMGen

State machine PWMGen

(Not Available)

State machine states

    • Reseteamos las salidas y los elementos de memoria.
      • Destination:Active
      • Condition: (Not Available)
      • Actions:
        • PWMGen
          Todos los datos inicialmente están a cero.
          Code
          PWMGen_oldduty=0;
          PWMGen_oldperiod=0;
          PWMGen_oldoffset=0;
          PWMGen_output=FALSE;
    • Nuevos parámetros en la entrada fuerzan un recálculo de los timers.
      • Destination:Active
      • Condition: recalcConditions
        Code
        PWMGen_offset!=PWMGen_oldoffset ||
        PWMGen_duty!=PWMGen_oldduty ||
        PWMGen_period != PWMGen_oldperiod
      • Actions:
        • PWMGen
          Recalculamos los timers de cuanto tiempo debe estar a 0 y cuanto tiempo debe estar a 1.
          Code
          PWMGen_timHigh=(t_timer)((FL_32)PWMGen_period*PWMGen_duty);
          PWMGen_timLow=PWMGen_period-PWMGen_timHigh-PWMGen_offset;
          PWMGen_oldduty=PWMGen_duty;
          PWMGen_oldperiod=PWMGen_period;
          PWMGen_oldoffset=PWMGen_offset;
    • No hay que recalcular, simplemente hay que ejecutar la máquina de estados interna PWMGenInner
      • Destination:Active
      • Condition: noRecalcConditions
        Code
        PWMGen_duty == PWMGen_oldduty && PWMGen_period==PWM_oldperiod && PWMGen_offset==PWMGen_oldoffset
      • Actions: