Re: [問題] 利用DSP2407開發版寫SPWM調變訊號
看不太懂你在幹嘛
不過你是不是沒有用中斷來寫
你三相 程式碼的for迴圈裡面 有三行成式
兩相的程式碼 for迴圈 裡面只有兩行程式
所以實際上他跑的速度不一樣
不廢話
for(i=0;i<360;i++)
{
CMPR1=sine_table[i]+20;
CMPR2=sine_table[i+180]+20;
nop;
nop;
}
多加幾個nop 可以把頻率調成一樣(執行一行nop;的時間 等於一個cpu週期)
※ 引述《shineboss (小E)》之銘言:
: 各位大大我在利用DSP撰寫spwm調變訊號遇到一些問題
: 我選用的載波頻率為21.6kHz 等於每一個角度開出一個脈波
: 而DSP設置CPUCLK為40000000(40MHz)
: 所以切換頻率為PERIOD 925(40000000/2/21600=925)
: 用過DSP2407也知道因為選擇上下數所以要設置載波頻率的兩倍
: 我再來是先建立一組SINE TABLE表總共600比其中第0~360比為第一相的spwm
: 第120~480比為第二相的spwm
: 第240~600比為第三組的spwm
: 在利用FOR迴圈去抓這些data則我for迴圈寫法為
: for(i=0;i<364;i++)
: {
: CMPR1=sine_table[i]*ma+20;
: CMPR2=sine_table[i+120]*ma+20;
: CMPR3=sine_table[i+240]*ma+20;
: }
: 其中20為我設置deadtime為1us所以必須把此段時間考慮進去
: 結果是成功的輸出60Hz三相弦波。
: 但是我利用相同方式建立一組單相spwm table表總共540比其中
: 第0~360比為an的spwm
: 第180~540比bn的spwm
: 在利用FOR迴圈去抓這些data則我for迴圈寫法為
: for迴圈寫法為
: for(i=0;i<360;i++)
: {
: CMPR1=sine_table[i]+20;
: CMPR2=sine_table[i+180]+20;
: }
: 結果我出來的弦波為137Hz不清楚是哪邊錯了,希望大大能幫我看一下
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.84.179.231
→
09/28 20:44, , 1F
09/28 20:44, 1F
推
09/28 21:55, , 2F
09/28 21:55, 2F
→
09/28 22:20, , 3F
09/28 22:20, 3F
推
09/29 17:56, , 4F
09/29 17:56, 4F
→
09/29 17:56, , 5F
09/29 17:56, 5F
→
09/29 17:57, , 6F
09/29 17:57, 6F
→
09/29 17:57, , 7F
09/29 17:57, 7F
→
09/29 17:58, , 8F
09/29 17:58, 8F
→
09/29 17:58, , 9F
09/29 17:58, 9F
→
09/29 22:49, , 10F
09/29 22:49, 10F
→
08/13 19:04, , 11F
08/13 19:04, 11F
→
09/17 22:58, , 12F
09/17 22:58, 12F
→
11/11 15:58, , 13F
11/11 15:58, 13F
→
01/04 22:13,
5年前
, 14F
01/04 22:13, 14F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):