发新帖我要提问
12
返回列表
打印
[M051]

m0516上很奇怪的问题

[复制链接]
楼主: 联众菜鸟
手机看帖
扫描二维码
随时随地手机跟帖
21
lvyunhua| | 2015-2-14 17:09 | 只看该作者 回帖奖励 |倒序浏览
sy(10)这个函数可以看下 吗?

使用特权

评论回复
22
lvyunhua| | 2015-2-14 17:15 | 只看该作者
你这个UC设定值一直在变化哦。一直在 变小。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
联众菜鸟 + 2 很给力!
23
联众菜鸟|  楼主 | 2015-2-14 20:26 | 只看该作者
lvyunhua 发表于 2015-2-14 17:09
sy(10)这个函数可以看下 吗?

uint32_t sy(uint32_t times)
{
                uint32_t avr=0,x=0;
                x=times;
                while(x)
                                {
                                set_ADST;  
                                while(ADSR&ADF==0);
                                set_ADF;
                                avr+=(ADDR0 & 0x00000FFF);
                                x--;
                                }
                                avr=avr/times;
                return avr;
}

使用特权

评论回复
24
联众菜鸟|  楼主 | 2015-2-14 20:29 | 只看该作者
lvyunhua 发表于 2015-2-14 17:15
你这个UC设定值一直在变化哦。一直在 变小。

是的,没错,异常情况是ad电压超出设定上限后根本就没有跑到降低ad的指令那里,有可能是程序跑飞了吗?

使用特权

评论回复
25
lvyunhua| | 2015-2-14 21:07 | 只看该作者
芯片初始化函数都没有看见,M0516有没有工作,有没有开启看门狗

使用特权

评论回复
26
联众菜鸟|  楼主 | 2015-2-14 21:38 | 只看该作者
lvyunhua 发表于 2015-2-14 21:07
芯片初始化函数都没有看见,M0516有没有工作,有没有开启看门狗

开门狗没开,m0516应该工作了,按键按下后电路开始工作,ad开始升高,奇怪之处就是仅仅改变x的值就工作异常了.

main(void)
{
        uint32_t  k=3690,uc=0,back=0xff,ks=0xff,x=0;
       
       
    Un_Lock_Reg();

    PWRCON |= XTL12M_EN;
        while((CLKSTATUS & XTL12M_STB) == 0);                 //Wait until 12M clock is stable.       
       
        CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M;        //Set external crystal as the system clock

        if(ADC_CLK_Source==0x00000004 )
    {
        PLLCON |= PLL_SEL;
        PLL_Enable();

        /* Wait until PLL is stable. */
                while((CLKSTATUS & PLL_STB) == 0);  
        }   

    Timer0_Init();
            
    /* Reset ADC */   
    set_ADC_RST;
    clr_ADC_RST;

        /* ADC engine clock enable */      
    set_ADEN_CLK;
    if (ADC_CLK_Source==0x00000000 )
    {
        ADCClkSource_ex12MHZ;
    }
    else if(ADC_CLK_Source==0x00000004 )
    {
        ADCClkSource_PLL;
    }
    else if(ADC_CLK_Source==0x00000008 )
    {
        ADCClkSource_int22MHZ;
    }

    /* Set ADC divisor */
    CLKDIV=ADC_CLOCK_DIVIDER;   
    /* ADC enable */
    set_ADEN;

    set_CALEN;                                //Self Calibration Enable
        while(!(ADCALR&CALDONE));
                /* Single-Cycle scan mode */
                setAD_SIGSCAN;                                          
                /* Single end input */
                clr_DIFFEN;
                /* Set the ADC channel */
                set_CHEN0;
                set_CHEN1;
                                                                set_CHEN2;
                set_CHEN3;
                                                                set_CHEN4;
                set_CHEN5;
                                                                set_CHEN6;
                set_CHEN7;
                /* Configure P1.0,P1.1 as analog input pin */
                set_ADC0_channel;
                set_ADC1_channel;
                                                                set_ADC2_channel;
                set_ADC3_channel;
                                                                set_ADC4_channel;
                set_ADC5_channel;
                                                                set_ADC6_channel;
                set_ADC7_channel;
                                /* Disable P1.0, P1.1 digital input path */
                                                                P1_OFFD |= OFFD0;
                                                                P1_OFFD |= OFFD1;
                                                                P1_OFFD |= OFFD2;
                                                                P1_OFFD |= OFFD3;
                                                                P1_OFFD |= OFFD4;
                                                                P1_OFFD |= OFFD5;
                                                                P1_OFFD |= OFFD6;
                                                                P1_OFFD |= OFFD7;
                /* Configure P1.0,P1.1 as input mode */
                P10_InputOnly;
                P11_InputOnly;
                                                                P12_InputOnly;
                P13_InputOnly;
                                                                P14_InputOnly;
                P15_InputOnly;
                                                                P16_InputOnly;
                P17_InputOnly;
                                                                /*ÅäÖóÉÊä³öģʽ*/                                                               
                                                                P2_PMD=0x5555;                                                               
                /* Clear the A/D interrupt flags for safe */
                set_ADF;
                                                               
                                                                KG=1;
                                                                CD=1;
                                                                TMR0_Delay1ms(50);                                                               
                                                                FD=0;
                                                                TMR0_Delay1ms(50);
                                                                FD=1;       
                                                               
   
                                                                while(1)
                                                                {
/***************************************************/       
                                                                                        uc=1000;

使用特权

评论回复
27
lvyunhua| | 2015-2-28 20:50 | 只看该作者
楼主问题解决了吗?
x值大于512可以正常运行吗?

使用特权

评论回复
28
minier| | 2015-3-15 14:32 | 只看该作者
变量类型定义问题

使用特权

评论回复
29
lvyunhua| | 2015-3-15 15:44 | 只看该作者


变量类型定义问题


uint32_t  这个类型支持32位的数据啊。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
联众菜鸟 + 2 赞一个!
30
联众菜鸟|  楼主 | 2015-3-17 12:25 | 只看该作者
lvyunhua 发表于 2015-2-28 20:50
楼主问题解决了吗?
x值大于512可以正常运行吗?

不行。

使用特权

评论回复
31
联众菜鸟|  楼主 | 2015-3-17 12:25 | 只看该作者
谢谢各位,while(ADSR&ADF==0);加上小括号改为while((ADSR&ADF)==0); main(void)加上前int改为 intmain(void), 问题就没有出现了。

使用特权

评论回复
32
lvyunhua| | 2015-3-17 15:27 | 只看该作者
呵呵,恭喜楼主。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则