📄 speed_reg.c
字号:
#define PWM_MAX 0x3f0
#define PWM_MIN 0x010
#include "2407bit.h"
#include "2407e.h"
#include "Speed_Reg.h"
extern PIDREG1 pid0;
void EVA_PWM1_Init(SPEEDPID *speed1)
{
//Pwm Init
(*MCRA)|=1<<PWM1;
(*EVBIFRA)=0xffff; //clear all interrupt flag
(*ACTRA) =0x0001; //set pwm active high
(*DBTCONA)=0x0000; //disable dead area
(*CMPR1) =0x01ff; //set compare register one 50% period
(*T1PR) =0x03ff;
//(*CMPR1) =speed1.period_max>>1; //set compare register one 50% period
//(*T1PR) =speed1; //set period register pwm is 20khz
(*COMCONA)=(1<<CENABLE)|(0<<CLD1)|(1<<CLD0)|(0<<ACTRLD1)|(1<<ACTRLD0)|(1<<FCOMPOE);
//CENABLE=1 enable compare opertion
//FCOMPOE=1 pwmout enable
(*T1CNT) =0x0000; //clear cnt
(*GPTCONA)=1<<TCOMPOE; //Timer1 compara enable
(*EVAIMRA)=0x0000; //Mask all interrupt
(*T1CON)=(0<<TMODE1)|(1<<TMODE0)|(0<<TPS2)|(0<<TPS1)|(0<<TPS0)|(1<<TENABLE)|(1<<TCLD1)|(1<<TCLD0);
/*TMODE1:TMODE0 01 增减数方式
TPS2 TPS1 TPS0 111 X/1
TENABLE 1 Enable Timer
TCLK1 TCLK0 11 Using CPU CLK
TCLD1 TCLD0 11 Reserved*/
(*MCRA)&=~(1<<PWMEN1); //Enable PWM out
(*PADATDIR)|=(1<<(PWMEN1+8));
(*PADATDIR)&=~(1<<PWMEN1);
//Qep Init
//T4Init
(*MCRC)|=(1<<QEP3)|(1<<QEP4);
*T4PR=0xffff; //Set period register
*T4CNT=0x0000; //Clear Cnt2
*CAPCONB=(1<<CAPQEPN1)|(1<<CAPQEPN0); //Enable QEP
*T4CON=(1<<TMODE1)|(1<<TMODE0)|(0<<TPS2)|(0<<TPS1)|(0<<TPS0)|(1<<TENABLE)|(1<<TCLKS1)|(1<<TCLKS0)|(1<<TCLD1)|(1<<TCLD0);
//TMODE1:TMODE0 11 定向增减数方式
//TPS2 TPS1 TPS0 111 X/1
//TENABLE 1 Enable Timer
//TCLK1 TCLK0 11 Using As QEP
//TCLD1 TCLD0 11 Reserved
}
void EVA_PWM1_Updata(SPEEDPID *speed1)
{
speed1->pid_reg->pid_ref_reg1=(speed1->Speed)<<4;
speed1->pid_reg->pid_fb_reg1=(speed1->Qep_F)<<4; /* Pass inputs to pid1 */
speed1->pid_reg->calc(speed1->pid_reg);
speed1->Pwm= speed1->pid_reg->pid_out_reg1;
speed1->Pwm=((speed1->Pwm)>>4)+0x1ff;
if(speed1->Pwm>PWM_MAX)
speed1->Pwm=PWM_MAX;
if(speed1->Pwm<PWM_MIN)
speed1->Pwm=PWM_MIN;
(*CMPR1)=speed1->Pwm;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -