查看: 2717|回复: 1

[其他] DZ60 ADC调试问题,SOS

[复制链接]

该用户从未签到

11

主题

56

帖子

0

新手上路

Rank: 1

积分
106
最后登录
1970-1-1
发表于 2011-9-19 11:37:49 | 显示全部楼层 |阅读模式
安工:
  您好!
   我现在用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 */
  
  
  
  
  
  
   
}
 
 
 
 

 
我知道答案 目前已有0人回答
回复

使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2011-9-19 14:55:48 | 显示全部楼层

    RE:DZ60 ADC调试问题,SOS

    //EnableInterrupts 这里把开启中断屏蔽了,就会不产生中断。把这个放开。
    该会员没有填写今日想说内容.
    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-22 00:29 , Processed in 0.086635 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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