历史上的今天
今天是:2024年12月15日(星期日)
2021年12月15日 | ATmega168 标定的片内RC振荡器
2021-12-15 来源:eefocus
校准的ATmega168片内 RC 振荡器提供了固定的 8.0 MHz 的时钟 这是在 3V、25 C 下的标称数值。 器件出厂时CKDIV8熔丝位已经被编程,请参见 P31”系统时钟预分频器” 。按照Table11 对熔丝位 CKSEL 进行编程即可将其作为系统时钟。
选择这个时钟之后就无需外部器件了。复位时硬件将标定字节加载到 OSCCAL 寄存器,自动完成对 RC 振荡器的标定。在3V、25 C 时,这种标定可以提供标称频率 ± 1%的精度。 通过改变 OSCCAL 寄存器,标定可以使振荡器在 7.3 - 8.1 MHz 的范围内的精度达到 ± 1%。
当使用这个振荡器作为系统时钟时,看门狗振荡器继续为看门狗定时器和溢出复位提供时钟。更多的有关标定数据的信息请参见 P259” 校准字节 ” 。

选择了这个振荡器之后,启动时间由熔丝位 SUT确定,如 P28Table12 所示。

振荡器标定寄存器- OSCCAL

· Bits 7..0 – CAL7..0: 振荡器标定数据
将标定数据写入这个地址可以对内部振荡器进行调节以消除由于生产工器频率偏差。这在芯片复位时自动完成。 25°C 时振荡器频率为 8.0 MHz。应用软件可对 该寄存器进行写操作来改变振荡器频率。振荡器频率范围在 7.3 - 8.1 MHz 内标定精度可达到 ±1%以内,频率超出此范围则无法保证。
注意该振荡器用来为 EEPROM与 Flash 的写访问定时,从而对相应的时序产生影响。如果需要对 EEPROM 或 Flash 执行写入操作,不要将频率标定到高于 8.8 MHz。否则对EEPROM 或 Flash 的写操作将会失败。
CAL7位决定振荡器工作范围。将该位置0给出低端频率范围,而将该位置1则给出高端频率范围。这两个频率范围是有重叠的,也就是说 OSCCAL = 0x7F 给出的频率高于OSCCAL = 0x80。
CAL6..0位 用来调节被选中范围内的频率。设置为0x00表示该范围中的最低频率,设置为0x7F表示该范围中的最高频率。 当频率范围在7.3 - 8.1MHz时,CAL6..0中的值增加1频率值增加低于 2%。
上一篇:ATmega168 外部时钟
史海拾趣
|
实例分为两部分,第1部分连续输入数据处理的电路设计是我们的课程设计,有详细的设计过程(分析过程,数据流图,以及状态机,源代码仿真和综合电路图),另一个是老师给的例题,有100多个例子吧,不过只有源代码和题目。希望能给大家做一个参考!!… 查看全部问答> |
|
我先说一下我的需求,就是要在播放影片的画面上面显示影片的码率之类的. 假设现在影片的码率是700kbps,我要在影片的某个位置显示出来,比如说左上角,这个怎么做出来呢? 或者给我指条明路. 谢谢 PS: 现在TCPMP能在我的机器上面跑了,也能正常解码.… 查看全部问答> |
|
功能描述: 用单片机实现传感器检测功能,通过两个按键和一个LED显示模块来实现设置检测阀值的大小,2个按键分别为"加1"和"减1"功能,LED上显示的当前阀值大小.读入的传感器信号与设置的阀值进行比较,达到所设阀值大小输出报警.请 ...… 查看全部问答> |
|
一直从事asp.net开发,对wince开发一无所知。 目前有一个gps设备,需要开发征对此设备的应用程序开发。该设备是wince 5.0操作系统。 我使用的是vs 2008做为开发工具(C#)。 我在vs2008中新建项目-智能设备 右侧仅有智能设备选项,请问我还需要安 ...… 查看全部问答> |
|
现在的问题是,程序无法检测到其中的位数,并做出相应的处理 表象就是:在串口调试助手中输入B****E,无任何返回值 程序如下: #include //工作频率7.3728Mhz #include unsigned ch ...… 查看全部问答> |
|
通常我们加载wince系统,总是编译好eboot然后下载到flash里面,根据菜单提示下载NK。而实际的产品中,可以不用BOOTLOADER,那它是怎么实现系统加载的? 还有个问题,就是OAL的代码也可以完成所有的bootloader的功能,为什么一定要写个bootloader? ...… 查看全部问答> |
|
【求助】想在嵌入式板(S3C2410)用java语言编写程序在LCD上显示图像和视频,我该如何入手? 最近在学习嵌入式,想在嵌入式板(S3C2410)用java语言编写程序在LCD上显示图像和视频,到现在没有一点头绪,不知道从什么地方入手。在嵌入式linux上的java虚拟机用什么?… 查看全部问答> |




