📄 simbemfinput.c
字号:
/****************************************************************************/
/* */
/* trapezoidl wave control without sensor (back EMF) */
/* (carrier 20kHz) */
/****************************************************************************/
//2005-8-7 13:20
#include "typedefine.h"
#include "sfr26a.h"
#include "simbemfinput.h"
#include "com_def.h"
//2005-8-7 13:25
UINT_16 phaseperiodbuf = INIperiod ;//1200;//30;//1200;//1200;
UINT_16 phaseperiod = INIperiod ;//30;//1200;//1200;//30;//600;//60;//60; //1000rpm 20000 * 60 /1000
//UINT_16 pre_phaseperiod = 300;//1200;
UINT_16 W_phase_cnt = INIperiod;//INIperiod /6;//200;//5;//1200 - 1000;//800;// 20;//400;
UINT_16 V_phase_cnt = INIperiod;//INIperiod - INIperiod /6;//1000;//25;//1200 - 200;//400;//10;//200;//200;//400;
UINT_16 U_phase_cnt = INIperiod;//INIperiod /2;//600;//15;//1200 - 600;
UINT_8 Phaseoutputflag = 0;
//2005-8-7 13:25
#define UIN p10_5 /*INT5/P17*/
#define VIN p10_6 /*INT3/P15*/
#define WIN p10_7 /*INT4/P16*/
#define PHASEIN(phase) {\
if ( ##phase##_phase_cnt < phaseperiod )\
{\
##phase##_phase_cnt ++;\
}\
else\
{\
##phase##IN = ~##phase##IN;\
##phase##_phase_cnt = 1;\
}\
}
inline void WphaseIN (void);
inline void WphaseIN (void)
{
if ( W_phase_cnt < phaseperiod )
{
W_phase_cnt ++;
}
else
{
WIN = ~WIN;
W_phase_cnt = 1;
if ( phaseperiodbuf != phaseperiod)
{
phaseperiod = phaseperiodbuf;
V_phase_cnt = phaseperiod * 2 /3;
U_phase_cnt = phaseperiod /3;
}
}
}
void sim_posinfo (void )
{
//PHASEIN(U);
//PHASEIN(V);
//PHASEIN(W);
//UIN = ~ UIN;
//VIN = ~ VIN;
//WIN = ~ WIN;
WphaseIN();
PHASEIN(V);
PHASEIN(U);
//pd10 = 0xe0;
}
//2005-8-7 13:20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -