怎么用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条回答
liqiinhit1
1楼-- · 2020-02-09 02:24
我记得不能指定。。。只能看运气了,要是刚好和你原来的引脚一样就爽了
chengzepeng
2楼-- · 2020-02-09 07:05
本帖最后由 chengzepeng 于 2012-9-7 13:47 编辑
nickwolfe 发表于 2012-9-7 09:15
客户用的还行,只能说对那个方波驱动的依赖程度不是很高,几百几千个波形中差了一个波形、可能未造成什么 ...


芯片上唯一的那个时钟输出脚!不可更改!
旧版为时钟/4,也就是指令时钟直接输出,
后来新版的都带了个参考时钟后就可以更改输出分频和占空比了!
如果你要更改引脚那就用主函数那个,
参考时钟的优点是不占用程序资源,只要把那个脚拿来用就可以,
在程序里面只要初始化一下即可!

不过你一个单片机就拿来做个时钟输出就有点浪费了,
还不如弄个数字IC加晶体更省钱省电更划算!
nickwolfe
3楼-- · 2020-02-09 09:10
chengzepeng 发表于 2012-9-6 21:29
一个指令周期就1uS了,
GOTO需要两条指令周期,
总共4条指令周期,

>>因为它的内部时钟最高可以达到32M,
>>也就是8M指令速度,最高速度可以达到2M,

>>16F182x系列还有个参考时钟输出,
>>设置这个可以输出最高和内部时钟1:1,
>>比如设置时钟为8M,输出设置为不分频就会有8M输出!

>>    // 内部RC振荡器,看门狗关,上电延时开,外部复位关,代码保护关,数据保护关,低电复位关,时钟输出开,时钟内外切换关,时钟监视器关
>>    __CONFIG(FOSC_INTOSC & WDTE_OFF & PWRTE_ON & MCLRE_OFF & CP_OFF & CPD_OFF & BOREN_OFF & CLKOUTEN_ON & IESO_OFF & FCMEN_OFF);

查了查PIC12F1822的PDF,发现这个时钟输出还有些矛盾——如果在CONFIG里面指定了那个“CLKOUTEN_ON”,就没法使用“参考时钟输出”功能了!
要使用“参考时钟输出”,必须关上"CLKOUTEN_ON"选项。
否则得到的只是1/4倍主频输出到CLKOUT管脚上。
例如主频为32MHz时、CLKOUT(RA4?)就是8MHz

换句话说,如果关掉CLKOUTEN_ON,另外使用CLKRCON配置的“参考时钟输出”,则可能得到32MHz的输出呢

PDF中相关部分已用红蓝笔圈出,老大看看是不是这么回事儿?
millwood0
4楼-- · 2020-02-09 10:07
the very page you quoted laid it out clearly:

1) clkr's source is system clock, which includes intosc x pll;
2) clkr gets superceded by clkout_en. so in your case, you get 8Mhz with clkout_en, or 32Mhz / clkrdiv.

again, how to solve your problem depends on your problem. i personally like nco.
chengzepeng
5楼-- · 2020-02-09 13:38
 精彩回答 2  元偷偷看……
nickwolfe
6楼-- · 2020-02-09 15:53
chengzepeng 发表于 2012-9-8 14:54
手册有中文版的,
CLKOUTEN位的说法的确很奇怪,按照手册的做法在仿真器确实没信号输出,谁有实物可以试试 ...

用实物测了一下,的确能达到5V 32MHz

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

一周热门 更多>