深入剖析Atmel ATmega64(L)微控制器:特性、应用与问题解决

电子说

1.4w人已加入

描述

深入剖析Atmel ATmega64(L)微控制器:特性、应用与问题解决

在嵌入式系统开发领域,微控制器是核心组件之一。Atmel ATmega64(L)微控制器凭借其高性能、低功耗等特性,在众多应用场景中得到广泛应用。今天,我们就来详细了解一下这款微控制器。

文件下载:ATMEGA64-16AC.pdf

一、ATmega64(L)的核心特性

1. 高性能低功耗的AVR 8位微控制器

ATmega64采用先进的RISC架构,拥有130条强大指令,多数指令可在单时钟周期内执行。它具备32个8位通用工作寄存器和外设控制寄存器,全静态操作模式,在16 MHz时钟频率下,吞吐量可达16 MIPS,还集成了片上2周期乘法器。这种架构使得它在处理复杂任务时高效且节能,让开发者在优化功耗和处理速度之间有更多的选择。

2. 高耐久性非易失性存储器

  • 大容量存储:拥有64 Kbytes的系统内可重编程闪存程序存储器、2 Kbytes EEPROM和4 Kbytes内部SRAM。
  • 高读写周期:闪存的写/擦除周期可达10,000次,EEPROM可达100,000次。
  • 数据保留:在85°C环境下数据可保留20年,25°C环境下可保留100年。
  • 可选引导代码区:具备独立锁定位,支持系统内编程,可实现真正的边读边写操作,还拥有高达64 Kbytes的可选外部内存空间,并设有编程锁以保障软件安全。

3. JTAG接口

符合IEEE std. 1149.1标准,具备边界扫描功能,提供广泛的片上调试支持,可通过该接口对闪存、EEPROM、熔丝和锁定位进行编程。这对于开发过程中的调试和程序烧录提供了极大的便利。

4. 丰富的外设特性

  • 定时器/计数器:有两个8位定时器/计数器和两个扩展的16位定时器/计数器,每个都有独立的预分频器、比较模式和捕获模式,还有独立振荡器的实时计数器。
  • PWM通道:提供两个8位PWM通道和6个可编程分辨率从1到16位的PWM通道。
  • ADC:8通道、10位ADC,包括8个单端通道、7个差分通道和2个可编程增益(1x、10x、200x)的差分通道。
  • 通信接口:具备面向字节的两线串行接口、双可编程串行USART、主/从SPI串行接口。
  • 其他特性:可编程看门狗定时器、片上模拟比较器。

5. 特殊微控制器特性

  • 复位与检测:具备上电复位和可编程欠压检测功能。
  • 振荡器:内部校准RC振荡器,可提供稳定的时钟源。
  • 中断源:有外部和内部中断源,支持六种睡眠模式,包括空闲、ADC降噪、省电、掉电、待机和扩展待机模式,可根据不同的应用场景选择合适的模式以降低功耗。
  • 时钟频率选择:软件可选择时钟频率,还具备ATmega103兼容模式,可通过熔丝选择。

6. I/O和封装

拥有53个可编程I/O线,提供64引脚TQFP和64焊盘QFN/MLF封装,方便不同的应用需求。

7. 工作电压和速度等级

  • 工作电压:Atmel ATmega64L的工作电压为2.7V - 5.5V,Atmel ATmega64为4.5V - 5.5V。
  • 速度等级:ATmega64L的速度等级为0 - 8 MHz,ATmega64为0 - 16 MHz。

二、ATmega64(L)的应用与开发支持

ATmega64将8位RISC CPU与系统内自编程闪存集成在一个单片芯片上,为许多嵌入式控制应用提供了高度灵活且经济高效的解决方案。同时,它还得到了一套完整的程序和系统开发工具的支持,包括C编译器、宏汇编器、程序调试器/模拟器、在线仿真器和评估套件等。这使得开发者能够更加便捷地进行开发和调试工作。

三、ATmega103兼容性

通过编程M103C熔丝,ATmega64可以与ATmega103在RAM、I/O引脚和中断向量方面兼容。但需要注意的是,在这种兼容模式下,ATmega64的一些新特性将不可用,例如只有一个USART(仅异步模式)、一个16位定时器/计数器(带两个比较寄存器)、不支持两线串行接口等。

四、引脚描述

详细介绍了各个引脚的功能,如VCC为数字电源电压,GND为接地,不同的端口(Port A - Port G)具备不同的功能,部分端口还可作为特殊功能引脚使用。同时,还介绍了RESET、XTAL1、XTAL2等引脚的作用。

五、资源与订购信息

在http://www.atmel.com/avr上可下载全面的开发工具、应用笔记和数据手册。订购信息方面,提供了不同速度、电源电压、封装和操作范围的产品选项,以满足不同用户的需求。

六、常见问题及解决方法

1. 首次模拟比较器转换可能延迟

当设备由缓慢上升的(V_{CC})供电时,部分设备的首次模拟比较器转换时间会比预期长。解决方法是在设备上电或复位后,在首次转换前先禁用再启用模拟比较器。

2. 异步定时器写寄存器时可能丢失中断

当异步定时器/计数器寄存器(TCNTx)为0x00时,写入同步定时器时钟的定时器寄存器会导致中断丢失。解决方法是在写入异步定时器控制寄存器(TCCRx)、异步定时器计数器寄存器(TCNTx)或异步输出比较寄存器(OCRx)之前,确保异步定时器/计数器寄存器的值既不是0xFF也不是0x00。

3. 更改XDIV寄存器需要稳定时间

在XDIV寄存器设置使源时钟频率增加超过2%后,设备可能会错误执行后续部分指令。解决方法是在更改频率后执行8条NOP指令,具体步骤为:先清除SREG寄存器中的I位,设置XDIV寄存器的新预分频因子,执行8条NOP指令,最后设置SREG中的I位。

4. 更改OSCCAL寄存器需要稳定时间

与更改XDIV寄存器类似,在OSCCAL寄存器设置使源时钟频率增加超过2%后,也可能出现指令执行错误的问题,解决方法与更改XDIV寄存器相同。

5. IDCODE屏蔽TDI输入数据

JTAG指令IDCODE工作不正常,在Update - DR期间,后续设备的数据会被全1替换。如果ATmega64是扫描链中的唯一设备,该问题不可见。可通过发出IDCODE指令或进入TAP控制器的Test - Logic - Reset状态选择ATmega64的设备ID寄存器,在读取边界扫描链中前一个设备的设备ID寄存器时,向ATmega64发出BYPASS指令。如果需要同时捕获边界扫描链中所有设备的设备ID,ATmega64必须是链中的第一个设备。

6. 使用ST或STS设置EERE位读取EEPROM会触发意外中断请求

解决方法是始终使用OUT或SBI在EECR中设置EERE。

总之,Atmel ATmega64(L)微控制器以其丰富的特性和强大的功能,为嵌入式系统开发提供了一个优秀的选择。但在使用过程中,开发者需要了解其特性、兼容性和可能出现的问题,并掌握相应的解决方法,以确保系统的稳定运行。你在使用ATmega64(L)过程中遇到过哪些有趣的问题呢?欢迎在评论区分享。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分