找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2500|回复: 0
收起左侧

[求助求助求助]C8051F040---请教关于PWM填充

[复制链接]
ID:87949 发表于 2015-8-8 21:29 | 显示全部楼层 |阅读模式
本帖最后由 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;
}


11.jpg 22.jpg 33.jpg

本来希望得到的是第三张图一样的波形,没有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 共享资料的积分奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表