2298|0

26

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

【R7F0C809】做一个PWM控制器(开环) [复制链接]

首先用C809做一个开环的PWM控制器:
做法参考

配置过程如下:
void TAU0_ini(void)
{
    TMMK00=1;                                           /*enable TAU channel0 interrupt*/
    TMMK01=1;                                           /*enable TAU channel1 interrupt*/

    TMIF00 = 0;                                         /*clear TAU channel01 interrupt*/
    TMIF01 = 0;                                         /*clear TAU channel01 interrupt*/

    TMPR000 = 1;                                        /*Set INTTM01 as the lowest priority*/
    TMPR100 = 1;

    TMPR001 = 1;                                        /*Set INTTM01 as the lowest priority*/
    TMPR101 = 1;


    TAU0EN = 1;                                         /*Clock input supply*/
//    TPS0 = 0x66;                                        /*Clock frequency is fCLK(313kHz) for CK00 & CK01*///66
    TPS0 = 0x00;

    /*TAU0 channel00 set*/
    TMR00H = 0x00;       //00                               /*0---CK00 is fMCK*/
    TMR00L = 0x00;                                      /*00*/
                                                        /*0----fMCK*/
                                                        /*0----master channel*/
                                                        /*000--select only software start*/
                                                        /*00---Sets 00 because these are not used*/
                                                        /*00*/
                                                        /*000--interval timer*/
                                                        /*0----Neither INTTM00 nor invert timer output*/


    /*TAU0 channel01 set*/
    TMR01H = 0x04;                                      /*0---CK00 is fMCK*/
    TMR01L = 0x08;                                      /*00*/
                                                        /*0----fMCK*/
                                                        /*0----slave channel*/
                                                        /*100--selects INTTM00 of master channel*/
                                                        /*00---Sets 00 because these are not used*/
                                                        /*00*/
                                                        /*100--One-count mode*/
                                                        /*0----Neither INTTM00 nor invert timer output*/


    TOM0 =0x02;                                         /*channel0 is used as master channel output for channel1*/
                                                        /*channel1 slave channel output*/
}



其次写一个占空比控制函数。周期固定,采用宏定义。
#define period_motor 0x0FFF

void TAU00_TAU01_PWM_setting(uint16_t PWM_duty)    /*set the value of TDR0 and TDR1 for motor1*/
{
    uint16_t dead_area_time;
//    dead_area_time = period_motor / 100 * 70;         /*duty cycle is set as 70%*/
    dead_area_time = period_motor / 1000 *PWM_duty;    /*duty cyde sets as PWM_duty‰*/
    TDR00H = (uint8_t)(period_motor >> 8);
    TDR00L = (uint8_t)period_motor;

    TDR01H = (uint8_t)(dead_area_time >> 8);                                       
    TDR01L = (uint8_t)dead_area_time;
}


设置中断:
__interrupt void Interrupt_INTTM00(void)    /*Stepper motor commutation operation*/
{
        P0 = 0x00;
}

__interrupt void Interrupt_INTTM01(void)    /*Stepper motor commutation operation*/
{
        P0 = 0x02;
}


完成开环PWM控制。

接下来提出一些我的困惑:C809没有RTO,是否有更加方便的办法输出PWM信号。欢迎各位高手指点
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表