91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 8KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-26
  • 語言: C/C++
  • 標簽: DSP??spwm??C語言??

資源簡介

用DSP實現spwm的C語言程序 簡單易行

資源截圖

代碼片段和文件信息

/*
09.10.23??09.10.24?實現
嘗試發出PWM波形采用對稱規則采樣法。
三相發出的正弦波都很完美。唯一的問題是中斷函數執行了160us有點時間太長了
總共也就200us的時間。看能否想辦法再精簡程序
采用匯編則可采用角度查詢法,當然需要360°的sin值表
RC濾波器參數:0.1uF、10k??????加上窄脈沖刪除??94us
*/
#include?“SEED-DEC2407.h“

void?initial();
void?bad_trap();
unsigned?long?int?gettime();
void?look_up_sin?();

/*unsigned?int?i=0j=0l=0;
unsigned?long?int?k=0t=0N=0M=9;//M值的大小和Fc有關系,?
//Ud不變,Uc隨著Fc的改變而改變,所以M=Uc/Us值改變。
unsigned?long?int?tm1=0tm2=0tm3=0;
unsigned?int?ADAcount=0ischange=0result=0F_modu=50;*/

//?一些中間的運算變量,到時候能刪的全部刪掉
unsigned?int?Nk;??????????????//N為載波比??N=Fc/F_mode=5000/50=100
extern?unsigned?int?sintab[1801];??
unsigned?int?Temp0=0Temp1=0Temp2=0;
signed?int?Tmp0=0Tmp1=0Tmp2=0Tmp3Tmp4Tmp5;
signed?long?var1var2var3;
signed?int?sinwtcoswt;
signed?int?sinwt_csinwt_bsinwt_acoswt_a;?
??
main()
{???
N=5000/50;
????initial();?????????????????????????//系統初始化
??? while(1)
????{
*PEDATDIR=*PEDATDIR?&?0xFFF9; ???//輸出低電平
}
}?
void?initial(void)
{
?asm(“?setc?INTM“);????????????????//禁止所有可屏蔽中斷
?????asm(“?clrc?SXM“);?????????????????//抑制符號擴展。SXM=1時,數據通過定標移位器
?????//傳送到累加器時將產生符號擴展
?????asm(“?clrc?OVM“); ???????????//OVM清零累加器中結果正常溢出
?????asm(“?clrc?CNF“);?????????????????//CNF清零B0被設置為數據存儲區
?????
?*WDCR=0x68?;??????????????????????//看門狗定時控制寄存器,禁止看門狗
?????*SCSR1=0x81fe;????????????????????//系統控制及狀態寄存器1,CPU時鐘頻率設置
?????//設為40MHZ
?????//*SCSR2&=0x000e; ???//SARAM配置為內部數據MEM???
?//*XINT1CR=*XINT2CR=0x8006;???????//禁止外部中斷
?????//*WSGR=0x0000;???????????????????//設置外部存儲器的接口不插入等待狀態
??????????
?????*IFR=0xffff;??????????????????????//清所有系統中斷標志
?*IMR=0x0002;??????????????????????//開?INT2??中斷???
?*EVAIFRA=0xffff;??????????????????//清事件管理器A所有中斷標志?
?*EVAIFRB=0xffff;??????????????????//清事件管理器A所有中斷標志?
?*EVAIFRC=0xffff; ???????????????//清事件管理器A所有中斷標志?
?????*EVAIMRA=0x0200; ???????????????//T1下溢中斷??使能T1PINT?
?*EVAIMRB=0; ???????????????????//屏蔽所有中斷
?*EVAIMRC=0;???????????????????????//屏蔽所有中斷
?
?/**ADCTRL1=?0x0900; ???????????//設置連續轉換模式
?*MAXCONV?=?0x0; ???????????//每次完成轉換1個通道
?*CHSELSEQ1=0x0; ???????????????//?ADCIN0
?*ADCTRL2=?0x2000;?????????????????//啟動轉換*/?
?//IO口引腳設置
?????*MCRA=*MCRA|0x0fc0;???????????????//設置PWM1~6引腳
?????*MCRC=*MCRC?&?0xFFF9; ???//PWM7/8配置為通用輸出口,測試用
?*PEDATDIR|=0x0600;
?//PWM發生器設置(EVA)
?*ACTRA=0x0999;????????????????????//引腳PWM1、3、5低有效,PWM2、4、6高有效。
?*T1PR=4000;???????????????????????//T1周期寄存器值為4000,載波頻率為5k
?*CMPR1=4000;??????????????????????//比較器的比較值,開始時占空比初始值0%
?*CMPR2=4000;
?*CMPR3=4000;
?????*T1CNT=0;?????????????????????????//定時器1計數寄存器???
?*DBTCONA=0x08f4;??????????????????//死區周期值為8,死區預分頻系數為32,
?//死區值為7×32=224個CPU時鐘周期CPU時鐘周期為50ns,定時器周期為8×32×25ns???6.4us?
?????*COMCONA=0x8200;??????????????????//比較控制寄存器A?輸出使能,下溢重載
?????//當計數器T1CNT=0(下溢)時重載
?*T1CON=0x0842;????????????????????//定時器1控制寄存器?F=1連續增減計數方式
?????asm(“?clrc?INTM“);????????????????//開總中斷??? ?
}
void?look_up_sin?(void)
{
? switch(Temp1)
{case?0:
??asm(“?L

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????7154??2010-03-16?21:06??spwm程序\SPWM.c

?????文件??????13569??2010-03-16?21:06??spwm程序\vectors.asm

?????目錄??????????0??2010-03-25?09:42??spwm程序

-----------?---------??----------?-----??----

????????????????20723????????????????????3


評論

共有 條評論