Beruflich Dokumente
Kultur Dokumente
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
#include "lab6.h"
#include "monitorF28335.h"
int resultado[2];
double temp;
const double temp_ref=80.0;
double Ts;
void tmr0_isr(void);
void main(void)
{
/*****************************************************/
/*CONFIGURACION INICIAL*/
/*****************************************************/
DINT;
DRTM;
InitSysCtrl();
EALLOW;
SysCtrlRegs.HISPCP.all = 0x3;
EDIS;
EALLOW;
EDIS;
/*****************************************************/
/*CONFIGURACION ADC*/
/*****************************************************/
InitAdc();
AdcRegs.ADCTRL3.bit.ADCCLKPS = 0x4;
AdcRegs.ADCTRL1.bit.ACQ_PS = 1;
AdcRegs.ADCTRL3.bit.SMODE_SEL = 0;
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;
AdcRegs.ADCTRL1.bit.CONT_RUN = 0;
-1-
C:\Users\user\Desktop\backup usb 081215\MT418\lab6.c sbado, 12 de diciembre de 2015 10:50 a.m.
AdcRegs.ADCTRL1.bit.SEQ_OVRD = 0;
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x00;
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x01;
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x1;
/*****************************************************/
/*CONFIGURACIN DEL EQEP*/
/*****************************************************/
//
EQep1Regs.QEPCTL.bit.PCRM=2;
EQep1Regs.QEPCTL.bit.SEI=0;
EQep1Regs.QEPCTL.bit.IEI=0;
EQep1Regs.QEPCTL.bit.SWI=0;
EQep1Regs.QEPCTL.bit.SEL=0;
EQep1Regs.QEPCTL.bit.IEL=0;
EQep1Regs.QEPCTL.bit.QPEN=1;
EQep1Regs.QEPCTL.bit.QCLM=0;
EQep1Regs.QEPCTL.bit.UTE=1;
EQep1Regs.QEPCTL.bit.WDE=0;
EQep1Regs.QPOSMAX=0x0000ffff;
EQep1Regs.QUPRD=0x0000ffff;
/*****************************************************/
/*VALORES A INICIALIZAR*/
/*****************************************************/
Ts = 0.001;
Kp = 1.0;
Ki = 0.0;
Kd = 0.0;
w_rpm_ref=1000.0;
/*****************************************************/
/*CONFIGURACION TIMER*/
/*****************************************************/
/*****************************************************/
/*CONFIGURACION INTERRUPCIONES*/
/*****************************************************/
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
// Direcciona la interrupcin TINT0 hacia la direccin &cpu_timer0_isr
PieVectTable.TINT0 = &tmr0_isr;
EDIS;
/*****************************************************/
/*CONFIGURACION PWM*/
/*****************************************************/
EALLOW;
// Detiene los EPWM
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
EDIS;
/*
// Multiplexor de GPIO -> EPWMA1 (O)
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // 0->GPIO, x->(revisar datasheet)
EDIS;
*/
// Tasa del prescalador del SYSCLKOUT
// TBCLK = SYSCLKOUT/(1*10) = 15Mhz
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 5;
EPwm1Regs.TBCTL.bit.CLKDIV = 0;
// Determina el periodo 15000 TBCLKs
// T = (TBPRD+1)*(1/TBCLK) = 15000*1/(15Mhz) = 1ms
EPwm1Regs.TBPRD = 14999;
// La fase es 0
EPwm1Regs.TBPHS.half.TBPHS = 0x0000;
// Deshabilitar carga de fase
EPwm1Regs.TBCTL.bit.PHSEN = 0;
// Contador a cero
EPwm1Regs.TBCTR = 0x0000;
// Configurar shadowing
// Modo shadow (la escritura se hace sobre la sombra)
EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0;
// La sincronizacin sombra->real se hace cuando el CTR es 0
EPwm1Regs.CMPCTL.bit.LOADAMODE = 0;
// Configurar acciones
// Contador es CMPA -> Pone a 0 la senal
-3-
C:\Users\user\Desktop\backup usb 081215\MT418\lab6.c sbado, 12 de diciembre de 2015 10:50 a.m.
EPwm1Regs.AQCTLA.bit.CAU = 1;
// Contador es 0 -> Pone a 1 la senal
EPwm1Regs.AQCTLA.bit.ZRO = 2;
EALLOW;
// Sincroniza todos los EPWM y los activa
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;
/*****************************************************/
/*CONFIGURACION FINAL*/
/*****************************************************/
/*****************************************************/
/*BUCLE INFINITO*/
/*****************************************************/
do
{
}
while(1); //Itera infinitamente
}
error = w_rpm_ref-w_rpm;
/*
senal_pwm_entera = senal/100/3*15000;
*/
// Anti-windup simple
if (senal_pwm_entera>15000)
{
senal_pwm_entera=15000;
}
else if (senal_pwm_entera<0)
{
senal_pwm_entera=100;
}
// Salida
EPwm1Regs.CMPA.all = senal_pwm_entera;
// Actualizaciones
error_anterior = error;
pulsos_ant = pulsos;
-5-