在线时间0 小时
UID155419
注册时间2008-3-28
NXP金币0
该用户从未签到
新手上路

- 积分
- 106
- 最后登录
- 1970-1-1
|
安工:
您好!
我现在用DZ60在做一个项目,遇到ADC问题,我在做Debugger调试时,单步执行,我在软件任意的地方设置断点,软件可以正常的跑,但在全速运行时,就不行了,在软件设置断点了,软件根本就停不下来,好象软件没有跑到相应的地方,请指教!软件如下:
\
#include /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
byte ad_h;//ADC转换结果的高2位
byte ad_l;//ADC转换结果的低8位
byte ch_s;//通道选择
/***************************************************************
**函数名称: Init_MCG
**功能描述:对多功能时钟发生器模块(MCG)进行初始化设计
**输 入:
**输 出:
**全局变量:
**调用模块:
***************************************************************/
void Init_MCG(void)
{
SOPT1 = 0x00;
MCGC1 = 0xBB; // 选择外部参考时钟作为总线的时钟源,使能内部参考时钟
MCGC2 = 0x36; //选择外部1M~16M高频晶振,总线分频率为1
MCGC3 = 0x00; // PLL=0即禁止PLL
//计算一下总线频率:晶振频率是16MHz,BDIV=1,MCGOUT频率为16MHz,总线频率为8MHz
while(!(MCGSC&0x02));
}
void Init_ADC(void)
{
ADCCFG=0x98; //低功耗模式,时钟为1分频,长采样时间,10位转换精度,ADCK=总线频率8M
ADCSC1=0x2C; //0b011 01100:中断NO使能,单次转换,选择AD12,并启动了转换.
ADCSC2=0x00; //0x00:软件触发,比较功能禁止
APCTL2=0x30; //通道引脚使能:ADP12,ADP13作为模拟信号输入
ch_s=0; //选择0通道
}
/*
//==========================================
//ADC转换完成中断服务程序
//==========================================
interrupt VectorNumber_Vadc void ADC_ISR(void)
{
switch(ch_s)
{
case 0:
ad_h=ADCRH;
ad_l=ADCRL;
ADCSC1=0x6D;//软件启动下一次转换,下一次转换将转换AD3通道的电压值
break;
case 1:
ad_h=ADCRH;
ad_l=ADCRL;
ADCSC1=0x6C;//软件启动下一次转换,下一次转换将转换AD2通道的电压值
break;
default:
break;
}
asm(nop);//在此设置一个断点,观测ad_h和ad_l的变化
if(ch_s==0)
{
ch_s=1;
}
else
{
ch_s=0;
}
}
*/
void main(void)
{
Init_MCG();
Init_ADC();
PTCDD_PTCDD5=1;
PTBDD_PTBDD3=1;
//EnableInterrupts; /* enable interrupts */
/* include your code here */
while(1)
{
Init_ADC();
while(ADCSC1_COCO)
{
if(ch_s==0)
{
ad_h=ADCRH;
ad_l=ADCRL;
if(ad_h>0x02)
{
PTCD_PTCD5=1;
PTBD_PTBD3=1;
}
else
{
PTCD_PTCD5=0;
PTBD_PTBD3=0;
}
ADCCFG=0x98;
ADCSC1=0x2D; //0b011 01100:中断使能,单次转换,选择AD12,并启动了转换.
ADCSC2=0x00; //0x00:软件触发,比较功能禁止
APCTL2=0x30; //通道引脚使能:ADP12,ADP13作为模拟信号输入
ch_s=1;
}
else
{
ad_h=ADCRH;
ad_l=ADCRL;
if(ad_h>0x02)
{
PTCD_PTCD5=1;
PTBD_PTBD3=1;
}
else
{
PTCD_PTCD5=0;
PTBD_PTBD3=0;
}
ADCCFG=0x98;
ADCSC1=0x2C; //0b011 01100:中断使能,单次转换,选择AD12,并启动了转换.
ADCSC2=0x00; //0x00:软件触发,比较功能禁止
APCTL2=0x30; //通道引脚使能:ADP12,ADP13作为模拟信号输入
ch_s=0;
}
}
}
//for(;;)
// {
// __RESET_WATCHDOG(); /* feeds the dog */
// } /* loop forever */
}
|
|