Board logo

标题: ECT输出比较,为什么两个单独运行可以,用三个就不可以了,是不是有8位和16位区别 [打印本页]

作者: 165198646    时间: 2009-4-5 15:44     标题: ECT输出比较,为什么两个单独运行可以,用三个就不可以了,是不是有8位和16位区别

我试过每个单独运行时都会产生625HZ左右,占空比30%左右的 PWM输出,只要屏蔽掉TC3输出,一切输出都正常,开TC3后,结果就不对了,TC3输出不是正常的波形,而单独打开TC3输出波形又没有什么问题,看程序中之间并没有相互的耦合关系,不明白什么原因,请指教~~

void Ect_init(void)
{
TIOS = 0xff;
OC7M = 0XFF;
OC7D = 0X00;
TCTL2 = 0XFc; // 设置TC1 TC2 TC3 比较产生输出高电平
TSCR2 = 0x0f; // 128 分频 ,计时器TOP值更改
TIE = 0X0E ; // 设置 TC1 TC2 TC3 中断
TC1 = 10;
TC2 = 110;
TC3 = 209;
TC7 = 65310; // 0<= TCNT <= TC7
TSCR1_TEN= 1;
}

interrupt void Enhanced_Capture_Timer_channel_1(void) //TIE0
{
unsigned int time1 ;
TFLG1_C1F=1;
time1 = TC1;

if( 1== TCTL2_OL1 )
{
time1 = time1 + 90 ; //128/24M*90秒,(500us)后输出低电平
TCTL2_OL1 = 0 ; //输出低电平
TC1 = time1;

}
else //如果当前输出低电平,则此刻输出高电平,并在一段时间后输出高电平
{
time1 = time1 + 210 ;

TCTL2_OL1 = 1 ; //输出高电平
TC1 = time1;

}

if( time1 > 64310 )
TC1 = 10 ;

}
interrupt void Enhanced_Capture_Timer_channel_2(void) //TIE0
{

unsigned int time2 ;
TFLG1_C2F=1;
time2 = TC2;
if( 1== TCTL2_OL2 )
{
time2 = time2 + 90 ; //128/24M*90秒,(500us)后输出低电平
TCTL2_OL2 = 0 ; //输出低电平
TC2 = time2;

}
else //如果当前输出低电平,则此刻输出高电平,并在一段时间后输出高电平
{
time2 = time2 + 210 ;
TCTL2_OL2 = 1 ; //输出高电平
TC2 = time2;

}
if(time2 > 65310 )
TC2 = 110 ;


}
interrupt void Enhanced_Capture_Timer_channel_3(void) //TIE0
{
unsigned int time3 ;

TFLG1_C3F = 1 ;

time3 = TC3 ;
if( 1== TCTL2_OL3 )
{

time3 = time3 + 90 ; //128/24M*90秒,(500us)后输出低电平
TCTL2_OL3 = 0 ; //输出低电平
TC3 = time3;


}
else //如果当前输出低电平,则此刻输出高电平,并在一段时间后输出高电平
{

time3 = time3 + 209 ;

TCTL2_OL3 = 1 ; //输出高电平
TC3 = time3;
}

if( time3 > 65310 )
TC3 = 209 ;

}
//


作者: JOCK    时间: 2010-5-10 16:17

是不是由于通道数增多以后,尚未来得及处理通道3的中断
作者: mcu2007    时间: 2010-5-13 11:12

楼主片子的型号?
作者: strongchen    时间: 2010-5-17 10:02

你将OCM7设置为0xFF,就是说,所有的定时器输出口要受通道7的控制,当通道7发生比较事件时,所有的输出口要变为OC7D所设置的电平。这是你的本意吗?
作者: strongchen    时间: 2010-5-17 10:07

另外,TCTL2_OLn并不直接控制通道n的电平,而是控制下一次比较事件发生时的电平变化方式。如果你要每次发生比较事件时都翻转电平,则设置为TCLT2_OMn = 0, TCLT2_OLn=1即可。同时,OCM7中相应的控制位应设为0.




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0