note: - модбас не моделируется, в s-function просто передаются константы режимов. - лишние файлы убраны в outdate. - два канала одной фазы переключаются немного криво: на один такт симуляции проскакивает высокий уровень предыдущего канала и только потом включается текущий канал
38 lines
1.0 KiB
C
38 lines
1.0 KiB
C
#ifndef __CONTROL_H_
|
|
#define __CONTROL_H_
|
|
|
|
#include "modbus_data.h"
|
|
#include "periph_general.h"
|
|
#include "math.h"
|
|
|
|
#define M_PI 3.14159265358979323846 /* pi */
|
|
|
|
// defines for timers
|
|
#define HZ_TIMER_CTRL 400
|
|
#define HZ_TIMER_PWM 1000
|
|
|
|
|
|
// defines for PWMs
|
|
//#define INTERNAL_THREE_PHASE_PWM_ENABLE // pwm with timer in slave mode: time shift less than 1 period of PWM
|
|
//#define SINE_THREE_PHASE_PWM_ENABLE // pwm sine with time shift
|
|
|
|
#define SIN_TABLE_SIZE_MAX HZ_TIMER_PWM
|
|
|
|
|
|
// defines for filling arrays
|
|
#define CALC_SAMPLES_PER_PERIOD(_hztim_, _hztarget_) (_hztim_/_hztarget_)
|
|
//(TIM_CTRL.sTimFreq/PWM.PWM_Value)
|
|
|
|
// OR define samples
|
|
//#define SAMPLES_PER_PERIOD 10
|
|
//#define HZ_TIMER_CTRL (HZ_SINUS*SAMPLES_PER_PERIOD)
|
|
|
|
#define CALC_NUMB_OF_PERIODS(_arr_size_, _hztim_, _hztarget_) (_arr_size_/CALC_SAMPLES_PER_PERIOD(_hztim_, _hztarget_))
|
|
//#define NUMB_OF_PERIODS (5)
|
|
|
|
#define CALC_ARR_SIZE(_numb_of_periods_, _samples_per_period_) ((_numb_of_periods_)*(_samples_per_period_))
|
|
|
|
|
|
|
|
|
|
#endif // __CONTROL_H_
|