打印

关于io输出跳变的提问

[复制链接]
1119|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huandaczq|  楼主 | 2017-11-27 15:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
附件是pic16f72芯片手册

搞了一个多星期,芯片貌似运行起来了,但是输出波动太大(0.x或者1.几到4.9x浮动)三极管的B。三极管控制着继电器的线圈的通道。波动的输出的结果是每1秒左右时间继电器噼啪的吸和放开。

电源电压:4.97很稳定。,就是io口一直在波动。
晶振口osc1.osc2:一个1.几,一个2.4。(我看网上说需要Vdd/2左右就ok了)

那么是不是没接电容的原因?
附件芯片手册93页下面,写了(for all pins execept osc2)接50pf电容。如果是串联,那么移除了直流分量,那么电压就更小了,更加无法驱动了,如果是并联,那么50pf有足够能力输出稳定开关电流吗?
ps:芯片口输出是设置是porta=0xff,trisa=0;三极管是8050;

最后,我的晶振是两脚直接接芯片的osc1-2,不是参考芯片手册,因为按照芯片手册接法无法起振晶振,并且我看手上一个成品线路板上的芯片16f72也是直接芯片2个osc脚上接晶振,但是io输出上并没有接电容。那么是什么原因导致我io口的电压的跳变?


PIC16F72.pdf

2.4 MB

pic16f72

相关帖子

沙发
chunyang| | 2017-11-27 17:17 | 只看该作者
电路错误或/和程序错误都有可能,你查找问题的方向根本就不对。

使用特权

评论回复
板凳
cjseng| | 2017-11-27 17:33 | 只看该作者
输出波动是万用表量的还是示波器量的?去掉8050量一下IO输出电压看看有没有波动,有波动的话,那就是程序问题。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
huandaczq + 2
地板
SHWXZW| | 2017-11-27 23:11 | 只看该作者
新手路过学习。

使用特权

评论回复
5
huandaczq|  楼主 | 2017-11-28 14:17 | 只看该作者
cjseng 发表于 2017-11-27 17:33
输出波动是万用表量的还是示波器量的?去掉8050量一下IO输出电压看看有没有波动,有波动的话,那就是程序问 ...

示波器有还没买,万用表检测的!设置了14个输出口a:(0-5)c:(0-7)
a上有3个接了8050的b。所有io口都检测了,都有波动。程序左看右看只能是头文件错误。
我使用的芯片盖子上,写的是pic16f72,mplab里的picc里的include里没有pic16f72的头文件(后称72),只有pic16lf720(后称720).
我使用的72头文件的配置寄存器只有1个,在address 2007h;然而720有2个配置寄存器,config1和config2.
那么大神所说的程序问题就是这个头文件了吗?picc里头文件没有这么办?附件里p60就是配置寄存器的介绍,我使用的是__CONFIG(3fffd);
其他感觉没什么大问题了。具体包括程序先后我都试过,一样的问题。
#include<picxxxx.h>
void main()
{
    __CONFIG(3ffd);
    TRISC=0;
    PORTC=0x3f;
    TRISA=0;
    PORTA=0x23;
    while(1);
}

使用特权

评论回复
6
nnshoot| | 2017-11-28 15:40 | 只看该作者
huandaczq 发表于 2017-11-28 14:17
示波器有还没买,万用表检测的!设置了14个输出口a:(0-5)c:(0-7)
a上有3个接了8050的b。所有io口都 ...

是程序问题

使用特权

评论回复
7
huandaczq|  楼主 | 2017-11-28 17:31 | 只看该作者

程序怎么错了?我picc找不到pic16f72的头文件,只有pic16f720的头文件。区别就是2个配置config和一个1个配置的区别。

今天下午抽空特地用同电源同地并联接一个成品的线路板(它的),还有一个连自己的。测得osc1-2脚电压差是差不多的。但是它的左右高低和我的左右高低不同(它的2低1高,我的2高1低)(它的1.0和0.3我的1.0和1.7;数字都是大概的不是具体。)4m晶振 2根脚了,无缘晶振应该和正负极没关系了。有点高不同,听声音和万用表数字显示,应该是2-3秒正常。1秒不到不正常,然后循环

使用特权

评论回复
8
山东电子小菜鸟| | 2017-11-28 20:22 | 只看该作者
楼主可能没有正确配置控制位__CONFIG(),导致16F72循环重启,可以测下是否重启了

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
huandaczq + 2
9
huandaczq|  楼主 | 2017-11-29 13:20 | 只看该作者
山东电子小菜鸟 发表于 2017-11-28 20:22
楼主可能没有正确配置控制位__CONFIG(),导致16F72循环重启,可以测下是否重启了 ...

16f72配置位是3ffd,附件里p60页,问题应该不大,有效输出:无效输出大概3:1到5:1的样子。
bor enabled, code protection off,pwrt enabled, wdt enabled, xt osc;这是3ffd对应的config。
还有是否重启如何查看?我试过用地线接,mclr,然后松开高电平,还是一样的结果。

使用特权

评论回复
10
kingkits| | 2017-11-29 14:25 | 只看该作者
如果 wdt = enable
需要在程序里喂狗

使用特权

评论回复
11
huandaczq|  楼主 | 2017-11-29 16:08 | 只看该作者
本帖最后由 huandaczq 于 2017-11-29 16:26 编辑
kingkits 发表于 2017-11-29 14:25
如果 wdt = enable
需要在程序里喂狗

印象中看郭天祥pic视频的时候也没禁止。(应该是我记错了)
不过听从你的意思,我把狗杀了(3ffd变成3ff9),但是程序还是3秒好一秒不好。就好像1110 1110 1110 1110这样循环,很固定!

使用特权

评论回复
12
kingkits| | 2017-11-29 17:17 | 只看该作者
你在循环里喂狗试一试

使用特权

评论回复
13
huandaczq|  楼主 | 2017-11-30 08:51 | 只看该作者
kingkits 发表于 2017-11-29 17:17
你在循环里喂狗试一试

我把狗关了!还是一样的

使用特权

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

本版积分规则

34

主题

186

帖子

0

粉丝