查看: 2539|回复: 1

[其他] MC9SH16CTLR定时器问题

[复制链接]

该用户从未签到

1

主题

8

帖子

0

新手上路

Rank: 1

积分
14
最后登录
1970-1-1
发表于 2010-11-22 13:06:09 | 显示全部楼层 |阅读模式
void main(void) {
  EnableInterrupts; /* enable interrupts */
  /* include your code here */
  SOPT1 = 0x03;
  SOPT2 = 0x00;                                     
  SPMSC1 = 0x19;                                     
  SPMSC2 = 0x00;
//  SRS = 0x82;
//  ICSSC = 0x10;      
// ICSTRM  = 0x80;                                      
                
  ICSC1 = 0x3A; //0x38                  
  ICSC2 = 0xA6;//  0xa6                   
  while(!ICSSC_OSCINIT) {           
  }
 
  GNGC = 0x00;                               
 
  PTASE = 0xDF;                     
  PTBSE = 0xFF;                                     
  PTCSE = 0xFF;                                     
 
  PTADS = 0x00;                                      
  PTBDS = 0x00;                                     
  PTCDS = 0x00;                                     
 
  PTAPE = 0x8F;                       
  PTADD = 0x40;
  PTBPE = 0x02;                     
  PTBDD = 0x3D;
  PTCPE = 0x00;
  PTCDD = 0xBF;
                     
 
 //AD使能,选择AD端口
 
  APCTL1 = 0x00;
  APCTL2 = 0x40;                              
  ADCCFG = 0x08;//用的输入时钟
                                       
  ADCCVL = 0x00;
  ADCCVH = 0x00;                          
  ADCSC2 = 0x00;                                     
  ADCSC1 = 0x4E; //AD14输入端口,控制中断使能                                    
 
 //定时器624uS
//  MTIMSC=0x10;
//  MTIMMOD = 0x9B;//                                     
//  MTIMCLK = 0x04;                                     
//  (void)(MTIMSC == 0);          
 // MTIMSC = 0x60;
 
// 定时器624uS
 TPM1SC=0X00;
 TPM1C0SC=0X50;
 TPM1CNTH=0X00;
 TPM1SC=0X08;
 
 
                     
  asm CLI;
 
  for(;;) {
 //   __RESET_WATCHDOG(); /* feeds the dog */
    if(AD_flag==1){
      AD_flag=0;
      rms_cur=sqrtf(AD_sp)*modulus;
      AD_sp=0;
      if(rms_cur*1.5386>=act_key_cur)
      {
        time_flag=1;
        if(rms_t*1.25/1000>=act_key_t)
        {
          time_flag=0;
 //         TK_sign=1;
 //         BJ_sign=1;
        }
  //       TK_sign=0;
 //        BJ_sign=0;  
      }
  //    TK_sign=0;
  //    BJ_sign=0;  
    }
   
  } /* loop forever */
  /* please make sure that you never leave main */
}
/**/ //VectorNumber_Vtpm1ch0
void interrupt 26 tpm1ch0Isr(void)

  ADCSC1 = 0x4E;
 // MTIMSC = 0x80;
  Time100++;
  Time500++;
  TK_sign=~TK_sign;
  if(Time100==100)
   {
      Time100=0;
      test_key();
  }
  if(Time500==500)
   {
      Time500=0;
      dial_code();
  }
  if(time_flag==1)
 { 
  rms_t+=625;
 }
}
由于定时器不能控制,设定时间为625uS,但是实际时间在160uS左右。非常奇怪
我知道答案 目前已有0人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-11-22 16:42:19 | 显示全部楼层

    RE:MC9SH16CTLR定时器问题

    1、确定时钟总线频率
    2、确定定时器时钟频率
    该会员没有填写今日想说内容.
    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 03:32 , Processed in 0.083608 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表