I want used CC2530 timer4 generator pwm signal,Now ,Normal frequency,but by changing the T4CC1 unable to change the duty cycle.the pwm output is P2.0 .
void pwm_timer4_init(void)
{
P2SEL &=~0X01; //P2.0默认为普通端口 PERCFG |= 0x10; P2SEL |= 0X01;
P2DIR |= 0X01; //p2.0输出 P2INP &=~0X00; T4CNT = 0X00; //initial value
T4CTL |= 0x04; //clear timer3
T4CTL |=0XE6; T4CCTL0 = 0x1C;}
void pwm_timer4_send(void)
{
T4CC0 = 0xFA; //overflow value
T4CC1 = 0X5A; T4CTL |= 0x10; //start timer3
}
aniy liu:
怎么就没有人回答啊,请TI的工程师帮忙解决,现在项目上使用遇到的问题,谢谢!
VV:
P2SEL (0xF5) – Port 2 Function Select and Port 1 Peripheral Priority Control
这个寄存器上面的PRI1P1也需要设置priority
aniy liu:
回复 VV:
void pwm_timer4_init(void){ P2SEL &=~0X01; //P2.0默认为普通端口 PERCFG |= 0x10; //优先级设置 P2SEL |= 0X01; //使用第二功能 P2DIR |= 0X01; //p2.0输出 P2INP &=~0X00; //设置上拉,功能 T4CNT = 0X00; //initial value T4CTL |= 0x04; //clear timer3 T4CTL |= 0XE6; //module mode 128分频 T4CCTL0 = 0x1C; //通道0 P2SEL |= 0X10;}void pwm_timer4_send(uint8 data){ T4CC0 = 0xFA; //overflow value T4CC1 = 0X3A; T4CTL |= 0x10; //start timer3}
经过修改后还是现象相同,通过修改T4CC1值占空比仍然保持为0.4%左右,能帮我看看是哪个寄存器设置不对么?
谢谢!
VV:
回复 aniy liu:
PWM波输出应该配置成Peripheral I/O
aniy liu:
回复 VV:
我已经进行了设置,现在是频率输出是正确的,只是通过修改TCC0的值没法改变占空比。
PERCFG |= 0x10; //优先级设置
P2SEL |= 0X01; //使用第二功能
aniy liu:
回复 VV:
没有能帮忙解决的方案么,请帮忙解决此问题,谢谢!
aniy liu:
回复 aniy liu:
请TI的工程师帮忙解决,好像这个定时器4用的人太少了,资料不是太多,请帮助解决一下,谢谢!
VV:
回复 aniy liu:
PERCFG |= 0x10;//设置Timer4 alternative 2
P2SEL ~= 0x01;//设置P2_0 为a peripheral output
T3CC0 = 0xFA;
T3CC1 = 0x5A; T3CCTL0 = 0x1c;T3CTL |= 0xE7; // divide with 128 and to do up-down mode
T3CTL |= 0x40;//start
aniy liu:
回复 VV:
P2SEL ~= 0x01;//设置P2_0 为a peripheral output
此句是否有误,我需要的是tomer4,看上面的配置应该都是timer3的,timer3的操作我已经调试完成,现在只是timer4无法改变占空比。
谢谢!
VV:
回复 aniy liu:
timer3和timer4是两个一样的定时器,你是不是有IO复用,或其他地方有设置没注意到。