标题: [求助]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 |