PIC16F1946无法四倍频

[复制链接]
7505|19
 楼主| kumosheng 发表于 2011-11-7 17:51 | 显示全部楼层 |阅读模式
我使用的PIC16F1946,使能内部晶振为8M,用示波器可以看到,8M晶振已经工作,但是PLLx4,为什么不起任何作用,请高手给指点一下,小弟,谢过。
Ryanhsiung 发表于 2011-11-7 19:01 | 显示全部楼层
16系列有倍频吗,不知道啊!!
asspeed 发表于 2011-11-8 09:43 | 显示全部楼层
数据手册上已经有非常详细的描述,就那么几句话都懒的看?
yewuyi 发表于 2011-11-8 10:11 | 显示全部楼层
从这个图片看,使用外部时钟源的时候可能是无法通过PLL实现给系统倍频的。

本帖子中包含更多资源

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

×
asspeed 发表于 2011-11-8 10:32 | 显示全部楼层
外部振荡器和内部振荡器都可以支持4倍PLL,但内部振荡器要使用PLL,必须配置为8Mhz,系统最大时钟频率最大为32Mhz.
 楼主| kumosheng 发表于 2011-11-8 12:30 | 显示全部楼层
5# asspeed
楼上是说的对,但是就是无法倍频上啊,也就是PLLR寄存器无法置1,让人费解啊?又有谁能给提供点配置的代码,或者是汇编程序,我怀疑跟编译器有关系?
 楼主| kumosheng 发表于 2011-11-8 13:53 | 显示全部楼层
5楼你说的对啊,我是配置成8M后才倍频的,我用protues仿真可以看到已经倍频成功,但是为什么烧录到单片机里运行只有内部8M了呢!PLLEN使能与不使能是一个样,费解!
初始化:
config里设置enable PLLX4
程序里
OSCON = 0XF3;
PLLR 就一直为0
asspeed 发表于 2011-11-8 19:45 | 显示全部楼层
我非常怀疑你的"8Mhz的运行速度"的说法, 在内部8Mhz时钟+4xPLL状况下,其指令运行速率为8MIPS,
即一条指令运行时间为125ns。你自己好好检查一下
xaq79 发表于 2011-11-9 17:14 | 显示全部楼层
The 4X PLL may be enabled for use by one of two
methods:
1. Program the PLLEN bit in Configuration Word 2
to a ‘1’.
2. Write the SPLLEN bit in the OSCCON register to
a ‘1’. If the PLLEN bit in Configuration Word 2 is
programmed to a ‘1’, then the value of SPLLEN
is ignored.
xaq79 发表于 2011-11-9 17:15 | 显示全部楼层
仔细看看这2点说明
 楼主| kumosheng 发表于 2011-11-9 17:38 | 显示全部楼层
图片是configuration bits,大家都看到了吧!
程序代码为:
#include <htc.h>
#include "includes.h"
//__CONFIG (1,_FOSC_INTOSC & _WDTE_OFF & _nPWRTE_ON & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF &_FCMEN_OFF);
//__CONFIG (2,_WRT_OFF & _VCAPEN_RA5 & _PLLEN_ON & _STVREN_ON & _BORV_27 & _nDEBUG_ON & _LVP_OFF);
void interrupt ISR(void);//interrupt
void gpio_init()
{
   TRISA0 = 0;
   ANSA0 = 0;
   TRISA2 = 0;
   ANSA2 = 0;
   RA0 = 1;
   RA2 = 1;
   TRISA1 = 0;
   ANSA1 = 0;
   RA1 = 0;
}
void Init_Timer2(void)
  {
   PR2 = 19;
   T2CKPS0 = 0;
   T2CKPS1 = 0;
   TMR2ON = 1;
   TMR2IE = 1;
  }
void interrupt ISR(void)
{
if(TMR2IF)
{
  TMR2IF = 0;
  RA0 ^=1;
}
}
void main(void)
{
//OSCCON = 0B11110011;
SPLLEN = 1;
IRCF3 = 1;
IRCF2 = 1;
IRCF1 = 1;
IRCF0 = 0 ;
SCS1 = 1;
SCS0 = 1;
gpio_init();
Init_Timer2();
PEIE = 1;
ei();
for(;;)
{;}

}

本帖子中包含更多资源

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

×
 楼主| kumosheng 发表于 2011-11-9 17:42 | 显示全部楼层
在此谢过各位大侠的热心,无法倍频,我都怀疑我的16F1946芯片是否是否是山寨的,还是我的编译器有什么问题,大家遇到过吗!编译器大家都用哪个版本的啊?
 楼主| kumosheng 发表于 2011-11-9 17:44 | 显示全部楼层
我的IDE是V8.66的,HI-TECH_v9.80(pro)**版的,我也试过45天试用版的了,都不行,无语了!
diweo 发表于 2011-11-9 21:13 | 显示全部楼层
你程序代码里是//__CONFIG,对话框里又选择“Configuration Bits set in code"  ???
wangningcg 发表于 2011-11-11 13:03 | 显示全部楼层
哈哈。
请楼主注意OSCCON = 0B11110011;寄存器
asspeed 发表于 2011-11-11 15:59 | 显示全部楼层
如果真如LS所说,很多人都要内牛满面了。
 楼主| kumosheng 发表于 2011-11-17 11:45 | 显示全部楼层
谢谢楼主的提示,是我弄错啦! 15# wangningcg
兰天白云 发表于 2011-11-17 16:33 | 显示全部楼层
应该是设置问题,再查查FOSC和SCS设置
xubx83 发表于 2011-11-18 16:24 | 显示全部楼层
哈哈。
请楼主注意OSCCON = 0B11110011;寄存器
wangningcg 发表于 2011-11-11 13:03


OSCCON=0b11110011;对了规格书,看哪里有没问题。大师能不能指点下?
xwhua188 发表于 2012-4-8 12:17 | 显示全部楼层
看了半天,到底是怎么弄的呀?只知道你弄好了,也不说说怎么弄好的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

68

帖子

1

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