在看ATmega328P官方的参考手册时,看到系统时钟这一块时,发现ATmega328P有一个管脚可以输出系统时钟,现在我就来验证一下这个功能。 首先看手册的System Clock and Clock Options这一章节可以看出这个详细的说明: 如下图:
然后值得注意的是,要是这个管脚能输出系统时钟,需要配置熔丝位,就是他 CKLOUT值 1,关于熔丝位大家可以理解成一个器件内部硬件的设置,一旦设置,这个功能在程序跑之前就有了,不须要软件的设定。 接下来是哪个管脚呢,根据提示再到CLKO这个关键词,然后搜索找到是PORTB0脚输出时钟。如下图:
在配置 PB0输出时钟频率时,我先说明一下这个板子的时钟来源是由 mEDBG这个仿真模块提供的,所提供的频率为 16M,如下面的说明文档: 板子的电路图也可以看出: 还有我们没对时钟寄存器作任何配置时,系统时钟时默认取自外部的时钟,在文档中有这一说明:
还有一点提醒的是这个芯片最大的外部时钟输入为 20M
下面就来配置熔丝位来是 PB0输出系统时钟的频率吧: 首先我们要进入熔丝的配置位的界面。步奏如下:
我们首先随便打开个程序,点击 debug仿真程序,这是要点击 "Disable debugWIRE and Close" 然后才进入熔丝配置的页面,详细的操作可以看这哥们的帖子: 然后就是进入熔丝配置了
接下来的步奏:
点击完后的如下图:
然后直接点击 Fuses这个选项进入配置。
如上图,大家可以看到有很多熔丝位,这些熔丝位的用法我就不多说了,大家可以自己去翻阅官方的参考手册。 现在把CKOUT这个配置位勾选上,然后点击Program下载,等下载完后就可以用示波器可以看到PB0输出系统时钟的频率了,这里我没有作分频,所以时钟是16M。实验得出的效果也是16M,下面是测试图: |