46 lines
1.6 KiB
C++
46 lines
1.6 KiB
C++
/*!\file
|
||
* \brief \todo Описание файла.
|
||
*/
|
||
/*
|
||
* InverterSync.cpp
|
||
*
|
||
* Created on: 19 июн. 2019 г.
|
||
* Author: titov
|
||
*/
|
||
|
||
#include "InverterSync.hh"
|
||
|
||
driver::InverterSync::InverterSync(peripheral::IPwm & u, peripheral::IPwm & v,
|
||
peripheral::IPwm & w,
|
||
driver::IDiscreteOutput & pulse) : Inverter( u, v, w, pulse ) {}
|
||
|
||
void driver::InverterSync::pwm( float Ta, float Tb, float Tc ) {
|
||
|
||
if( checkTime( Ta ) and checkTime( Tb ) and checkTime( Tc ) ) {
|
||
|
||
//core::CriticalSection cs_0;
|
||
|
||
phase_u.setThreshold( TxToTreshold( _Ta = Ta ) );
|
||
phase_v.setThreshold( TxToTreshold( _Tb = Tb ) );
|
||
phase_w.setThreshold( TxToTreshold( _Tc = Tc ) );
|
||
|
||
} else {
|
||
phase_u.setThreshold( TxToTreshold( _Ta = 0 ) );
|
||
phase_v.setThreshold( TxToTreshold( _Tb = 0 ) );
|
||
phase_w.setThreshold( TxToTreshold( _Tc = 0 ) );
|
||
}
|
||
|
||
if( pulse_enable ) { // Если необходимо включить импульсы,
|
||
|
||
phase_u.enableOutput(); // то включаем импульсы, так как
|
||
phase_v.enableOutput(); // новая правильная уставка уже записана.
|
||
phase_w.enableOutput();
|
||
|
||
pulse_enable = false; // Оставляем флаг что не нужно включать импульсы.
|
||
pulse_release = true; // Оставляем флаг что импульсы уже включены.
|
||
|
||
}
|
||
|
||
}
|
||
|