项目中前辈以前用的是一块PIC12C508(4M内置时钟)在GPIO0管脚产生500KHz的5V方波
当时是用的是DIP-8的12C508
现在客户需要把这个频率提高很多
而且最好不改电路板设计,那就还得接着用这个八条管脚的底座、而且没有外置时钟
查了查microchip现在最快主频的8条腿单片机是PIC12F1822,内置时钟下能达到32MHz
对1822不太熟悉,不知道是不是和以前的12C508一样的接法;
怎么才能让1822达到最高速度,仍旧让RA0输出方波、能做到多少MHz呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我说的是那个输出设置位到底是打开有参考时钟输出还是关闭才有,
仿真器上是打开才有输出的,
如果实物是关闭才有那么就是说明仿真器错了,
否则就是手册错误了。
还有那个低压编程,如果打开的话内部复位就会无效!
- #include<pic.h>
- // 内部RC振荡器,看门狗关,上电延时开,外部复位关,代码保护关,数据保护关,低电复位关,时钟输出开,时钟内外切换关,时钟监视器关
- __CONFIG(FOSC_INTOSC & WDTE_OFF & PWRTE_ON & MCLRE_OFF & CP_OFF & CPD_OFF & BOREN_OFF & CLKOUTEN_ON & IESO_OFF & FCMEN_OFF); // CONFIG1
- // 闪存写保护关,PLL关,堆栈溢出复位关,欠压复位低,低压编程关
- __CONFIG(WRT_OFF & PLLEN_OFF & STVREN_OFF & BORV_LO & LVP_OFF); // CONFIG2
复制代码就改了CLKOUTEN_ON,然后就可以了。手册没问题。看来是仿真器的哪里不对头
CLKRCON用的是D0。
CLKOUTEN是个负有效的。俺设了CLKOUTEN_ON后,Config Word 1的bit11就变为1了,此前是0。
总之,谢谢老兄的指点
得到的32MHz的5V“方波”虽然波形不怎么样,但还是能用的。
而且同样的思路,使用16MHz的话,还能指定25%、75%的占空比(32MHz不支持改变占空比)。
挺好用的.......
〉〉 // 闪存写保护关,PLL关,堆栈溢出复位关,欠压复位低,低压编程关
〉〉 __CONFIG(WRT_OFF & PLLEN_OFF & STVREN_OFF & BORV_LO & LVP_OFF); // CONFIG2
PLLEN_OFF可不行,这个必须PLLEN_ON的
否则没有4xPLL给你把8MHz倍频到32MHz去的。
当然,如果你坚持PLLEN_OFF,也可以用SPLL软开关控制PLL功能打开的。
俺是两处都设成1了。
一周热门 更多>