数据载入中...
 
     
 
数据载入中...
时 间 记 忆
数据载入中...
最 新 评 论
数据载入中...
专 题 分 类
数据载入中...
最 新 日 志
数据载入中...
最 新 留 言
数据载入中...
搜 索
用 户 登 录
数据载入中...
友 情 连 接
博 客 信 息
数据载入中...


 
 
数据载入中...
   
 
 
SPWM波生成实验
[ 2008-5-28 16:59:00 | By: chenshaocheng ]
 

嘉哥,如果你懂DSP,帮我看一看下面这段程序(SPWM波生成实验代码).谢谢!
#i nclude  "math.h"
#i nclude    "f2407_c.h"
#define PI   3.1415926
extern void ini(void);        
extern interrupt void timer2_isr(void);
void delay5s(void);
float sin_table[33]={0,0.189,0.371,0.541,0.690,0.815,0.909,0.972,0.98,
        0.972,0.909,0.815,0.690,0.541,0.371,0.189,0,
        -0.189,-0.371,-0.541,-0.690,-0.815,-0.909,-0.972,-0.98,
        -0.972,-0.909,-0.815,-0.690,-0.541,-0.371,-0.189,0};
unsigned int index_pwm=0;   
unsigned int a,b,c=0;
float timer2_per=200;
unsigned int num_f_d=33;          
float f;       
unsigned int d;

void main(void)
{
   unsigned int i,j;
   ini();

   asm(" CLRC INTM");--开总中断
  
  
   for(i=0;i<10;i++)                       
   delay5s();
   delay5s();
   delay5s();
   delay5s();
   delay5s();
      *IMR |= 0x0001;
 
   for(;;)delay5s();;
}

void delay5s(void)
{
 unsigned long i;

  for(i=0;i<5000;i++);
}
void ini(void)
{
 unsigned int e;
    *SCSR1 = 0x00FD;
    *SCSR2 = (*SCSR2 | 0x000B) & 0x000F;
    *WDCR  = 0x00E8;
    WSGR = 0x0040;
    *MCRA = 0x0fc0;                  
    *MCRB = 0xFE00;                  
    *MCRC = 0x0000;                   
    *PFDATDIR = *PFDATDIR | 0x2000;
    *T1CON = 0x0000;                  
    *T2CON = 0x0000;                   
    *GPTCONA = 0x0080;                
    *T1CNT = 0x0000;                  
    *T1PR =32*timer2_per;
    d=*T1PR;           
    *DBTCONA = 0xff3;                
    *ACTRA = 0x0666;                      
    *COMCONA = 0x8200;              
    *T1CON = 0x0840;                
    *DBTCONA=0xff3;                                                                                                                                                                                    
    *T2CNT = 0x0000;                  
    *T2PR = timer2_per;               
    *T2CON = 0xD640;                 
    *IMR = 0x0000;                   
    *IFR = 0x003F;                
    *IMR = 0x0004;                  
    *EVAIFRA = 0xFFFF;                
    *EVAIFRB = 0xFFFF;               
    *EVAIFRC = 0xFFFF;                 
    *EVAIMRA = 0x0000;                
    *EVAIMRB = 0x0001;                
    *EVAIMRC = 0x0000;                 
    *EVBIFRA = 0xFFFF;                
    *EVBIFRB = 0xFFFF;               
    *EVBIFRC = 0xFFFF;                
    *EVBIMRA = 0x0000;                
    *EVBIMRB = 0x0000;                
    *EVBIMRC = 0x0000;                 
}
   
    interrupt void timer2_isr(void)
{
      *EVAIFRB = *EVAIFRB & 0x0001;    
     f=0.2+156.0/timer2_per;
  if(f>0.98)
  f=0.98;
     a=*CMPR1=f*d*(0.5+0.5*sin_table[index_pwm%num_f_d]);
  b=*CMPR2=f*d*(0.5+0.5*sin_table[(index_pwm+((2*num_f_d)/3))%num_f_d]);
  c=*CMPR3=f*d*(0.5+0.5*sin_table[(index_pwm+((num_f_d)/3))%num_f_d]);
     index_pwm++;
 if(index_pwm>=num_f_d)index_pwm=0;
 
}

 
 
  • 标签:DSP 
  •  
    Re:SPWM波生成实验
    [ 2008-5-28 17:53:01 | By: cocoguojia ]
     
    cocoguojia我不会dsp,我推荐你的文章一下,希望会的人帮你。
     
     
    发表评论:
    数据载入中...
     
         
       
         
    Powered by McuBLog.