欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3363|回復: 0
打印 上一主題 下一主題
收起左側

[求助求助求助]C8051F040---請教關于PWM填充

[復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 5695585 于 2015-8-8 23:33 編輯

寫這個程序的目的是準備給無刷直流電機提供驅動信號
需要的是給一個低頻方波信號里面填充較高頻率的PWM波
思路是設置好PCA的寄存器,包括PWM的占空比和頻率
然后用定時器0來控制CR,即PCA0CN 寄存器的第6位,周期性的使能和禁止PWM輸出,實現PWM的填充
產生類似調制波一樣的波形

大概程序如下:
void PCA0_Init (void)
{
   char SFRPAGE_save = SFRPAGE;        // Save current SFR Page

   SFRPAGE = PCA0_PAGE;
   // configure PCA time base; overflow interrupt disabled
   PCA0CN = 0x00;                      // Stop counter; clear all flags
   PCA0MD = 0x00;                      // Use SYSCLK as time base

   PCA0CPM0 = 0x42;                    // Module 0 = 8-bit PWM mode

   // Configure initial PWM duty cycle = 50%
   PCA0CPH0 = 256 - (256 * 0.2);

   // Start PCA counter
   CR = 1;
   SFRPAGE = SFRPAGE_save;
}

void Timer_Init()
{
        char SFRPAGE_SAVE = SFRPAGE;
        SFRPAGE   = TIMER01_PAGE;
        TMOD      = 0x01;
        TH0       = 0xF4;
        TL0       = 0x00;
        EA=1;                                                //總中斷開
        TR0=1;                                                //定時方式
        ET0=1;
        SFRPAGE = SFRPAGE_SAVE;
}

void Timer0_ISR(void) interrupt 1
{
           char SFRPAGE_SAVE = SFRPAGE;
        SFRPAGE = TIMER01_PAGE;
        TH0       = 0xF4;
        TL0       = 0x00;
        SFRPAGE = PCA0_PAGE;        
        CR = ~CR;

        SFRPAGE = SFRPAGE_SAVE;
}




本來希望得到的是第三張圖一樣的波形,沒有PWM的部分為低電平
但是輸出在圖1和圖3之間不斷的跳變,有時沒有PWM的部分為高,有時為低,感覺不受控
請問這個問題出在哪兒
我試過在中斷里直接 CR = 0 ,輸出是恒低的
非常感謝




試過在CR = 0的時候控制P0.0輸出低電平
void Timer0_ISR(void) interrupt 1
{
           char SFRPAGE_SAVE = SFRPAGE;
        SFRPAGE = TIMER01_PAGE;
        TH0       = 0xF4;
        TL0       = 0x00;
        SFRPAGE = PCA0_PAGE;        
        CR = ~CR;

        
        if(CR == 0)
        {
                SFRPAGE = CONFIG_PAGE;
                XBR0 = 0x00;                P0MDOUT = 0xFF;
                P0 &= 0xFE;

                XBR0 = 0x08;
        }

        SFRPAGE = SFRPAGE_SAVE;
}
但一點用都沒有


請教各位問題出在哪兒
非常感謝




評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表