打印
[STC单片机]

STC15w204s 死机问题。紧急求助

[复制链接]
3454|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kardoche|  楼主 | 2014-9-1 12:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kardoche 于 2014-9-1 12:30 编辑

由于是第一次搞一个小东西。,发现好多地方都不懂,希望有高手进来帮帮忙。。。

1.单片机供电是经过稳压的,3V。 电池供电电压>3.3V的时候,一切正常,当电压≤3.3V的时候,单片机就死机了,按任何输入都没有反应了。

2.还有一个问题:程序如下: 其他略。。。
void cmpinit()                      //比较器初始化程序
{
        P5M1 |= 0x20;           //5.5为高阻,5.4IO,其他保持原有。(P5.5是比较器的"+",5.4我选的内部基准。其他IO都这个单片机都没有。所以将寄存器保持原有的,这里把5.4配为IO有没有问题???)
        P5M0 &= ~0x30;
        CMPCR1 = 0x00;                   //初始化比较器控制寄存器1
        CMPCR2 = 0x00;
        CMPCR1 &= ~0x08;                 //选择外部管脚P5.5(CMPP)为比较器的正极输入源
        CMPCR1 &= ~0x04;                 //选择内部BandGap电压VBandGap为比较器的负极输入源
        CMPCR1 &= ~0x02;                 //禁用比较器的比较结果输出
        CMPCR2 &= ~0x80;                      //比较器的比较结果正常输出到P1.2
        CMPCR2 &= ~0x40;                      //不禁用(使能)比较器输出端的0.1uS虑波电路
        CMPCR2 &= ~0x3F;                       //比较器结果不去抖动,直接输出
        CMPCR1 |= 0x80;                  //使能比较器

void cmpled()                  //闪烁程序
{
        if((CMPCR1 & 0x40) == 0x40)             //查询比较完成标志
        {
                CMPCR1 &= ~0x40;                //清除完成标志
                led0 = !(CMPCR1 & 0x01);                 //当外电压低于内部1.27V时置位(0x01)
                delay(100);
                led0 = 1;
                delay(100);
        }
}

为什么LED0 一点反应都没有。请教大家这个程序有错误没有?

相关帖子

沙发
coody| | 2014-9-1 13:03 | 只看该作者
这个MCU我用过在小产品上,没觉得有什么问题,这是STC宽电压的,一般2.4~5.5V都能正常,用锂电就不需要LDO了。其内部复位做得比以前11、12系列的好很多了,我测试产品时,用可编程数控电源 慢慢的从1.5V到5.5V再降到1.5V再升到5.5V,如此重复,电压上升率是1V/S,复位都很可靠。

LZ下载时注意选择复位电压,还有要注意,任何MCU都是数字系统,VCC和GND之间至少要接一个0.1uF电容,经常看到一些新手不接任何电容的。

使用特权

评论回复
板凳
kardoche|  楼主 | 2014-9-1 13:47 | 只看该作者
coody 发表于 2014-9-1 13:03
这个MCU我用过在小产品上,没觉得有什么问题,这是STC宽电压的,一般2.4~5.5V都能正常,用锂电就不需要LDO ...

嗯,谢谢,电容我接了一个1uF的,两个芯片直接了一个1uF滤波。然后我ISP时,把低压复位那个勾去掉了,3.3V死机问题解决了,但是到达2.8V左右还是死机的唉。。。。

那个比较器的问题应该怎么解决呢?

使用特权

评论回复
地板
kardoche|  楼主 | 2014-9-1 13:55 | 只看该作者
kardoche 发表于 2014-9-1 13:47
嗯,谢谢,电容我接了一个1uF的,两个芯片直接了一个1uF滤波。然后我ISP时,把低压复位那个勾去掉了,3.3 ...

还有,由于是锂电,考虑到要接充电器,所以LDO还是有必要的吗?

使用特权

评论回复
5
gx_huang| | 2014-9-1 14:13 | 只看该作者
到底是死机还是低压时处于复位状态,先搞明白。
锂电池供电,是否加LDO和充电器有关系吗?应该没有关系。

使用特权

评论回复
6
ningling_21| | 2014-9-1 14:18 | 只看该作者
stc  也有技术支持

使用特权

评论回复
7
kardoche|  楼主 | 2014-9-1 14:18 | 只看该作者
gx_huang 发表于 2014-9-1 14:13
到底是死机还是低压时处于复位状态,先搞明白。
锂电池供电,是否加LDO和充电器有关系吗?应该没有关系。 ...

哦,应该是处于复位状态, 加不加稳压都行的

大大,主要是第二个问题呢? 这个LED没反应 现在最麻烦就是这个了。 不知道是比较器没工作能,还是程序有问题,能帮我看看撒?:)

使用特权

评论回复
8
XZL| | 2014-9-1 16:25 | 只看该作者
低电压复位的电压值是可选的。

使用特权

评论回复
9
kardoche|  楼主 | 2014-9-1 16:53 | 只看该作者
大大们,都解决了,
通过读取CMPRES 的值,可以的,虽然不能使用下降沿,也可以读取结果的,呵呵

使用特权

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

本版积分规则

5

主题

22

帖子

0

粉丝