Overview

AVR仿真器概述

AVR 仿真器是AVR 架构和器件的软件仿真器。 它可以模拟CPU，包括所有的指令、中断和大部分的片上 I/O 模块。 欲知其详细特性，请看仿真器模块 。

AVR 仿真器在 AVR Studio 中的应用是对目标进行调试。用户可以使用常规的调试命令，例如运行、暂停、复位、单步执行、设置断点和变量的观察。AVR 仿真器具有观察I/O端口，存储器单元和寄存器变化的功能。

请注意，仿真器运行时，I/O查看窗口，存储器单元和寄存器窗口都不会更新，并且在运行模式下所有窗口的内容都不能被修改。

欲知该版本的新增功能总览，请看更新日志。

参看

疑难解答

仿真器选项


Simulator Options

仿真器选项

在调试过程中，仿真器选项对话框一直是可利用的。如要打开该对话框，请选中 调试（Debug） 菜单并选择 AVR仿真器选项( AVR Simulator Options )。

仿真器选项对话框有两个窗格， 器件选择 和 激励和记录。


Device selection

器件选择

在 Device selection（器件选择）窗格里(请看以下特征)，有以下选项可供选择：

Device（器件）

所需仿真的器件。该器件的详细信息将显示在窗口的右半部分。如果选择了与原来不同的器件，AVR仿真器将会根据新器件的特性，重新进行配置并且重新装载工程文件。

Frequency（频率）

该选项指定了所需仿真器件的运行速度。这项设置对仿真过程不产生任何影响，该设置仅用于计算I/O视图窗口中的stop watch的数值。

引导加载

如果选中了Enable Boot reset（引导使能复位）单选框，则每次复位后，器件都从引导复位地址开始执行程序。

您可以在引导复位下拉列表中选择引导复位地址。该下拉列表中包含了所用器件可供选择的有效引导复位地址。如果选择中断向量区有效，则这个地址也同时决定了中断向量区的起始地址。

并非所有的器件都支持引导加载。

外部存储器使能

如果选中了Enable external Memory(外部存储器使能) 单选框，那么就可以在AVR Studio中对外部SRAM进行仿真，同时在程序运行中也可以使用该外部SRAM。

如果所选器件不支持外部SRAM，此选项无效。


Stimuli and Logging

激励和记录

在激励和记录（Stimuli and logging）的窗格里，可以很详细地设置器件端口的各种激励及记录。

端口激励

I/O 端口可以从激励文件中获知输入值，下面将对如何设置端口的激励文件进行说明。先在 端口（Port）列表中选择需要的端口并选中激励（Stimuli）复选框。然后可以直接在文件（File）这一栏中输入所用的激励文件的路径和文件名，或者点击浏览 ( [image] ) 按钮选择该文件。最后，单击 添加记录（Add Entry） 按钮。一个新的激励文件就会出现在 Action list 上。若是要去除某个激励文件，在列表中选中该项文件并点击删除记录 （Delete Entry）按钮。

激励值会在激励文件中指定的时钟周期的下一个时钟出现在PIN寄存器里。

激励文件的格式在这里有详细的描述。

记录端口输出值

可以将I/O 端口的输出值记录在一个文件里，下面将对这一功能的设置进行说明。先在 端口（Port）列表中选择需要的端口并选中记录 （Logging）复选框。然后可以直接在文件（File）这一栏中输入所用的激励文件的路径和文件名，或者点击浏览 ( [image] ) 按钮选择该文件。最后，单击 添加记录（Add Entry） 按钮。一个新的激励文件就会出现在 Action list 上。若是要去除某个激励文件，在列表中选中该项文件并点击 删除记录（Delete Entry） 按钮。

选中 To screen 单选框，则端口值除了被记录在记录文件中之外，还被记录在 AVR Studio 的消息（Message）窗口里。

每次端口寄存器的数值有所变化，最新值都会被记录下来。该值可由程序设置，用户也可以通过在I/O窗口，观测（watch）窗口或存储器（memory）窗口修改相应寄存器来设置该值。

记录文件的格式在这里有详细的描述。


Stimuli and Log File Format

激励和记录文件格式

激励文件详细指定了在某个特定时间一个I/O端口的PIN寄存器里的数值。记录文件则记录了I/O端口的PORT寄存器中的数值变化。

激励和记录文件使用的是同一种格式。一个激励/记录文件里有许多行，每一行由两部分组成：时钟周期（cycle number）和数值（value），时钟周期在前，数值在后，当中用冒号相隔。例如，下面这个激励文件中，在第0，9和14个周期内分别设置数值为00，AB和AC。

000000000:00

000000009:AB

000000014:AC

999999999:FF

数值是一个十六进制数，但时钟周期是一个十进制数。时钟周期可以是从1 到 9 的十个阿拉伯数字。但数值必须介于0 和 FF之间。

最后一行必须为

999999999:FF

参看

激励和记录选项


Simulator Modules

仿真器模块

这一小节包含了现有AVR器件中所有I/O模块的概述，以及AVR 仿真器对其支持情况的说明。

参见 疑难解答。

I/O 端口

I/O端口是按照实际器件的特性来仿真的。实际AVR器件标准端口的硬件逻辑会包括1.5个时钟周期的消抖延时。当一个引脚由I/O 模块控制时，读取该引脚的PINx寄存器所得的值是由 I/O 模块产生的。请看有关 I/O 端口的 疑难解答 。

外部中断和引脚电平变化中断

仿真器支持所有的外部中断和引脚电平变化中断。

定时器/计数器

定时器/计数器的仿真一般都是精确的，除非在 疑难解答 部分所列出的某些特殊情况下。

不支持输出比较调制器。

UART 和 USART

请看所有器件上有关UART/USARTs的 疑难解答 。

串行外围接口 （SPI）

支持SPI。

通用串行接口（USI）

不支持USI。

两线串行接口 (TWI)

不支持TWI。

模拟比较器 (AC)

不支持模拟比较器。

模拟数字信号转换器 (ADC)

不支持模拟输入。根据 ADC 的预分频选择位(ADPS)，在经过一段确定的时钟周期后ADIF 标志位被置1。整个 ADC 的中断过程都能被真确仿真。

ADC 数据寄存器 (ADCH/ADCL) 可以人为置1。例如，在 I/O 观测窗口。

LCD 控制器

支持所有自带有LCD控制器的芯片的LCD控制器的仿真。

看门狗（Watch dog）

支持部分芯片的看门狗仿真，详情请参阅 疑难解答。


疑难解答

疑难解答列表主要有两个主要部分组成：第一部分说的是仿真器的总体概况，第二部分描述的是不同器件的个别细节情况。

仿真器总体概况

这一部分叙述的问题适用于所有的 AVR 器件。

不支持的模块

对于TWI，USI 和 模拟外围设备的仿真现暂不支持。但支持所有的指令，中断和其它外围设备。详情请见 仿真器模块 。

寄存器行为

一些寄存器模块无法完全仿真寄存器缓冲情况，也无法完全仿真寄存器所要求的写入顺序，比如TCNT1H/TCNT1L。 由于实际的芯片使用了缓冲，因此真实的情况是，16位寄存器的高八位和低八位是同时写入的。

某些寄存器的位在实际应用中是由写1来清除的，而在仿真过程中却是用写0来清标志位。

EEPROM

EEWE标志位置1时，仿真器可以读写 EEPROM 里的数据。实际应用中经常在读写EEPROM之前先查询EEWE标志位。

外部SRAM

若是在仿真器中使用外部RAM ，必须先在器件选择对话栏中设置相应的选项，之后再重新打开工程文件。

可同时读写区的自编程

在FLASH程序存储器的任何部分都能够进行可同时读写区的自编程。故无需考虑可同时读写区和非可同时读写区的边界问题。

休眠模式

仿真器只支持空闲休眠模式。

看门狗（Watchdog）

不支持看门狗仿真。参见器件详细的疑难解答。

当发生看门狗复位时，程序可能不会停在复位向量的断点处。

I/O 端口

可以向引脚寄存器写值，这个值将被保存在PIN寄存器中。

低于八位的端口在I/O仿真模块里还是显示为八位，实际中没有的那几位没有被屏蔽掉，用户照样可以在仿真中使用，而事实上用户在实际应用中是不能够使用器件没有的I/O端口。这点在仿真中需要注意。

定时器/计数器

所有器件的16位定时器/计数器的PWM，预分频器和输出比较功能，都不能仿真。输出比较寄存器没有相应的缓冲。

定时器的在异步模式下不支持异步状态寄存器 (ASSR)的仿真。这是因为缺少外部时钟。

UART/USART

UART/USART 的 UDR 寄存器只能由应用程序修改。不能通过激励文件或修改I/O窗口等来得到输入值。

I/O 终端窗口无效。AVR Studio 3.xx 具有此项功能。

个别器件问题

以下器件有个别疑难解答。

AT86RF401

AT90CAN128

AT90PWM2/3

AT90S1200

AT90S2313

AT90S2323

AT90S2343

AT90S4414

AT90S4433

AT90S4434

AT90S8515

AT90S8535

ATmega103

ATmega128

ATmega16

ATmega161

ATmega162

ATmega163

ATmega165

ATmega169

ATmega2560/2561

ATmega32

ATmega323

ATmega325

ATmega3250

ATmega329

ATmega3290

ATmega48/88/168

ATmega64
ATmega644

ATmega645

ATmega6450

ATmega649

ATmega6490

ATmega8

ATmega8515

ATmega8535

ATtiny11

ATtiny13

ATtiny15

ATtiny22

ATtiny24

ATtiny26

ATtiny28

ATtiny25/45/85

ATtiny2313


Notes for AT86RF401

AT86RF401的注意事项

不支持AT86RF401 的I/O 模块仿真。


Notes for AT90CAN128

AT90CAN128的注意事项

CAN I/O模块的仿真实现是通过AVR Studio的一个插件完成的。如果没有安装这个插件，AVR 仿真器会输出一个错误信息 "CAN (AVRSimIOCAN00.SimIOCAN00) not supported.（不支持CAN （AVRSimIOCAN00.SimIOCAN00））" 这个插件可以从 Atmel 的网站 http://www.atmel.com/products/avr/上下载得到。

向 UCSRnC 写入值时，除非UBRRnH的第7位为1，否则该值将被复制到UBRRnH。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSRnC，再写UBRRnH。

MCUCR 寄存器中的JTD位必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中JTD 位可以直接写入。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。


Notes for AT90PWM2/3

AT90PWM2/3的注意事项

模拟比较器，功率级控制器和DAC不能被仿真。

向UCSRC写入值，若是UBRRH的第7位不为1，则该值将被同时复制到UBRRH。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSRC，再写UBRRH。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。


Notes for AT90S1200

AT90S1200的注意事项

不支持看门狗的仿真。


Notes for AT90S2313

AT90S2313的注意事项

不支持看门狗的仿真。


Notes for AT90S2323

AT90S2323的注意事项

不支持看门狗的仿真。


Notes for AT90S2343

AT90S2343的注意事项

不支持看门狗的仿真。


Notes for AT90S4414

AT90S4414的注意事项

不支持看门狗的仿真。


Notes for AT90S4433

AT90S4433的注意事项

不支持看门狗的仿真。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。


Notes for AT90S4434

AT90S4434的注意事项

不支持看门狗的仿真。


Notes for AT90S8515

AT90S8515的注意事项

不支持看门狗的仿真。


Notes for AT90S8535

AT90S8535的注意事项

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

不支持看门狗的仿真。


Notes for ATmega103

ATmega103的注意事项

不支持看门狗的仿真。


Notes for ATmega128

ATmega128的注意事项

向UCSRnC写入值，若是UBRRnH的第7位不为1，则该值将被同时复制到UBRRnH。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSRnC，再写UBRRnH。

MCUCR 寄存器中的JTD位 必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。


Notes for ATmega16

ATmega16的注意事项

USART 的 UBRRH 和 UCSRC 两个寄存器共用同一个 I/O 地址。向其中任何一个寄存器写值，都会使两个寄存器包含新值，这与URSEL 中的值无关。正如数据手册上说的那样，我们无法读取这些寄存器的值。

MCUCR 寄存器中的JTD位必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。


Notes for ATmega161

ATmega161的注意事项

不支持看门狗的仿真。


Notes for ATmega162

ATmega162的注意事项

USART0 和 USART1 的 UBRRnH 和 UCSRnC 两个寄存器共用同一个 I/O 地址。向其中任何一个寄存器写值，都会使两个寄存器包含新值，这与URSEL 中值无关。正如数据手册上说的那样，我们无法读取这些寄存器的值。

MCUCR 寄存器中的JTD位 必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。


Notes for ATmega163

ATmega163的注意事项

不支持看门狗的仿真。


Notes for ATmega2560/2561

ATmega2560/2561的注意事项

向UCSRnC写入值，若是UMSELn1不为1，则该值将被同时复制到UBRRnH。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSRnC，再写UBRRnH。

MCUCR 寄存器中的JTD位 必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

定时器/计数器2

  • 输出比较引脚和 FOC 无效。

  • 预分频器的复位不能正常工作。

  • OCR2A/B 寄存器在PWM模式下没有缓冲功能。


Notes for ATmega164/324/644

ATmega164/324/644的注意事项

向UCSRnC写入值，若是UMSELn1不为1，则该值将被同时复制到UBRRnH。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSRnC，再写UBRRnH。

MCUCR 寄存器中的JTD位 必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。

不支持ADC 降噪功能。将 ADIF 标志位置高也不会从休眠模式中唤醒 CPU 。

定时器/计数器2

  • 输出比较引脚和 FOC 无效。

  • 预分频器的复位不能正常工作。

  • OCR2A/B 寄存器在PWM模式下没有缓冲功能。


Notes for ATmega165

ATmega165的注意事项

向UCSRC写入值，若是UBRRH的第7位不为1，则该值将被同时复制到UBRRH。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSRC，再写UBRRH。

MCUCR 寄存器中的JTD位 必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

不支持看门狗的仿真。


Notes for ATmega169

ATmega169的注意事项

向UCSRC写入值，若是UBRRH的第7位不为1，则该值将被同时复制到UBRRH。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSRC，再写UBRRH。

MCUCR 寄存器中的JTD位 必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

不支持看门狗的仿真。


Notes for ATmega32

ATmega32的注意事项

USART 的 UBRRH 和 UCSRC 两个寄存器共用同一个 I/O 地址。向其中任何一个寄存器写值，都会使两个寄存器包含新值，这与URSEL 中值无关。正如数据手册上说的那样，我们无法读取这些寄存器的值。

MCUCR 寄存器中的JTD位 必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。


Notes for ATmega323

ATmega323的注意事项

USART 的 UBRRH 和 UCSRC 两个寄存器共用同一个 I/O 地址。向其中任何一个寄存器写值，都会使两个寄存器包含新值，这与URSEL 中值无关。正如数据手册上说的那样，我们无法读取这些寄存器的值。


Notes for ATmega325

ATmega325的注意事项

向UCSR0C写入值，若是UBRR0H的第7位不为1，则该值将被同时复制到UBRR0H。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSR0C，再写UBRR0H。

MCUCR 寄存器中的JTD位 必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。

不支持ADC 降噪功能。将 ADIF 标志位置高也不会从休眠模式中唤醒 CPU 。

不支持看门狗的仿真。


Notes for ATmega3250

ATmega3250的注意事项

向UCSR0C写入值，若是UBRR0H的第7位不为1，则该值将被同时复制到UBRR0H。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSR0C，再写UBRR0H。

MCUCR 寄存器中的JTD位 必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

不支持看门狗的仿真。


Notes for ATmega329

ATmega329的注意事项

向UCSR0C写入值，若是UBRR0H的第7位不为1，则该值将被同时复制到UBRR0H。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSR0C，再写UBRR0H。

MCUCR 寄存器中的JTD位必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

不支持看门狗的仿真。


Notes for ATmega3290

ATmega3290的注意事项

向UCSR0C写入值，若是UBRR0H的第7位不为1，则该值将被同时复制到UBRR0H。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSR0C，再写UBRR0H。

MCUCR 寄存器中的JTD位必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

不支持看门狗的仿真。


Notes for ATmega48/88/168

ATmega48/88/168的注意事项

向UCSR0C写入值，若是UMSEL01不为1，则该值将被同时复制到UBRR0H。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSR0C，再写UBRR0H。

不支持ADC降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

定时器/计数器2

  • 输出比较引脚 和 FOC 无效。

  • 预分频复位不能正常运转。

  • OCR2A/B 寄存器在 PWM 模式下不具有缓冲功能。


Notes for ATmega64

ATmega64的注意事项

向UCSRnC写入值，若是UBRRnH的第7位不为1，则该值将被同时复制到UBRRnH。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSRnC，再写UBRRnH。

MCUCR 寄存器中的JTD位必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。


Notes for ATmega645

ATmega645的注意事项

向UCSR0C写入值，若是UBRR0H的第7位不为1，则该值将被同时复制到UBRR0H。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSR0C，再写UBRR0H。

MCUCR 寄存器中的JTD位必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

不支持看门狗的仿真。


Notes for ATmega6450

ATmega6450的注意事项

向UCSR0C写入值，若是UBRR0H的第7位不为1，则该值将被同时复制到UBRR0H。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSR0C，再写UBRR0H。

MCUCR 寄存器中的JTD位必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

不支持看门狗的仿真。


Notes for ATmega649

ATmega649的注意事项

向UCSR0C写入值，若是UBRR0H的第7位不为1，则该值将被同时复制到UBRR0H。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSR0C，再写UBRR0H。

MCUCR 寄存器中的JTD位 必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

不支持看门狗的仿真。


Notes for ATmega6490

ATmega6490的注意事项

向UCSR0C写入值，若是UBRR0H的第7位不为1，则该值将被同时复制到UBRR0H。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSR0C，再写UBRR0H。

MCUCR 寄存器中的JTD位必须被设置为期望值的两倍，并在四个时钟周期内完成其数值的改变。在仿真器中 JTD 位可以直接写入。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

不支持看门狗的仿真。


Notes for ATmega8

ATmega8的注意事项

USART 的 UBRRH 和 UCSRC 两个寄存器共用同一个 I/O 地址。向其中任何一个寄存器写值，都会使两个寄存器包含新值，这与URSEL 中值无关。正如数据手册上说的那样，我们无法读取这些寄存器的值。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

不支持看门狗的仿真。


Notes for ATmega8515

ATmega8515的注意事项

USART 的 UBRRH 和 UCSRC 两个寄存器共用同一个 I/O 地址。向其中任何一个寄存器写值，都会使两个寄存器包含新值，这与URSEL 中值无关。正如数据手册上说的那样，我们无法读取这些寄存器的值。

不支持看门狗的仿真。


Notes for ATmega8535

ATmega8535的注意事项

USART 的 UBRRH 和 UCSRC 两个寄存器共用同一个 I/O 地址。向其中任何一个寄存器写值，都会使两个寄存器包含新值，这与URSEL 中值无关。正如数据手册上说的那样，我们无法读取这些寄存器的值。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

不支持看门狗的仿真。


Notes for ATtiny11

ATtiny11的注意事项

不支持看门狗的仿真。


Notes for ATtiny13

ATtiny13的注意事项

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。


Notes for ATtiny15

ATtiny15的注意事项

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

不支持看门狗的仿真。

定时器/计数器1

当使用定时器/计数器1快速外围时钟(PCK)时，若OCR1A和OCR1B设置的值很小，我们有可能注意不到输出比较引脚上的电平变化

人为修改 OCR1B 和 OCR1A 将会更新 I/O 窗口，但实际上并没有改变定时器/计数器1的寄存器里的数值。

不可以由用户来关闭 TOV1 或 OCF1。


Notes for ATtiny22

ATtiny22的注意事项

不支持看门狗的仿真。


Notes for ATtiny24

ATtiny24的注意事项

仿真器能够仿真端口B (PB3/PIN3/DDR3)的第三位。但在实际器件中端口B的的第3位与复位位共用同一个引脚，且仅当设置了熔丝位RSTDISBL(复位功能失效后，该仿真才有效。

不支持看门狗的仿真。


Notes for ATtiny26

ATtiny26的注意事项

不能用PLL的时钟来仿真定时器/计数器1。虽然可以仿真PLL使能过程，但使用PLL后，器件运行速度仍与系统时钟相同。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

不支持看门狗的仿真。


Notes for ATtiny28

ATtiny28的注意事项

对于ATtiny28只能提供基本支持。该器件所具有的特殊外围器件单元仍无法为仿真器仿真。

定时器/计数器

不具备以下特性：

  • PA2 溢出输出和溢出输出模式

  • 调制所需的时钟信号的产生

端口B

不具备以下特性：

  • 低电平输入中断

调制器

不能仿真调制器。

看门狗

不支持看门狗的仿真。


Notes for ATtiny45

ATtiny25/45/85的注意事项

当前在AVR仿真器中仍不支持定时器/计数器1，包括Dead Timer Generator 功能仿真。

不支持ADC 降噪功能。将ADIF标志位置高也不会将CPU从休眠模式中唤醒。

不支持看门狗的仿真。


Notes for ATtiny2313

ATtiny2313的注意事项

向UCSR0C写入值，若是UMSEL01不为1，则该值将被同时复制到UBRR0H。但如果这些寄存器享有独立的存储空间，则以上所说的情况将不会发生。正常的工作流程是先写UCSR0C，再写UBRR0H。

不支持看门狗的仿真。


Change History

更新日志

AVR Studio 4.11 SP3中的新增功能

  • 新增支持的器件：ATmega644, ATtiny25, ATtiny85。

AVR Studio 4.11 SP2中的新增功能

  • 新增支持的器件： ATmega645, ATmega6450, ATmega649, ATmega6490, ATtiny24。

  • 新增对ATtiny28部分模块的支持。

  • 缺陷修正：当使用ATmega2560/2561的十六位寄存器时会产生不明原因的看门狗复位。

  • 缺陷修正：对于器件ATtiny11/ATtiny12/ATtiny15/ATtiny28/AT90S1200会产生不支持指令LD Rd,Z和ST Z,Rr的错误报告。

  • 缺陷修正：ATtiny2313 定时器/计数器1中断标志位可能会被清除从而使产生的中断将不被响应。

AVR Studio 4.11中的新增功能

  • 新增支持的器件：AT90PWM2，AT90PWM3，ATmega2560，ATmega2561 和 ATtiny45。

  • ATtiny26：对于定时器/计数器1的多种缺陷的修正。

  • ATtiny15：对于定时器/计数器1的多种缺陷的修正。

  • 对于绝大多数器件的定时器/计数器0多种缺陷的修正：可以对周期校正并有较为完善的功能。

  • 输出比较被禁用时的，定时器清端口位的有关问题的改进。

  • 向引脚写入值从而触发相应的端口寄存器的新器件：AT90CAN128，ATmega165，169，325，329，3250，3290，48/88/168，649，ATtiny13 和 ATtiny2313。

  • 新增对 IVSEL 标志位的支持。

  • ATmega8515：校正了定时器/计数器0的预分频器。

  • 不支持的指令将不被执行。比如，在ATtiny13中指令MUL是无效的。

  • 中断周期计数校正。

  • ATtiny13：ACSR的 第7位 (ACD)无法被置1

  • ATmega8： 最快速度修正和缺省中断向量补充。

以前版本中的更新

AVR Studio 4.10中的新增功能

  • ATmega128的快速PWM (WGM 14)功能在停止前会先向ICR+1

  • ATtiny13, ATtiny2313, ATmega48/88/168 的定时器0：

    • 预分频器的缺陷修正

    • 溢出中断的缺陷修正

  • m48，m88 和 m168中的外部中断设置缺陷修正。

  • ATtiny13的引脚电平跳变中断设置缺陷修正。

AVR Studio 4.09中的新增功能

  • 补充支持更新ATmega48/88/168。

  • 补充支持ATmega329。

  • 对 ATmega128 定时器1 和 定时器3的缺陷修正：

    • 预分频因子校正和运行。

    • 输出比较中断A, B和C和标志位的设置校正。

    • 无法用写零来将 OCF1/3C 清零。

    • 输出比较C可以触发引脚 B的第 7 位。

    • FOC， 通道A，B和C的设置校正。

    • CTC 模式下的触发校正。

    • 输入捕捉标志位和中断处理的校正。

    • 通道A，B 和C的输出比较触发的校正。

    • 预分频器复位校正。