首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于GZ32的输出比较功能?

关于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 */
}

清CH0F之前要先读一下T1SC0。
另外,翻转PTD4和延时的动作最好不要在中断之内做。
海纳百川  有容乃大
PTD4只是作为一个debug的指示用的口,来用,
另外我使用Timer的输出比较的软件比较功能,同时将定时器的溢出中断和输出比较中断打开,在中断中设置同一个IO口,实现一个PWM信号的输出,可以实现。在清除比较中断标志的时候,同上,并没有发现不能的现象。
T1CH0 = T1CNT+0x0EA6;
将这一句改成 高低八位来操作试试看呢,并且读取高八和低八顺序是有讲究得
T1CNTH,T1CNTL
欢迎大家到汽车电子群2838085!
让我们推动中国汽车前进!
返回列表