Board logo

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

作者: qiudelu    时间: 2006-4-19 22:10     标题: [求助]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() */


作者: qiudelu    时间: 2006-4-19 23:29

附件是CW08 V5.0 Project, TBM中断不工作,请斑主和高手过目呀
作者: qiudelu    时间: 2006-4-20 08:44

再发一次附件,是CW08 V5.0 Project, TBM中断不工作,请斑主和高手过目呀 http://bbs.eccn.com/uploadImages/testtime.zip
作者: zhwdy81    时间: 2006-4-20 10:04

// 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 启动定时器

我得是可以得啊
作者: zhwdy81    时间: 2006-4-20 10:06

VECTOR 17 TimerbaseInterrupt
中断向量是17吧
还是这样定义保险点
VECTOR ADDRESS 0x0000FFDC TimerInterrupt
作者: qiudelu    时间: 2006-4-20 10:59

中断工作了,谢谢zhwdy81
是我的中断向量错了,不过freescale的文档MC68HC908GZ60.pdf里面41页写

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

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

再谢zhwdy81
作者: strongchen    时间: 2006-4-20 17:09

数据手册的IFx是从IRQ开始算的,没有把SWI算进去,所以与CodeWarrior的中断号不一致。
作者: tianandy    时间: 2006-8-15 16:02

我想请问下,这里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逻辑非?




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