发新帖我要提问
12
返回列表
打印
[PIC®/AVR®/dsPIC®产品]

PIC16F72 HS振荡模式不起振

[复制链接]
楼主: kaavie
手机看帖
扫描二维码
随时随地手机跟帖
21
kaavie|  楼主 | 2019-9-25 10:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
奔波儿熊 发表于 2019-9-24 12:30
奇怪了, 你可以试试8M或者20M的吗?

确实如您所推测的用示波器测试晶振就不起振了,今天用频谱仪测试晶振有起振,有16.000600Hz,频偏600Hz。是下面这段程序有问题,实测正频宽30us,负频宽75us,帮分析下怎么会有这么大的出入:
DAT0()        {RB5=1;delay(5);RB5=0;delay(15);
// RB5 为IO口定义 PIC16F7x
void delay(int Count)
{
        int i;
for(i=0; i<Count; i++)
{
        NOP();
}
}       

使用特权

评论回复
22
奔波儿熊| | 2019-9-25 10:53 | 只看该作者
代码可以发全一点吗? 你这个看起来不应该测出来时间这么长

使用特权

评论回复
23
kaavie|  楼主 | 2019-9-25 14:14 | 只看该作者
本帖最后由 kaavie 于 2019-9-25 14:15 编辑
奔波儿熊 发表于 2019-9-25 10:53
代码可以发全一点吗? 你这个看起来不应该测出来时间这么长

代码我重新改为如下:
PIC16F76,16MHz,机械周期0.25us
DAT0()
{
RB5=1;NOP();
RB5=0;NOP();NOP();NOP();NOP();
}
在执行上述函数时,用示波器测试实际正频宽为2us,负频宽为2.75us。相差0.75us是正确的。但是正频宽理论上应该是0.25us变成实际2us,负频宽理论上应该是1us变成实际2.75us。

使用特权

评论回复
24
奔波儿熊| | 2019-9-25 14:51 | 只看该作者
kaavie 发表于 2019-9-25 14:14
代码我重新改为如下:
PIC16F76,16MHz,机械周期0.25us
DAT0()

你要看汇编有几条指令

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
kaavie + 2
25
kaavie|  楼主 | 2019-10-7 11:44 | 只看该作者
本帖最后由 kaavie 于 2019-10-7 18:00 编辑

混编汇编解决了

使用特权

评论回复
26
huahuagg| | 2019-10-8 09:36 | 只看该作者
原来如此。

使用特权

评论回复
27
cdyyabc| | 2019-10-9 14:14 | 只看该作者
kaavie 发表于 2019-9-25 10:05
确实如您所推测的用示波器测试晶振就不起振了,今天用频谱仪测试晶振有起振,有16.000600Hz,频偏600Hz。 ...

用示波器看(探头x10模式)看OSC2引脚,不要看OSC1引脚

使用特权

评论回复
28
elecns| | 2019-11-12 10:01 | 只看该作者
确定十六进制代码3FBA是实际值吗?没使用过十六进制值来设置PIC中的内容。按以下方式进行操作可以

使用特权

评论回复
29
elecns| | 2019-11-12 10:04 | 只看该作者

寄存器11是Config位Xt或Hs。。

你是根据TS所说的来设置的:0x3FBA =(部分)CP关闭,PWRTEN禁用,WDT禁用,HS振荡器。如果没有振荡,则PWRTEN设置(必须发生1024次振荡,未设置72 ms计时器)应停止处理。


使用特权

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

本版积分规则