Board logo

标题: 关于GZ32的输出比较功能? [打印本页]

作者: plutus00    时间: 2006-3-28 08:51     标题: 关于GZ32的输出比较功能?

我使用GZ32进行输出比较的软件编程,想通过他的输出比较(不控制他的IO口,仅仅是软件比较功能),来实现10ms的定时终端,在中断中实时的改变比较计数器的比较值,但是调试结果显示,只进入了一次终端,改变了一个比较计数器的值,就再也不进中断了,不知道有没有人遇到国这种情况?请给予指点,下面是定时器初始化的程序和中断程序。
#pragma TRAP_PROC
void Timer1CH0_INT(void)
{     
 /* Set Timer flag with 10ms  */
 Timer10msFlag =1;


 T1CH0 = T1CNT+0x0EA6; 


  T1SC0_CH0F = 0; 
  
  // debug flag
  TD_PTD4 = 1;
  
  Dly(100);
  
  TD_PTD4 = 0; 
}
void Timer1CH0_Init( void )
{
    T1SC_TSTOP=1;            /* TSTOP=1 for stop Timer 1 */


    T1SC_TRST=1;            /* reset register */


    T1SC_PS=4;              /* PS=4 */
   
    T1MOD = 0xFFFF;           /* set modoul number */


    T1SC_TOIE=1;                /* Disable Timer 1 overflow interrupt */
 
 T1SC0_MS0A = 1;
 T1SC0_MS0B = 0;
 T1SC0_ELS0A = 0;
 T1SC0_ELS0B = 0;
 
 T1SC0_TOV0 = 0;
 T1SC0_CH0MAX = 0;
 T1SC0_CH0F = 0;  
 
 T1CH0 =  0x0EA6; 
 
 T1SC0_CH0IE = 1;
  
    T1SC_TSTOP=0;            /* TSTOP=0 for start Timer 1 */
}


作者: strongchen    时间: 2006-3-28 10:36

清CH0F之前要先读一下T1SC0。
另外,翻转PTD4和延时的动作最好不要在中断之内做。
作者: plutus00    时间: 2006-3-29 08:41

PTD4只是作为一个debug的指示用的口,来用,
另外我使用Timer的输出比较的软件比较功能,同时将定时器的溢出中断和输出比较中断打开,在中断中设置同一个IO口,实现一个PWM信号的输出,可以实现。在清除比较中断标志的时候,同上,并没有发现不能的现象。
作者: zhwdy81    时间: 2006-3-31 16:05

T1CH0 = T1CNT+0x0EA6;
将这一句改成 高低八位来操作试试看呢,并且读取高八和低八顺序是有讲究得
T1CNTH,T1CNTL




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