首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

DSP编程 做实验的思路?大家帮忙看看对不对?

DSP编程 做实验的思路?大家帮忙看看对不对?

刚开始学习dsp  28335 , 在学习了epwm 和adc 模块之后,自己想做个实验,但是不知道思路对不对?麻烦大家指导下。  我想通过Epwmx A 的soc 触发ADC 中断, 在中断里边进行adc 采样 和PI 调节占空比,然后通过示波器观察输出的pwm 波的占空比是否有变化, 不知道这样可行吗? ( 另外,我把采样的电压作为反馈电压和参考值对比,得到误差Err . )   因为没有实际的系统,所以我的pi 参数随便给了个值, 做这个实验目的只是为了把epwm  , ADC ,PI   调节纳合在一块,验证下自己的想法和掌握的情况。。 不知道自己编写程序的时序不对还是缺少什么东西, 在示波器上看不见PWM 波。    我把自己写的程序贴上来,大家帮我看看,谢谢了。。。
  • /*
  • 使用epwm6A 产生pwm波,并且触发ADC 采样 ADCA0(就是板子上外扩的那个点位器的电压)
  • */
  • #include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
  • #include "DSP2833x_Examples.h"   // DSP2833x Examples Include File
  • typedef struct
  • {
  •   float Ref ;
  •   float Fdb ;
  •   float Kp;
  •   float Ki ;
  •   float Kd;
  •   float T ;  //  此值待修改
  •   float a0 ;
  •   float a1 ;
  •   float a2 ;
  •   float Err ;
  •   float Err_1 ;
  •   float ERR_2 ;
  •   float Out ;
  •   float Out_1 ;
  •   float OutMax ;
  •   float OutMin ;
  • }PID;
  • PID epwm_info ;
  • float adc[10] ;
  • float adcresultsa0[] ;
  • float SampleVoltage ;
  • void ADC_Convert(void) ;
  • void InitEPwm6Example(void);
  • void pid_cal(PID*);
  • void sequence(float a[],int i) ;
  • interrupt void adc_isr(void);
  • #define EPWM6_TIMER_TBPRD  750 // Period register value
  • #define ADC_MODCLK 0x3 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3)   = 25.0 MHz
  • #define ADC_CKPS   0x1   // ADC module clock = HSPCLK/2*ADC_CKPS   = 25MHz/(2*1)   = 12.5MHz
返回列表