[PIC®/AVR®/dsPIC®产品] PIC16F72 HS振荡模式不起振

[复制链接]
2270|28
 楼主| 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();
}
}       
奔波儿熊 发表于 2019-9-25 10:53 | 显示全部楼层
代码可以发全一点吗? 你这个看起来不应该测出来时间这么长
 楼主| 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。
奔波儿熊 发表于 2019-9-25 14:51 | 显示全部楼层
kaavie 发表于 2019-9-25 14:14
代码我重新改为如下:
PIC16F76,16MHz,机械周期0.25us
DAT0()

你要看汇编有几条指令

评分

参与人数 1威望 +2 收起 理由
kaavie + 2

查看全部评分

 楼主| kaavie 发表于 2019-10-7 11:44 | 显示全部楼层
本帖最后由 kaavie 于 2019-10-7 18:00 编辑

混编汇编解决了
huahuagg 发表于 2019-10-8 09:36 | 显示全部楼层
原来如此。
cdyyabc 发表于 2019-10-9 14:14 | 显示全部楼层
kaavie 发表于 2019-9-25 10:05
确实如您所推测的用示波器测试晶振就不起振了,今天用频谱仪测试晶振有起振,有16.000600Hz,频偏600Hz。 ...

用示波器看(探头x10模式)看OSC2引脚,不要看OSC1引脚
elecns 发表于 2019-11-12 10:01 | 显示全部楼层
确定十六进制代码3FBA是实际值吗?没使用过十六进制值来设置PIC中的内容。按以下方式进行操作可以

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
elecns 发表于 2019-11-12 10:04 | 显示全部楼层

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

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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部