46 lines
1.4 KiB
C++
46 lines
1.4 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; // Îñòàâëÿåì ôëàã ÷òî èìïóëüñû óæå âêëþ÷åíû.
|
|
|
|
}
|
|
|
|
}
|
|
|