lovehebut 发表于 2014-3-12 11:52:19

PIC16F883上电后自己延时2-5秒

本帖最后由 lovehebut 于 2014-3-13 11:18 编辑

各位大侠,我在使用PIC16F883的时候会在上电后马上点亮一个LED,但是这个LED会在2-5秒才被点亮,具体测试如下:

1--LED的的电平确实是2-5秒后才从单片机输出的

2--电源用的3.3V,用示波器观看,上电的时候电源没有延迟

3--直接用3.3V,不经过单片机点亮一个LED,这样是没问题的

4--考虑问题出在单片机上

5--用的是8M外部晶振,开始怀疑是晶振的问题,可是换成内部晶振,结果一样

6--已经在配置里面去掉了上电延时和时钟切换

7--每一个IO口都会有这个延时

以上就是我的测试过程,请大家帮忙看看,谢谢.

gaolf_2012 发表于 2014-3-12 12:23:05

配置字寄存器(CONFIG)中的FOSC<2:0> 位配置确定是HS?

gaolf_2012 发表于 2014-3-12 12:30:45

在线调试看OSCCON的值
bit 7 未实现:读为0
bit 6-4 IRCF<2:0>:内部振荡器频率选择位
111 = 8MHz
110 = 4MHz (默认)
101 = 2MHz
100 = 1MHz
011 = 500kHz
010 = 250kHz
001 = 125kHz
000 = 31kHz(LFINTOSC)
bit 3 OSTS:振荡器起振延时状态位(1)
1 = 器件使用由配置字寄存器中的FOSC<2:0> 定义的外部时钟源
0 = 器件使用内部振荡器(HFINTOSC 或LFINTOSC)
bit 2 HTS:HFINTOSC 状态位(高频 — 8 MHz 到125 kHz)
1 = HFINTOSC稳定
0 = HFINTOSC不稳定
bit 1 LTS:LFINTOSC 稳定位(低频 — 31 kHz)
1 = LFINTOSC稳定
0 = LFINTOSC不稳定
bit 0 SCS:系统时钟选择位
1 = 内部振荡器用作系统时钟
0 = 时钟源由配置字寄存器中的FOSC<2:0> 定义
注1: 双速启动时如果选择了LP、XT 或HS 振荡器模式或使能了故障保护模式会使该位复位为0。

xmcsl 发表于 2014-3-12 12:36:00

查复位电路

lovehebut 发表于 2014-3-12 12:44:38

gaolf_2012 发表于 2014-3-12 12:23
配置字寄存器(CONFIG)中的FOSC 位配置确定是HS?

是的,确定是HS,而且单片机运行应该是正常的,因为我用示波器看了定时器的频率.

lovehebut 发表于 2014-3-12 12:45:45

xmcsl 发表于 2014-3-12 12:36
查复位电路

没有用复位电路,直接上电复位的

lovehebut 发表于 2014-3-12 12:56:14

gaolf_2012 发表于 2014-3-12 12:30
在线调试看OSCCON的值
bit 7 未实现:读为0
bit 6-4 IRCF:内部振荡器频率选择位


我用串口输入了 OSTS和HTS, 均为1,也就说明用的是外部晶振,并且稳定

lovehebut 发表于 2014-3-12 12:57:41

而且串口的输出也是延迟的,就说明应该是程序延迟运行的,好奇怪.

Firman 发表于 2014-3-12 13:40:51

用PIC单片机外部晶振时,发现上电会起振困难,甚至晶振靠近一些物体会起振不了的,
不过你也用内部晶振了,就不知道为什么了.
可以把示波器调好量复位脚和晶振看看是否正常.

lovehebut 发表于 2014-3-12 16:14:09

测试了一下晶振的输出脚,确实是经过2-5秒后起震,可是在用内部晶振的时候也存在这个问题,就很不理解了

caoxuedong 发表于 2014-3-12 16:34:59

1.LED限流电阻不合适。2.买到了假片子。

ggddll 发表于 2014-3-12 18:37:44

好多的芯片是假冒的

lovehebut 发表于 2014-3-12 22:21:14

LED的限流电阻已经尝试过330欧姆和1000欧姆的了,不解决问题的

lovehebut 发表于 2014-3-12 22:22:52

ggddll 发表于 2014-3-12 18:37
好多的芯片是假冒的

假冒的?不能吧?假冒的为什么其他功能是正常的呢?只要程序开始运行就一切正常了?

alias 发表于 2014-3-12 22:29:12

内部晶振,内部晶振。。。{:curse:}

ggddll 发表于 2014-3-13 07:48:04

lovehebut 发表于 2014-3-12 22:22
假冒的?不能吧?假冒的为什么其他功能是正常的呢?只要程序开始运行就一切正常了? ...

非PIC                                             

lovehebut 发表于 2014-3-13 09:09:45

又换了一片单片机,还是这个样子,晕

szxszx 发表于 2014-3-13 09:26:50

上图,上配置字配置内容

lovehebut 发表于 2014-3-13 09:36:20

已经把外置晶振焊掉了,故障依旧

szxszx 发表于 2014-3-13 09:54:17

配置寄存器中RE3/MCLR引脚配置为MCLR,RE3引脚上的复位电路可能有问题。
将MCLR配置为内部复位试一下

lovehebut 发表于 2014-3-13 10:09:54

szxszx 发表于 2014-3-13 09:54
配置寄存器中RE3/MCLR引脚配置为MCLR,RE3引脚上的复位电路可能有问题。
将MCLR配置为内部复位试一下 ...

原来已经试过了,刚才又试了一下,故障依旧 {:sweat:}

szxszx 发表于 2014-3-13 10:18:40

本帖最后由 szxszx 于 2014-3-13 10:19 编辑

1、程序精简到只点亮LED:排除程序问题;
2、RE3/MCLR引脚接10K电阻到VDD:排除复位电路问题;
3、换电源:排除电源问题。

lovehebut 发表于 2014-3-13 10:24:32

szxszx 发表于 2014-3-13 10:18
1、程序精简到只点亮LED:排除程序问题;
2、RE3/MCLR引脚接10K电阻到VDD:排除复位电路问题;
3、换电源: ...

1--程序现在已经是只点亮LED

2--现在已经是10k电阻接到VDD了

3--已经直接用3.3V供电了

可是故障依旧

szxszx 发表于 2014-3-13 10:36:14

检查10k电阻是不是有问题

lovehebut 发表于 2014-3-13 10:39:16

szxszx 发表于 2014-3-13 10:36
检查10k电阻是不是有问题

用万用表测量10K电阻正好10K,无语了

xmcsl 发表于 2014-3-13 10:52:42

貌似逗人玩的

lovehebut 发表于 2014-3-13 11:16:28

已经解决了,打技术支持搞定的,问题出在“Debug”和“Release” 选择,在烧程序的时候左边有个下拉框,如果选择Debug就会出现这种情况,改为Release后问题解决,
谢谢帮忙,分数给szxszx吧.

lovehebut 发表于 2014-3-13 11:22:35

各位,如何给分啊? 不会操作 {:sad:}

lovehebut 发表于 2014-3-13 22:25:11

没人肯教一下吗?
页: [1]
查看完整版本: PIC16F883上电后自己延时2-5秒