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

[求助]gz60 time base module 中断不工作,我的寄存器设置有问题吗?

[求助]gz60 time base module 中断不工作,我的寄存器设置有问题吗?

我是新手,我的gz60 time base module 中断不工作,LED没有动静,寄存器设置有问题吗?


看了好几天文档都没用,各位给个调试思路吧,先谢了


#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */


#define ON 0
#define OFF 1



#define LED1 PTF_PTF0
#define LED2 PTF_PTF1
#define LED3 PTF_PTF2
#define LED4 PTF_PTF3
#define LED5 PTF_PTF4
#define LED6 PTF_PTF5
#define LED7 PTF_PTF6
#define LED8 PTF_PTF7


#define  COUNT 75 /* Interrupts per sec */
unsigned char  cCounter=0x00; /* Interrupt Events Counter */



void main(void) {
 CONFIG1 = 0x0B;  
 CONFIG2 = 0x03;  


 DDRF  = 0xFF;  /* Configure PortF as Output */
 TF = 0x00;  /* Initialize PortF */
 
 TBCR  = 0x06;  


 cCounter = COUNT; /* Initialize the Counter */
 EnableInterrupts;


 TBCR_TBON=1;  /* Turn TBM on */
 while(1);  


}/* END main() */


 



interrupt 16 void TBM_ISR (void){


 TBCR_TACK=1;   /* TimeBase Interrupt Acknowledge */


 if( !(--cCounter) ){  /* If Counter is ZERO then */
    PTF = ~PTF;  /* Toggle LED */
    cCounter = COUNT;  /* Reinitialize the Counter */
 }
 
}/* END TBM_ISR() */

附件是CW08 V5.0 Project, TBM中断不工作,请斑主和高手过目呀
再发一次附件,是CW08 V5.0 Project, TBM中断不工作,请斑主和高手过目呀 http://bbs.chinaecnet.com/uploadImages/testtime.zip
// CONFIG2设置
CONFIG2=0x0d;
//CONFIG2_SCIBDSRC=1; //SCI时钟源为内部总线时钟
//CONFIG2_OSCENINSTOP=0; //STOP模式下OSC不继续工作
//CONFIG2_TBMCLKSEL=1; //定时器时钟源为内部总线时钟
//CONFIG2_MSCANEN=1; //使能MSCAN
//CONFIG2_MCLK0=0; //PTD0作为MCLK输出
//CONFIG2_MCLK1=0; //MCLK1 MCLK0
//0 0 未使用
//0 1 输出频率为时钟频率
//1 0 输出频率为时钟频率2分频
//1 1 输出频率为时钟频率4分频
//CONFIG2_MCLKSEL=0; //MCLK时钟源为总线时钟(1、晶振,0、总线)

//CONFIG1 配置
//CONFIG1 =0x4B; //禁止看门狗
CONFIG1 =0x4A; //允许看门狗
//CONFIG1_COPD=1; //禁止看门狗
//CONFIG1_COPD=0; //允许看门狗
//CONFIG1_STOP=1; //允许执行STOP指令
//CONFIG1_SSREC=0; //退出STOP的周期为32
//CONFIG1_LVI5OR3=1; //低电压复位模块电源为5V
//CONFIG1_LVIPWRD=0; //允许低电压监视
//CONFIG1_LVIRSTD=0; //STOP模式下禁止低电压复位
//CONFIG1_LVISTOP=1; //允许低电压复位
//CONFIG1_COPRS=0; //看门狗溢出周期为218-24



//定时器配置
TBCR_TBIE =1;//2 基础定时器中断使能
TBCR_TACK =1;//3 清除中断标志

TBCR_TBR0 =0;//4
TBCR_TBR1 =0;//5
TBCR_TBR2 =1;//6 分频系数8192,1.024ms

TBCR_TBIF =1;//7 中断标志
TBCR_TBON =1;//0 启动定时器

我得是可以得啊
欢迎大家到汽车电子群2838085!
让我们推动中国汽车前进!
VECTOR 17 TimerbaseInterrupt
中断向量是17吧
还是这样定义保险点
VECTOR ADDRESS 0x0000FFDC TimerInterrupt
欢迎大家到汽车电子群2838085!
让我们推动中国汽车前进!
中断工作了,谢谢zhwdy81
是我的中断向量错了,不过freescale的文档MC68HC908GZ60.pdf里面41页写

IF16
$FFDC Timebase Vector (High)
$FFDD Timebase Vector (Low)

这样应该用中断向量16还是17?
文档理解不了

再谢zhwdy81
数据手册的IFx是从IRQ开始算的,没有把SWI算进去,所以与CodeWarrior的中断号不一致。
海纳百川  有容乃大
我想请问下,这里interrupt 16 void TBM_ISR (void){



TBCR_TACK=1; /* TimeBase Interrupt Acknowledge */



if( !(--cCounter) ){ /* If Counter is ZERO then */
PTF = ~PTF; /* Toggle LED */
cCounter = COUNT; /* Reinitialize the Counter */
}

}/* END TBM_ISR() */

为什么是--cCounter取非而不是cCounter逻辑非?
返回列表