怎么用PIC12F1822产生最高频率的5V方波啊?

2020-02-07 09:41发布

项目中前辈以前用的是一块PIC12C508(4M内置时钟)在GPIO0管脚产生500KHz的5V方波
当时是用的是DIP-8的12C508

现在客户需要把这个频率提高很多

而且最好不改电路板设计,那就还得接着用这个八条管脚的底座、而且没有外置时钟

查了查microchip现在最快主频的8条腿单片机是PIC12F1822,内置时钟下能达到32MHz

对1822不太熟悉,不知道是不是和以前的12C508一样的接法;

怎么才能让1822达到最高速度,仍旧让RA0输出方波、能做到多少MHz呢?





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
25条回答
chengzepeng
1楼-- · 2020-02-09 20:42
nickwolfe 发表于 2012-9-9 14:36
用实物测了一下,的确能达到5V 32MHz

仿真看不到......奇怪。

我说的是那个输出设置位到底是打开有参考时钟输出还是关闭才有,
仿真器上是打开才有输出的,
如果实物是关闭才有那么就是说明仿真器错了,
否则就是手册错误了。

还有那个低压编程,如果打开的话内部复位就会无效!
  1. #include<pic.h>
  2. // 内部RC振荡器,看门狗关,上电延时开,外部复位关,代码保护关,数据保护关,低电复位关,时钟输出开,时钟内外切换关,时钟监视器关
  3. __CONFIG(FOSC_INTOSC & WDTE_OFF & PWRTE_ON & MCLRE_OFF & CP_OFF & CPD_OFF & BOREN_OFF & CLKOUTEN_ON & IESO_OFF & FCMEN_OFF);        // CONFIG1

  4. // 闪存写保护关,PLL关,堆栈溢出复位关,欠压复位低,低压编程关
  5. __CONFIG(WRT_OFF & PLLEN_OFF & STVREN_OFF & BORV_LO & LVP_OFF);        // CONFIG2
复制代码
nickwolfe
2楼-- · 2020-02-10 00:01
本帖最后由 nickwolfe 于 2012-9-9 15:39 编辑
chengzepeng 发表于 2012-9-9 14:51
我说的是那个输出设置位到底是打开有参考时钟输出还是关闭才有,
仿真器上是打开才有输出的,
如果实物是 ...


就改了CLKOUTEN_ON,然后就可以了。手册没问题。看来是仿真器的哪里不对头

CLKRCON用的是D0。

CLKOUTEN是个负有效的。俺设了CLKOUTEN_ON后,Config Word 1的bit11就变为1了,此前是0。

总之,谢谢老兄的指点

得到的32MHz的5V“方波”虽然波形不怎么样,但还是能用的。

而且同样的思路,使用16MHz的话,还能指定25%、75%的占空比(32MHz不支持改变占空比)。

挺好用的.......
nickwolfe
3楼-- · 2020-02-10 04:33
chengzepeng 发表于 2012-9-9 14:51
我说的是那个输出设置位到底是打开有参考时钟输出还是关闭才有,
仿真器上是打开才有输出的,
如果实物是 ...

〉〉    // 闪存写保护关,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了。
chengzepeng
4楼-- · 2020-02-10 05:06
 精彩回答 2  元偷偷看……
蓦然回首;
5楼-- · 2020-02-10 07:09
我只想弱弱的问一句PIC12F1822可以用C语言来写程序吗,因为我不喜欢汇编
蓦然回首;
6楼-- · 2020-02-10 08:38
我只想弱弱的问一句PIC12F1822可以用C语言来写程序吗,因为我不喜欢汇编

一周热门 更多>