(精)atmega16寄存器笔记整理(4)

2019-04-22 09:20

(4)异步状态寄存器ASSR

bit7 – bit6 – bit5 – bit4 – bit3 AS2 bit2 TCN2UB bit1 OCR2UB bit0 TCR2UB AS2: 异步 T/C2

AS2为\时T/C2由I/O时钟clkI/O驱动;AS2为\时T/C2由连接到TOSC1引脚的晶体振荡

器驱动。改变AS2 有可能破坏TCNT2、OCR2 与TCCR2 的内容。

TCN2UB: T/C2 更新中

T/C2工作于异步模式时,写TCNT2将引起TCN2UB置位。当TCNT2从暂存寄存器更新完毕后 TCN2UB 由硬件清零。TCN2UB 为0表明TCNT2 可以写入新值了。

OCR2UB: 输出比较寄存器2 更新中

T/C2工作于异步模式时,写OCR2将引起OCR2UB置位。当OCR2从暂存寄存器更新完毕后OCR2UB 由硬件清零。OCR2UB 为0 表明OCR2 可以写入新值了。

TCR2UB: T/C2 控制寄存器更新中

T/C2工作于异步模式时,写TCCR2将引起TCR2UB置位。当TCCR2从暂存寄存器更新完毕后TCR2UB 由硬件清零。TCR2UB 为0 表明TCCR2 可以写入新值了。

如果在更新忙标志置位的时候写上述任何一个寄存器都将引起数据的破坏,并引发不必要的中断。 读取TCNT2、OCR2 和TCCR2 的机制是不同的。读取TCNT2 得到的是实际的值,而OCR2 和TCCR2 则是从暂存寄存器中读取的。

定时器/ 计数器2 的异步操作T/C2 工作于异步模式时要考虑如下几点:

警告:在同步和异步模式之间的转换有可能造成TCNT2、OCR2 和TCCR2 数据的损毁。 安全的步骤应该是:

",. 清零OCIE2 和TOIE2 以关闭T/C2 的中断 ",. 设置AS2 以选择合适的时钟源

",. 对TCNT2、OCR2 和TCCR2 写入新的数据 ",. 切换到异步模式:等待TCN2UB、OCR2UB 和TCR2UB 清零 ",. 清除T/C2 的中断标志 ",. 需要的话使能中断

",. 振荡器最好使用32.768 kHz手表晶振。给TOSC1 提供外部时钟,可能会造成T/C2 工作错误。系统主时钟必须比晶振高4 倍以上。 ",. 写TCNT2,OCR2和TCCR2时数据首先送入暂存器,两个TOSC1时钟正跳变后才锁存到对应到的寄存器。

在数据从暂存器写入目的寄存器之前不能执行新的数据写入操作。3 个寄存器具有各自独立的暂存器,因此写TCNT2 并不会干扰OCR2 的写操作。异步状态寄存器ASSR 用来检查数据是否已经写入到目的寄存器。为0则MCU 就进入了休眠模式,那么比较匹配中断永远不会发生, MCU 也永远无法唤醒了。 ",. 如果要用T/C2作为省电模式或扩展Standby模式的唤醒条件,必须注意重新进入这些休眠模式的过程。中

断逻辑需要一个TOSC1 周期进行复位。如果从唤醒到重新进入休眠的时间小于一个TOSC1 周期,中断将不再发生,器件也无法唤醒。如果用户怀疑自己程序是否满足这一条件,可以采取如下方法: ",. 对TCCR2、TCNT2 或OCR2 写入合适的数据 ",. 等待ASSR 相应的更新忙标志清零 ",. 进入省电模式或扩展Standby 模式 ",. 若选择了异步工作模式,T/C2 的 32.768 kHz 振荡器将一直工作,除非进入掉电模式 或 Standby 模式。用户应该注意,此振荡器的稳定时间可能长达1 秒钟。因此,建议用户在器件上电复位,或从掉电/Standby

模式唤醒时至少等待1 秒钟后再使用T/C2。同时,由于启动过程时钟的不稳定性,唤醒时所有的T/C2 寄存器的内容都可能不正确,不论使用的是晶体还是外部时钟信号。用户必须重新给这些寄存器赋值。 ",. 使用异步时钟时省电模式或扩展Standby 模式的唤醒过程:中断条件满足后,在下一个定时器时钟唤醒过程

启动。也就是说,在处理器可以读取计数器的数值之前计数器至少又累加了一个时钟。唤醒后MCU 停止4 个时钟,接着执行中断服务程序。中断服务程序结束之后开始执行SLEEP 语句之后的程序。

",. 从省电模式唤醒之后的短时间内读取TCNT2 可能返回不正确的数据。因为TCNT2 是由异步的TOSC 时钟驱动的,而读取TCNT2 必须通过一个与内部I/O 时钟同步的寄存器来完成。同步发生于每个TOSC1 的上

升沿。从省电模式唤醒后I/O 时钟重新激活,而读到的TCNT2 数值为进入休眠模式前的值,直到下一个TOSC1 上升沿的到来。从省电模式唤醒时TOSC1 的相位是完全不可预测的,而且与唤醒时间有关。因此,读取TCNT2 的推荐序列为:

",. 写一个任意数值到OCR2 或TCCR2 ",. 等待相应的更新忙标志清零

",. 读TCNT2 ",. 在异步模式下,中断标志的同步需要3 个处理器周期加一个定时器周期。在处理器可以读取引起中断标志置位

的计数器数值之前计数器至少又累加了一个时钟。输出比较引脚的变化与定时器时钟同步,而不是处理器时钟。

(5)特殊功能IO寄存器SFIOR bit7 bit6 bit5 ADTS2 ADTS1 ADTS0

PSR2: 预分频复位T/C2

当该位置1, T/C2 预分频器复位。操作完成后,该位被硬件清零。该位写0 无效。若内部CPU 时钟作为T/C2 时钟,该位读为0。当T/C2 工作在异步模式时,直到预分频器复位该位保持为1。

bit4 – bit3 ACME bit2 PUD bit1 PSR2 bit0 PSR10 三、串行外设接口SPI

1. SPI 控制寄存器SPCR

bit7 SPIE bit6 SPE bit5 bit4 DORD MSTR bit3 CPOL bit2 CPHA bit1 SPR1 bit0 SPR0 SPIE: 使能SPI 中断

置位后,只要SPSR 寄存器的SPIF 和SREG 寄存器的全局中断使能位置位,就会引发SPI 中断。 SPE: 使能SPI

SPE 置位将使能SPI。进行任何SPI 操作之前必须置位SPE。

DORD: 数据次序

DORD 置位时数据的LSB 首先发送;否则数据的MSB 首先发送。

MSTR: 主/ 从选择 MSTR置位时选择主机模式,否则为从机。如果MSTR为\,SS配置为输入,但被拉低,则MSTR 被清零,寄存器SPSR 的SPIF 置位。用户必须重新设置MSTR 进入主机模式。

CPOL: 时钟极性

CPOL 置位表示空闲时SCK 为高电平;否则空闲时SCK 为低电平。 CPOL 功能 CPOL 0 1 起始沿结束沿 上升沿下降沿 下降沿上升沿 CPOL 0 1 SPR1, SPR0: SPI 时钟速率选择1 与0

确定主机的SCK 速率。SPR1 和SPR0 对从机没有影响。SCK 和振荡器的时钟频率fosc 关系如下表所示:

SCK 和振荡器频率的关系 SPI2X 0 0 0 0 1 1 1 1 SPR1 0 0 1 1 0 0 1 1 SPR0 0 1 0 1 0 1 0 1 SCK fosc/4 fosc/16 fosc/64 fosc/128 fosc/2 fosc/8 fosc/32 fosc/64

2.SPI 状态寄存器SPSR

bit7 SPIF bit6 WCOL bit5 – bit4 – bit3 – bit2 – bit1 – bit0 SPI2X SPIF: SPI 中断标志

串行发送结束后,SPIF 置位。若此时寄存器SPCR 的SPIE 和全局中断使能位置位,SPI中断即产生。如果SPI 为主机, SS 配置为输入,且被拉低, SPIF 也将置位。进入中断服务程序后SPIF自动清零。或者可以通过先读SPSR,紧接着访问SPDR来对SPIF清零。

WCOL: 写碰撞标志 在发送当中对SPI 数据寄存器SPDR写数据将置位WCOL。WCOL可以通过先读SPSR,紧接着访问

SPDR 来清零。

Bit 5..1 – Res: 保留 保留位,读操作返回值为零。

SPI2X: SPI 倍速

置位后SPI 的速度加倍。若为主机,则SCK 频率可达CPU 频率的一半。若为从机,只能保证fosc /4。 ATmega16的SPI接口同时还用来实现程序和EEPROM的下载和上载。

3. SPI 数据寄存器SPDR

bit7 bit6 bit5 MSB bit4 bit3 bit2 bit1 LSB bit0 SPI 数据寄存器为读/写寄存器,用来在寄存器文件和SPI移位寄存器之间传输数据。写寄存器将启动数据传输,读寄存器将读取寄存器的接收缓冲器。

4.数据模式

相对于串行数据, SCK 的相位和极性有4 种组合。CPHA 和CPOL 控制组合的方式。SPI数据传输格式。每一位数据的移出和移入发生于SCK不同的信号跳变沿,以保证有足够的时间使数据稳定。 CPOL 与CPHA 功能 模式 CPOL = 0 CPOL = 0 CPOL = 1 CPOL = 1

起始沿结束沿SPI CPHA = 0 采样 ( 上升沿) 采样 ( 下降沿) 0 CPHA = 1 设置 ( 上升沿) 采样 ( 下降沿) 1 CPHA = 0 采样 ( 下降沿) 采样(上升沿)2 CPHA = 1 采样 ( 下降沿) 采样 ( 上升沿) 3 四、USART (通用同步和异步串行接收器和转发器)

通用同步和异步串行接收器和转发器(USART) 是一个高度灵活的串行通讯设备。主要特点为: ",. 全双工操作( 独立的串行接收和发送寄存器) ",. 异步或同步操作 ",. 主机或从机提供时钟的同步操作 ",. 高精度的波特率发生器

",. 支持5, 6, 7, 8, 或9 个数据位和1 个或2 个停止位 ",. 硬件支持的奇偶校验操作 ",. 数据过速检测 ",. 帧错误检测

",. 噪声滤波,包括错误的起始位检测,以及数字低通滤波器 ",. 三个独立的中断:发送结束中断, 发送数据寄存器空中断,以及接收结束中断 ",. 多处理器通讯模式 ",. 倍速异步通讯模式

1. USART I/O 数据寄存器UDR

bit7 bit6 bit5 bit4 bit3 RXB[7:0] TXB[7:0] bit2 bit1 bit0 USART 发送数据缓冲寄存器和USART 接收数据缓冲寄存器共享相同的I/O 地址,称为USART 数据寄存器或UDR。将数据写入UDR 时实际操作的是发送数据缓冲器存器 (TXB),读UDR 时实际返回的是接收数据缓冲寄存器(RXB) 的内容。

在5、6、7 比特字长模式下,未使用的高位被发送器忽略,而接收器则将它们设置为0。只有当UCSRA寄存器的UDRE标志置位后才可以对发送缓冲器进行写操作。如果UDRE没有置位,那么写入UDR 的数据会被USART 发送器忽略。当数据写入发送缓冲器后,若移位寄存器为空,发送器将把数据加载到发送移位寄存器。然后数据串行地从TxD 引脚输出。

接收缓冲器包括一个两级FIFO,一旦接收缓冲器被寻址FIFO 就会改变它的状态。因此不要对这一存储单元使用读- 修改- 写指令(SBI 和CBI)。使用位查询指令(SBIC 和SBIS) 时也要小心,因为这也有可能改变FIFO 的状态。

2. USART 控制和状态寄存器A(UCSRA)

bit7 RXC bit6 TXC bit5 UDRE bit4 FE bit3 DOR bit2 PE bit1 U2X bit0 MPCM RXC: USART 接收结束

接收缓冲器中有未读出的数据时RXC 置位,否则清零。接收器禁止时,接收缓冲器被刷新,导致RXC 清零。RXC 标志可用来产生接收结束中断( 见对RXCIE 位的描述)。

TXC: USART 发送结束

发送移位缓冲器中的数据被送出,且当发送缓冲器 (UDR) 为空时TXC 置位。执行发送结束中断时TXC 标志自动清零,也可以通过写1 进行清除操作。TXC 标志可用来产生发送结束中断( 见对TXCIE 位的描述)。 UDRE: USART 数据寄存器空

UDRE标志指出发送缓冲器(UDR)是否准备好接收新数据。UDRE为1说明缓冲器为空,已准备好进行数据接收。UDRE标志可用来产生数据寄存器空中断(见对UDRIE位的描述)。复位后UDRE 置位,表明发送器已经就绪。


(精)atmega16寄存器笔记整理(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国润唇膏行业商业模式专项分析与企业投资环境研究报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: