qingyin2009 发表于 2015-10-24 09:34:45

最近调试HCS12出现几个问题,关于AD和DEBUG的

最近调试HCS12 出现几个问题:
1.DEBUG时,打开regester后,AD采集会停止,不再恢复,寄存器数值未改变,只是AD停了。
2.单片机运行过程中,突然死机,如果在DEBUG,点击STOP,再运行正常。
3.有一次代码无法正常运行,后来同事说加无用代码就可以了,据说是单片机某处FLASH不可写,必须加空代码掠过,求证

FSL_TICS_Robin 发表于 2015-10-26 09:42:08

16bit MCU的问题,建议在飞思卡尔官方论坛的S12 / MagniV Microcontrollers版块发帖提问,用英文简单描述一下你的问题就会有人回复了。
如果你们公司有专门的FAE提供技术支持,也可以问一下他们。

qingyin2009 发表于 2015-10-27 11:45:20

FSL_TICS_Robin 发表于 2015-10-26 09:42
16bit MCU的问题,建议在飞思卡尔官方论坛的S12 / MagniV Microcontrollers版块发帖提问,用英文简单描述一 ...

发帖了,没人回答。我看好多都是过了好多天也没任何回复的。

AD部分代码大概如下,仿真的时候,进入MCUregester,AD转换就停止

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */


voidAutoEle_InitPLL (void)
{
        CLKSEL &= ~(0x80);                 //Select OSCCLK as MCU clock
        REFDV = 0xC0;                         //FREF = Fosc / (REFDIV +1), FEFFRQ=11, REFDIV=0
        SYNR = 0xC2;                         //FVCO = 2 * Fref * (SYNR + 1)
        POSTDIV = 0;        //FPLL = FVCO / (2 * POSTDIV)

        while (!CRGFLG_LOCK) ;         // Wait unitl PLL locked

        CLKSEL |= 0x80;                 //Select PLLCLK as MCU clock
}

/************************************************************************
*FUNCTION NAME:AutoEle_EP100_ADInit
*功能: 初始化AD模块
*参数:void
*返回值void
************************************************************************/
void AutoEle_EP100_ADInit(void)
{
        /* AD0   AN0-AN15 */
        ATD0CTL0 = 15;                                 //回环通道
        ATD0CTL1 = 0x2F;                                 //外部触发源,10位分辨率
        ATD0CTL2 = 0x40;                                //CCF位快速清除,及中断使能配置
        ATD0CTL3 = 0x80 | (0 << 3);         //右对齐,转换序列长度为3,非FIFO模式
        ATD0CTL4 = 0x57;                         //采样时间8AD时钟周期,总线时钟分频 Fad= Fbus/(2*(Prs + 1)) 1M ,
        ATD0CMPE = 0x0;                                 //比较功能关闭2bytes
        ATD0DIEN = 0x0;                                 //Disable digital input buffer to ANx pin 2bytes

        ATD0CTL5 = 0x10;

        /* AD1 AN16-AN23 */
        ATD1CTL0 = 7;                                       //回环通道
        ATD1CTL1 = 0x2F;                                 //外部触发源,10位分辨率
        ATD1CTL2 = 0x40;
        ATD1CTL3 = 0x80 | (8 << 3);         //右对齐,转换序列长度为3,非FIFO模式
        ATD1CTL4 = 0x57;                         //采样时间8AD时钟周期,总线时钟分频 Fad= Fbus/(2*(Prs + 1)) 1M ,
        ATD1CMPE = 0x0;                                 //比较功能关闭2bytes
        ATD1DIEN = 0x18;                                 //Disable digital input buffer to ANx pin 2bytes

        ATD1CTL5 = 0x10;
}

void main(void)
{
/* put your own code here */
    AutoEle_EP100_ADInit();
    AutoEle_EP100_ADInit();
   
   
    EnableInterrupts;


    for(;;)
    {
      if ((ATD0STAT0_SCF == 0) || (ATD1STAT0_SCF == 0))
            {
           
            }
            else
            {
              ATD0CTL5 = 0x10;                                                 //启动转换
              ATD1CTL5 = 0x10;                                                 //启动转换
            }
      
      _FEED_COP(); /* feeds the dog */
    } /* loop forever */
    /* please make sure that you never leave main */
}
页: [1]
查看完整版本: 最近调试HCS12出现几个问题,关于AD和DEBUG的