七、 模拟比较器
1. 特殊功能IO寄存器SFIOR
bit7 ADTS2 bit6 ADTS1 bit5 ADTS0 bit4 – bit3 ACME bit2 PUD bit1 PSR2 bit0 PSR10 ACME: 模拟比较器多路复用器使能
当此位为逻辑\,且ADC处于关闭状态(ADCSRA 寄存器的ADEN为\时,ADC多路复用器为模拟比较器选择负极输入。当此位为\时, AIN1连接到比较器的负极输入端。更详细描述的请参见 P191― 模拟比较器多工输入‖ 。
2. 模拟比较器控制和状态寄存器ACSR
bit7 ACD bit6 ACBG bit5 ACO bit4 ACI bit3 ACIE bit2 ACIC bit1 ACIS1 bit0 ACIS0 ACD: 模拟比较器禁用 ACD置位时,模拟比较器的电源被切断。可以在任何时候设置此位来关掉模拟比较器。这可以减少器件工作模式及空闲模式下的功耗。改变ACD位时,必须清零ACSR寄存器的ACIE位来禁止模拟比较器中断。否则ACD改变时可能会产生中断。
ACBG: 选择模拟比较器的能隙基准源
ACBG置位后,模拟比较器的正极输入由能隙基准源所取代。否则,AIN0连接到模拟比较器的正极输入。 ACO: 模拟比较器输出
模拟比较器的输出经过同步后直接连到ACO。同步机制引入了1-2 个时钟周期的延时。
ACI: 模拟比较器中断标志
当比较器的输出事件触发了由ACIS1及ACIS0定义的中断模式时,ACI置位。如果ACIE和SREG寄存器的全局中断标志I也置位,那么模拟比较器中断服务程序即得以执行,同时ACI被硬件清零。ACI也可以通过写\来清零。 ACIE: 模拟比较器中断使能
当ACIE位被置\且状态寄存器中的全局中断标志I也被置位时,模拟比较器中断被激活。否则中断被禁止。 ACIC: 模拟比较器输入捕捉使能
ACIC置位后允许通过模拟比较器来触发T/C1的输入捕捉功能。此时比较器的输出被直接连接到输入捕捉
的前端逻辑,从而使得比较器可以利用T/C1输入捕捉中断逻辑的噪声抑制器及触发沿选择功能。ACIC为\时模拟比较器及输入捕捉功能之间没有任何联系。为了使比较器可以触发T/C1 的输入捕捉中断,定时器中断屏蔽寄存器TIMSK的TICIE1必须置位。
ACIS1, ACIS0: 模拟比较器中断模式选择
这两位确定触发模拟比较器中断的事件。Table79给出了不同的设置。 ACIS1/ACIS0 设置 ACIS1 ACIS0 0 0 1 1 0 1 0 1 中断模式 比较器输出变化即可触发中断 保留 比较器输出的下降沿产生中断 比较器输出的上升沿产生中断 需要改变ACIS1/ACIS0时,必须清零ACSR寄存器的中断使能位来禁止模拟比较器中断。否则有可能在改变这两位时产生中断。
3. 模拟比较器多工输入
可以选择ADC7..0之中的任意一个来代替模拟比较器的负极输入端。ADC复用器可用来完成这个功能。当然,为了使用这个功能首先必须关掉ADC。如果模拟比较器复用器使能位(SFIOR 中的ACME)被置位,且ADC也已经关掉(ADCSRA 寄存器的ADEN为0),则可以通过ADMUX 寄存器的MUX2..0来选择替代模拟比较器负极输入的管脚。如果ACME清零或ADEN置位,则模拟比较器的负极输入为AIN1。 模拟比较器复用输入
ACME 0 1 1 1 1 1 1 1 1 1 ADEN x 1 0 0 0 0 0 0 0 0 MUX2..0 xxx xxx 000 001 010 011 100 101 110 111 模拟比较器负极输入 AIN1 AIN1 ADC0 ADC1 ADC2 ADC3 ADC4 ADC5 ADC6 ADC7
九. EEPROM 数据存储器
1. EEPROM 地址寄存器(EEARH和EEARL)
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 Res: 保留
保留位,读操作返回值为零。 EEAR8..0: EEPROM 地址
EEPROM地址寄存器– EEARH和EEARL指定了512字节的EEPROM空间。EEPROM地址是线性的,从0 到511。EEAR的初始值没有定义。在访问EEPROM之前必须为其赋予正确的数据。
2. EEPROM数据寄存器EEDR
bit7 MSB bit6 bit5 bit4 bit3 bit2 bit1 bit0 LSB EEDR7.0: EEPROM 数据
对于EEPROM写操作, EEDR是需要写到EEAR单元的数据;对于读操作,EEDR 是从地址EEAR读取的数据。
3. EEPROM控制寄存器EECR
bit7 – bit6 – bit5 – bit4 – bit3 EERIE bit2 bit1 bit0 EERE EEMWE EEWE Res: 保留
保留位,读操作返回值为零。
EERIE: 使能EEPROM 准备好中断
若SREG 的I 为\,则置位EERIE 将使能EEPROM 准备好中断。清零EERIE 则禁止此中断。当EEWE 清零时EEPROM 准备好中断即可发生。
EEMWE: EEPROM 主机写使能
EEMWE决定了EEWE置位是否可以启动EEPROM写操作。当EEMWE为\时,在4个时钟周期内置位EEWE将把数据写入EEPROM的指定地址;若EEMWE为\,则操作EEWE不起作用。EEMWE置位后4个周期,硬件对其清零。见EEPROM 写过程中对EEWE 位的描述。
EEWE: EEPROM写使能
EEWE为EEPROM写操作的使能信号。当EEPROM数据和地址设置好之后,需置位EEWE以便将数据写入EEPROM。此时EEMWE必须置位,否则EEPROM写操作将不会发生。写时序如下(第3步和第4步的次序并不重要):
",. 等待EEWE位变为零 ",. 等待SPMCSR中的SPMEN位变为零 ",. 将新的EEPROM地址写入EEAR(可选)
",. 将新的EEPROM数据写入EEDR(可选) ",. 对EECR寄存器的EEMWE写\,同时清零EEWE
",. 在置位EEMWE的4个周期内,置位EEWE
在CPU写Flash存储器的时候不能对EEPROM进行编程。在启动EEPROM写操作之前软件必须检查Flash写操作是否已经完成。仅在软件包含引导程序并允许CPU对Flash进行编程时才有用。
注意:如果一个操作EEPROM的中断打断了另一个EEPROM操作,EEAR或EEDR寄存器可能被修改,
引起EEPROM 操作失败。建议此时关闭全局中断标志I。经过写访问时间之后,EEWE 硬件清零。用户可以凭借这一位判断写时序是否已经完成。EEWE 置位后,CPU 要停止两个时钟周期才会运行下一条指令。 EERE: EEPROM 读使能
EERE为EEPROM读操作的使能信号。当EEPROM地址设置好之后,需置位EERE以便将数据读入
EEAR。EEPROM 数据的读取只需要一条指令,且无需等待。读取EEPROM后CPU要停止4个时钟周期才可以执行下一条指令。
用户在读取EEPROM时应该检测EEWE。如果一个写操作正在进行,就无法读取EEPROM,也无法改变寄存器EEAR。