AC6901A PWM输出

一、关于PWM波形全IO口映射的几种情况

  • AC6901A有四路多功能定时器 每一个定时器都能输出PWM波,由于timer0被系统占用,如果不使用timer2对红外进行解码的话,还有三路PWM波,否则只有2路。

  • 这四路定时器输出的PWM可以通过outputchannel映射到任意IO口,只需要对应的IO口设置成输出,开上下拉即可。

  • 排除系统定时器timer1,不适用红外功能下,如果其他三路全开的话,分为以下几种情况。
    在这里插入图片描述在这里插入图片描述

  • 1、同时开定时器1和定时器2输出PWM波

端口输出的PWM波来源DIE(BIT)
定时器10
定时器21
  • 2、同时开定时器1和定时器3输出PWM波
端口输出的PWM波来源DIE(BIT)
定时器10
定时器31
  • 3、同时开定时器2和定时器3输出PWM波
端口输出的PWM波来源DIE(BIT)
失效
定时器31

该种情况下PWM2只能通过固定IO口输出,输出到PB3。或者让PWM2映射到任意IO口,PWM3通过固定IO口输出,但是PWM3在AC6901A上没有固定的IO口,一般我们让PWM3映射到任意IO口。
在这里插入图片描述

  • 4、同时开定时器1、定时器2定时器3输出PWM波
端口输出的PWM波来源DIE(BIT)
定时器10
定时器31

该种情况下PWM2只能通过IO口输出,寄输出到PB3

二、PWM初始化代码

static void set_timer1_pwm(u32 fre,u8 duty)  //50%
{
    SFR(JL_IOMAP->CON1,8,3,3);
    JL_TIMER1->CON = 0x0000;
    JL_TIMER1->PRD = OSC_Hz/(4*fre);
    JL_TIMER1->PWM = (JL_TIMER1->PRD*duty)/100;
    JL_TIMER1->CON = (1<<4) | (1<<8)| (1<<0) |(2<<2);

    JL_PORTA->PU |= BIT(9);
    JL_PORTA->PD |= BIT(9);
    JL_PORTA->DIR &= ~BIT(9);
    JL_PORTA->OUT &= ~BIT(9);
    JL_PORTA->DIE &= ~BIT(9);

}

static void set_timer2_pwm(u32 fre,u8 duty)  //80%
{
    SFR(JL_IOMAP->CON1,11,3,2);
    JL_TIMER2->CON = 0x0000;
    JL_TIMER2->PRD = OSC_Hz/(4*fre);
    JL_TIMER2->PWM = (JL_TIMER2->PRD*duty)/100;
    JL_TIMER2->CON = (1<<4) | (1<<8)| (1<<0) |(2<<2);

    JL_PORTA->PU |=  BIT(3);
    JL_PORTA->PD |=  BIT(3);
    JL_PORTA->DIR &= ~BIT(3);
    JL_PORTA->OUT |= BIT(3);
    JL_PORTA->DIE |= BIT(3);

}

static void set_timer3_pwm(u32 fre,u8 duty)  //20%
{
    SFR(JL_IOMAP->CON1,11,3,3);
    JL_TIMER3->CON = 0x0000;
    JL_TIMER3->PRD = OSC_Hz/(4*fre);
    JL_TIMER3->PWM = (JL_TIMER3->PRD*duty)/100;
    JL_TIMER3->CON = (1<<4) | (1<<8)| (1<<0) |(2<<2);

    JL_PORTA->PU |=  BIT(2);
    JL_PORTA->PD |=  BIT(2);
    JL_PORTA->DIR &= ~BIT(2);
    JL_PORTA->OUT &= ~BIT(2);
    JL_PORTA->DIE |= BIT(2);
}
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值