搜索
bottom↓
回复: 37

PIC16晶振有没有什么坑?死活不起振

[复制链接]

出0入0汤圆

发表于 2015-8-9 13:51:23 | 显示全部楼层 |阅读模式
我已经把CONFIG当中相应的控制字都设好了,上电后读取该控制字和我
设置的一模一样,

OSCCON中也设置过了,但是貌似没有用。

有没有什么我没考虑到的?晶振是8M的晶振,4LL锁相环开启、关闭
都没用。

到底怎么回事啊?STM32弄过25M,24.xxxM, 8M什么的都是上电就启振,怎么
PIC16这么困难?

是不是PORTA要有相关设置才行?

请高手帮忙

出0入8汤圆

发表于 2015-8-9 13:54:52 来自手机 | 显示全部楼层
配置字是啥状态?很容易起震啊。

出0入76汤圆

发表于 2015-8-9 14:30:09 | 显示全部楼层
应该是楼主的问题

出0入0汤圆

发表于 2015-8-9 14:51:14 | 显示全部楼层
IO设置吧好像还有,就是选择clk引脚是用IO还是用来时钟。config很坑,配不好仿真也用不了。

出0入0汤圆

 楼主| 发表于 2015-8-9 16:01:24 | 显示全部楼层
foxpro2005 发表于 2015-8-9 14:30
应该是楼主的问题

是的,我也知道,所以特地来问到底有
什么没有注意到。

出50入0汤圆

发表于 2015-8-9 16:17:25 | 显示全部楼层
以我用PIC的经验,应该是楼主自己的配置位没有设置好,最好贴上程序。

出0入0汤圆

 楼主| 发表于 2015-8-9 17:18:15 | 显示全部楼层
-阿发- 发表于 2015-8-9 14:51
IO设置吧好像还有,就是选择clk引脚是用IO还是用来时钟。config很坑,配不好仿真也用不了。 ...

不就是TRISA寄存器吗?还有什么要配置的?

出0入4汤圆

发表于 2015-8-9 17:50:42 | 显示全部楼层
楼主涉猎的内容很多啊。

出0入0汤圆

发表于 2015-8-9 19:11:25 | 显示全部楼层
你怎么测试没起振?
还有具体芯片型号 什么振荡方式 配置字怎么设的....

出0入0汤圆

发表于 2015-8-10 12:51:42 | 显示全部楼层
关键在配置位,PIC的东西质量还是有保证的

出0入0汤圆

发表于 2015-8-10 19:58:04 | 显示全部楼层
习学发开 发表于 2015-8-9 17:18
不就是TRISA寄存器吗?还有什么要配置的?

配置位里面也有一个选项选择clk引脚用作什么功能的吧,你看看。我记不太清了

出0入0汤圆

 楼主| 发表于 2015-8-10 22:07:11 | 显示全部楼层
本帖最后由 习学发开 于 2015-8-10 22:08 编辑
youmcu 发表于 2015-8-9 19:11
你怎么测试没起振?
还有具体芯片型号 什么振荡方式 配置字怎么设的....


PIC16的中端型号。

配置字:

// CONFIG1
#pragma config FOSC = HS        // Oscillator Selection (HS Oscillator, High-speed crystal/resonator connected between OSC1 and OSC2 pins)
#pragma config WDTE = ON        // Watchdog Timer Enable (WDT enabled)
#pragma config PWRTE = ON       // Power-up Timer Enable (PWRT enabled)
#pragma config MCLRE = ON       // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
#pragma config CP = OFF         // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config CPD = OFF        // Data Memory Code Protection (Data memory code protection is disabled)
#pragma config BOREN = ON       // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF   // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = ON        // Internal/External Switchover (Internal/External Switchover mode is enabled)
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)

// CONFIG2
#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
#pragma config PLLEN = OFF      // PLL Enable (4x PLL disabled)
#pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = ON         // Low-Voltage Programming Enable (Low-voltage programming enabled)


另外OSCCON寄存器也设置成了根据FOSC来选择时钟。

出0入0汤圆

 楼主| 发表于 2015-8-10 22:08:04 | 显示全部楼层
-阿发- 发表于 2015-8-10 19:58
配置位里面也有一个选项选择clk引脚用作什么功能的吧,你看看。我记不太清了 ...

这个真心没有。

出0入0汤圆

发表于 2015-8-10 22:30:58 来自手机 | 显示全部楼层
#pragma config CLKOUTEN = OFF?应该是on吧

出0入0汤圆

发表于 2015-8-10 22:41:45 | 显示全部楼层
砂山老妖 发表于 2015-8-10 22:30
#pragma config CLKOUTEN = OFF?应该是on吧

这个是选择是否让这个引脚输出时钟给别的设备用,应该是off

出0入0汤圆

发表于 2015-8-11 08:39:18 | 显示全部楼层
我说说我遇到过的问题

1,MCLR没上拉到VCC上
2,看手册说支持3.3V,后来才发现要LF版本才行

另外看门狗还是先关了吧

出350入8汤圆

发表于 2015-8-11 08:53:54 | 显示全部楼层
你要说一下芯片型号,每款会有一点差别,但是都大同小异。

仔细看一下手册,关于OSC的选择和切换,都有一个流程,必须严格执行。

另外可以尝试下:

#pragma config IESO = OFF        // Internal/External Switchover (Internal/External Switchover mode is enabled)
#pragma config WDTE = OFF      // Watchdog Timer Enable (WDT enabled)
#pragma config MCLRE = OFF     // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)

出0入0汤圆

 楼主| 发表于 2015-8-16 08:23:15 | 显示全部楼层
youmcu 发表于 2015-8-9 19:11
你怎么测试没起振?
还有具体芯片型号 什么振荡方式 配置字怎么设的....

因为用示波器看,没有看见阶梯状的近似于正弦波的波形,是平的,带点杂波

出0入0汤圆

 楼主| 发表于 2015-8-16 08:29:17 | 显示全部楼层
bmagui 发表于 2015-8-11 08:53
你要说一下芯片型号,每款会有一点差别,但是都大同小异。

仔细看一下手册,关于OSC的选择和切换,都有一 ...

谢谢。另外我想问下,串一个电阻在晶振引脚上会不会是个问题?手册上叫的。是不是串的阻值太大
或者太小导致无法正常起振?

出10入10汤圆

发表于 2015-8-16 08:33:41 | 显示全部楼层
PIC中端型号也有很多差别,最好列出具体型号

出10入10汤圆

发表于 2015-8-16 08:35:55 | 显示全部楼层
用的什么编译器?哪个版本?

出0入0汤圆

发表于 2015-8-16 08:36:49 | 显示全部楼层
是使用那一型号PIC16F???
最简单的test --> I/O LED Blinky

出0入0汤圆

发表于 2015-8-16 08:53:56 | 显示全部楼层
编译器上的配置不对吧

出0入0汤圆

发表于 2015-8-16 10:30:34 | 显示全部楼层
习学发开 发表于 2015-8-16 08:29
谢谢。另外我想问下,串一个电阻在晶振引脚上会不会是个问题?手册上叫的。是不是串的阻值太大
或者太小 ...

这个电阻不要太大,实际工程中一般都可不用(即=0)!
芯片型号? 芯片型号? 芯片型号?
PIC中档后来出的型号都带内部振荡,复位后默认为内部振荡方式工作,要外部振荡方式工作需在配置字中设定外,还要在特定寄存是中设置!
不知具体芯片型号,下图以PIC16F88x为例:  
\

本帖子中包含更多资源

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

x

出0入42汤圆

发表于 2015-8-16 13:05:14 来自手机 | 显示全部楼层
PIC没有见过不起振的。每个都振的欢!

出0入0汤圆

 楼主| 发表于 2015-8-16 14:15:59 | 显示全部楼层
youmcu 发表于 2015-8-16 10:30
这个电阻不要太大,实际工程中一般都可不用(即=0)!
芯片型号? 芯片型号? 芯片型号?
PIC中档后来出的型号都 ...

谢谢你详尽的回答,用的是PIC16(L)F1946/47。

出0入0汤圆

 楼主| 发表于 2015-8-16 14:17:08 | 显示全部楼层
szxszx 发表于 2015-8-16 08:35
用的什么编译器?哪个版本?

IDE是MPLAB X , 编译器 XC8.

芯片是PIC16(L)F1946/47。

出0入0汤圆

发表于 2015-8-16 14:24:09 | 显示全部楼层
电阻串了多大?

出50入0汤圆

发表于 2015-8-16 19:38:30 | 显示全部楼层
正好用PIC16F1947,这是我的配置:
__CONFIG(FOSC_INTOSC&WDTE_OFF&MCLRE_ON&CP_OFF&CPD_OFF&BOREN_OFF&IESO_OFF &FCMEN_OFF&CLKOUTEN_OFF);
__CONFIG(BORV_HI&STVREN_ON&PLLEN_OFF&WRT_OFF&LVP_OFF);
编译工具:MPLAB IDE V8.80  ,PICC9.83

出0入0汤圆

 楼主| 发表于 2015-8-16 19:56:24 | 显示全部楼层
wangrwnyan123 发表于 2015-8-16 19:38
正好用PIC16F1947,这是我的配置:
__CONFIG(FOSC_INTOSC&WDTE_OFF&MCLRE_ON&CP_OFF&CPD_OFF&BOREN_OFF&IES ...

谢谢你的回答,我去试试看。

出0入0汤圆

 楼主| 发表于 2015-8-16 19:56:40 | 显示全部楼层
leeseel 发表于 2015-8-16 14:24
电阻串了多大?

1K,不敢串大。

出0入0汤圆

发表于 2015-8-16 20:54:06 来自手机 | 显示全部楼层
试试晶振并联一个1M电阻

出0入0汤圆

发表于 2015-8-16 21:36:52 | 显示全部楼层

还是大了。。。。
直接去掉试试

出350入8汤圆

发表于 2015-8-16 21:40:51 | 显示全部楼层
习学发开 发表于 2015-8-16 08:29
谢谢。另外我想问下,串一个电阻在晶振引脚上会不会是个问题?手册上叫的。是不是串的阻值太大
或者太小 ...

串连电阻作用是OSC的负反馈,避免过强驱动损坏电路。

如果你的OSCO没有切顶情况,可以不用加这个电阻。

出10入10汤圆

发表于 2015-8-17 08:33:51 | 显示全部楼层
我用的是内部震荡,配置如下:
__CONFIG(FOSC_INTOSC & WDTE_SWDTEN & PWRTE_OFF & MCLRE_OFF & CP_ON & CPD_OFF & BOREN_OFF & CLKOUTEN_OFF & IESO_OFF & FCMEN_OFF);
__CONFIG(WRT_OFF & VCAPEN_OFF & PLLEN_OFF & STVREN_ON & BORV_HI & LVP_OFF);
你是如何知道没有起振的?工作电压是多少?
先把震荡设置为内部震荡,看能否起振,用PIC从来没出现震荡问题;也有可能是你的OSCCON设置问题

出0入8汤圆

发表于 2015-9-8 09:18:44 | 显示全部楼层
设置好芯片的配置字,在Configure菜单在勾选Configuragion Bits set in code就行。

PIC16配置参考:

/*
器件配置:
振荡器选择位:
FOSC_ECH:                 外部时钟,高功耗模式:RA7/OSC1/CLKIN 引脚为CLKIN 功能
FOSC_ECM:                 外部时钟,中等功耗模式:RA7/OSC1/CLKIN 引脚为CLKIN 功能
FOSC_ECL:                 外部时钟,低功耗模式:RA7/OSC1/CLKIN 引脚为CLKIN 功能
FOSC_INTOSC:        RA7/OSC1/CLKIN 引脚为I/O 功能
FOSC_EXTRC:                RA7/OSC1/CLKIN 引脚为RC 功能
FOSC_HS:                高速晶振/ 谐振器连接到RA6/OSC2/CLKOUT和RA7/OSC1/CLKIN 引脚
FOSC_XT:                晶振/ 谐振器连接到RA6/OSC2/CLKOUT 和RA7/OSC1/CLKIN 引脚
FOSC_LP:                低功耗晶振连接到RA6/OSC2/CLKOUT 和RA7/OSC1/CLKIN 引脚

看门狗定时器使能位:
WDTE_OFF:                禁止WDT               
WDTE_ON:                使能WDT
WDTE_NSLEEP:        WDT 在运行时使能,休眠时禁止
WDTE_SWDTEN:        WDT 由WDTCON 寄存器中的SWDTEN 位控制

上电延时定时器使能位:
PWRTE_OFF:                禁止PWRT
PWRTE_ON:                使能PWRT

RE3/MCLR/VPP 引脚功能选择位:
MCLRE_ON                   // MCLR/VPP pin function is MCLR         
MCLRE_OFF                // MCLR/VPP pin function is digital input

代码保护位:        (当关闭代码保护时,将擦除整个程序存储器的内容)
CP_OFF                        // Program memory code protection is disabled
CP_ON                        // Program memory code protection is enabled

数据代码保护位:        (擦除操作期间关闭代码保护时,将擦除整个数据EEPROM 的内容)
CPD_OFF                        // Data memory code protection is disabled
CPD_ON                        // Data memory code protection is enabled

欠压复位使能位:        (使能欠压复位并不能自动使能上电延时定时器)
BOREN_ON                 // Brown-out Reset enabled
BOREN_NSLEEP        // Brown-out Reset enabled while running and disabled in Sleep
BOREN_SBODEN        // Brown-out Reset controlled by the SBOREN bit in the BORCON register
BOREN_OFF                 // Brown-out Reset disabled

时钟输出使能位:
CLKOUTEN_OFF        // CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin
CLKOUTEN_ON                // CLKOUT function is enabled on the CLKOUT pin

内部/ 外部时钟切换位:
IESO_ON                        // Internal/External Switchover mode is enabled
IESO_OFF                // Internal/External Switchover mode is disabled

故障保护时钟监视器使能位:
FCMEN_ON                // Fail-Safe Clock Monitor is enabled
FCMEN_OFF                // Fail-Safe Clock Monitor is disabled
*/

//config1
__CONFIG (FOSC_HS & WDTE_SWDTEN & PWRTE_ON & MCLRE_ON & CP_ON & CPD_ON & BOREN_OFF & CLKOUTEN_OFF & IESO_ON & FCMEN_ON);
//confing2
__CONFIG (PLLEN_OFF & BORV_LO);            //OSC = 32 MHz

出0入0汤圆

发表于 2015-9-8 17:33:31 | 显示全部楼层
看下晶振上并的电容有没有可能是100nF的

出0入0汤圆

发表于 2015-10-22 08:21:34 | 显示全部楼层
楼主的晶振是多少Mhz 的?
4MHz 以下的,配置 是XT
4MHz 以上的,配置 是HS
搞错了不起振的, 这种低级的错误, 我还是新手玩16F84A 时犯过。

芯片的电压是5V 吗?电压也会影响, 过低的电压, 跑不了快速的晶振。

楼主用示波器看不到信号, 但是芯片有操作吗? 如果有, 已经切换到使用内部的Internal OSC 了。。

我曾经为了PIC 16F1827 的晶振折腾过 ,外部晶振如果受到干扰挂了, 会自动启动内部晶振, 我用软件检测, 然后重新启动外部晶振。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 02:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表