ADC控制和状态寄存器A-ADCSRA

合集下载

AD转换

AD转换

一、设置ADMUX(AD转换多路选择寄存器)1 参考电源的选择REFS1 REFS0 AREF引脚0 0 接外部参考电源(默认)0 1 内部接通AVCC,外部要求与GND之间并接电容(100nF)1 0 保留1 1 内部接通2.56V,外部要求与GND之间并接电容(100nF)2 对齐方式的选择ADLAR = 0: 右对齐(默认)转换结果如下:ADCH bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0内容 - - - - - - ADC9 ADC8ADCL bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0内容 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0ADLAR = 1: 左对齐(一般用于不需要大于8位精度时,只读ADCH就可以了)转换结果如下:ADCH bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0内容 ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2ADCL bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0内容 ADC1 ADC0 - - - - - -3 通道号的选择对于MEGA8:MUX3 MUX2 MUX1 MUX0 输入端0 0 0 0 ADC00 0 0 1 ADC10 0 1 0 ADC20 0 1 1 ADC30 1 0 0 ADC40 1 0 1 ADC50 1 1 0 ADC60 1 1 1 ADC71 1 1 0 内部1.22V1 1 1 1 内部0V对于MEGA16:关于差分输入可以通过选择MUX4...0设置放大倍数,因没有做过试验,此处略。

MUX4 MUX3 MUX2 MUX1 MUX0 输入端0 0 0 0 0 ADC00 0 0 0 1 ADC10 0 0 1 0 ADC20 0 0 1 1 ADC30 0 1 0 0 ADC40 0 1 0 1 ADC50 0 1 1 0 ADC60 0 1 1 1 ADC71 1 1 1 0 内部1.22V1 1 1 1 1 内部0V二设置ADCSRA1 转换模式选择对于MEGA8ADFR=1:首次启动转换后,将自动连续转换ADFR=0: 启动一次,转换一次对于MEGA16ADATE=1:首次启动转换后,在触发脉冲上升沿时开始一次转换 ADATE=0:启动一次,转换一次当ADATE=1后,启动转换前先要在SFIOR中设置触发源(当ADATE=0时,设置SFIOR是无效的):ADTS2 ADTS1 ADTS0 触发源0 0 0 自动连续转换0 0 1 模拟比较器0 1 0 外部中断00 1 1 定时器/计数器0比较匹配1 0 0 定时器/计数器0溢出1 0 1 定时器/计数器比较匹配B1 1 0 定时器/计数器1溢出1 1 1 定时器/计数器1捕获事件2 中断/查询方式选择ADIE=1: 转换完成后激活AD中断(当SREG的I位=1时)ADIE=0: 通过查询ADIF标志判断是否完成了一次转换ADIF=1,表示完成了一次转换。

第11章 ADC系统

第11章 ADC系统
北京源智天下科技有限公司
1-5
联系方式:
中断
北京源智天下科技有限公司
1-6
联系方式:
模拟看门狗
北京源智天下科技有限公司
1-7
联系方式:
ADC的数据对齐
• ADC_CR2寄存器的ALIGN位选择转换后数据储 存的对齐方式。
北京源智天下科技有限公司
1-13
联系方式:
ADC的编程方法(续)
• 库函数:
– – – – – – – – – – – – – – ADC_SoftwareStartInjectedConvCmd函数 ADC_GetSoftwareStartInjectedConvStatus函数 ADC_InjectedChannelConfig函数 ADC_InjectedSequencerLengthConfig函数 ADC_SetInjectedOffset函数 ADC_GetInjectedConversionValue函数 ADC_AnalogWatchdogCmd函数 ADC_AnalogWatchdogThresholdsConfig函数 ADC_AnalogWatchdogSingleChannelConfig函数 ADC_TempSensorVrefintCmd函数 ADC_GetFlagStatus函数 ADC_ClearFlag函数 ADC_GetITStatus函数 ADC_ClearITPendingBit函数
– – – – – – – VREF+ VDDA VREFVSSA ADC_IN[15:0] EXTSEL[2:0] JEXTSEL[2:0]
北京源智天
• • • • • • • • • • • ADC开关控制 ADC时钟 ADC通道选择 ADC的转换模式 ADC的扫描模式 ADC的注入通道管理 间断模式 ADC的校准模式 可编程的通道采样时间 外部触发转换 DMA请求

AVR单片机原理及应用

AVR单片机原理及应用

7、A/D转换器 1、A/D结构及工作原理
ADC自动触发转换逻辑图
7、A/D转换器
2、预分频及转换时序
逐次逼近转换需要一个从50 kHz到200 kHz的输入时钟以 获得最大精度。
如果所需的转换精度低于10 比特,那么输入时钟频率可以 高于200 kHz,以达到更高的采样率。
ADC 模块包含一个预分频器,通过ADCSRA寄存器的 ADPS 进行配置。置位ADCSRA寄存器的ADEN 将使能ADC, 预分频器开始计数。只要ADEN为1,预分频器就持续计数, 直到ADEN为零。
Figure 111 给出差分输入域的解码。 Table 82 给出当选定的增益为GAIN且参考电压为VREF 的差分输入对 (ADCn - ADCm)的输入码结果。
7、A/D转换器 4、转换结果
7、A/D转换器 4、转换结果
7、A/D转换器 4、转换结果
例: ADMUX = 0xED (ADC3 - ADC2,10x 增益, 2.56V 参考电压,左对齐) ADC3 上电压为300 mV, ADC2 电压为500 mV。 ADCR = 512 * 10 * (300 - 500) / 2560 = -400 = 0x270 ADCL 将读为0x00,且ADCH 读为0x9C。给 ADLAR 写0 右对齐:ADCL = 0x70,ADCH = 0x02。
第七章A/D转换器
7.1 7.2 7.3 7.4
7、A/D转换器
概述
Dx
Vin VREF
2n
Vin: 输入模拟电压, Vref:比较器参考电压; n: 转换深度; Dx: 输出的数字量。
显然:(1)当Vref=5V,n=8,则Vin=0V,则Dx=0, 当Vin=5V,则Dx=255 当Vin在0-5V之间变化,Dx在0-255之间变化,

2020年计算机三级考试嵌入式系统开发技术重点内容

2020年计算机三级考试嵌入式系统开发技术重点内容

计算机三级考试嵌入式系统开发技术重点内容
导语:嵌入式系统是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,下面是相关介绍,欢迎参考!
S3C44B0的ADC組件及开发应用
常用ADC寄存器
1、ADC控制寄存器ADCCON决定是否允许启动、选择ADC通道、反映ADC转换状态
2、ADC预分频寄存器ADCPSR决定预分频系数
3、ADC转换时间:
TADC=2×(ADCSPR的值+1)×16/MCLK
4、ADC数据寄存器寄存转换后的10位数字量
5、对ADC操作三要素:
(1)选择通道并启动AD变换
(2)查询状态(是否转换结束)
(3)读取转换结果
S3C44B0的ADC开发应用
如果MCLK=64MHz
1、让ADC转换时间为10uS,写出程序片段
解答:ADC转换时间:
TADC=2×(ADCSPR的值+1)×16/MCLK
ADCPSR=10/32*64-1=19
主要是写ADCPSR寄存器,写寄存器三条指令:
LDRR0,=rADCPSR
MOVR1,#19
STRR1,[R0]
解答续:
CMPR2,#30
BCCLPSET0
CMPR2,#90
BHILPSETFF
MOVR3,R2
BLPGO
LPSET0:
MOVR3,#0
BLPGO
LPSETF:
MOVR3,#0xFFFFFFFF LPGO:BSTART。

ATmage16单片机操作步骤

ATmage16单片机操作步骤

快速PWM模式:1、设置端口输出
2、设置PWM波形模式以及时钟选择(TCCR1A,TCCR1B)
3、设置PWM波形的频率(OCR1A)
4、设置PWM波形的占空比(OCR1B)
定时器:1、根据需要选择时钟源(寄存器TCCR1B)
AVR单片机操作步骤
外部中断:1、设置外部中断的触发方式(寄存器MCUCR)
2、使能外部中断(寄存器GICR)
3、设置中断管脚(是否需要上拉电阻)
4、打开全局中断(寄存器SREG)
5、选择中断号,写中断服务函数
5、在置EEMWE为1的4个时钟周期内向EEWE中写入1
USART使用步骤:1、初始化工作模式,帧结构等(UCSRC)
2、波特率设置(UBBRL,UBBRH)
3、中断的相关设置(UCSRB)
4、选择中断号,编写中断服务函数
注意:从ADCH和ADCL中读取到的数据是BCD码格式
EEPROM写写入EEAR
3、把EEPROM的数据写入EEDR
4、置EEMWE为1
2、根据定时器时间的时钟源确定定时器的初值(寄存器TCNT1H和TCNT1L)
3、设置中断使能位 TIMSK |= BIT(2); SREG |= BIT(7);
4、选择中断号,编写中断服务程序
注意:在中断服务函数里面需要重新设置定时器初值
ADC使用步骤: 1、ADC输入端在初始化
2、基准电压设置,数据对齐方式,通道选择(寄存器ADMUX)
3、AD使能,启动转换及中断设置(寄存器ADCSRA)
4、触发源选择(寄存器SFIOR)
5、选择中断号,编写中断服务函数,读取ADC转换结果(ADCH、ADCL)

28XADC寄存器

28XADC寄存器

1 设置此位使ADC自动转换序列可以由来自 GPIO端 口A引脚(GPIO31-0)的信号启动,在GPIOXINT2SEL 寄存 器中已将引脚配置为XINT2。 请参阅TMS320x280x系统 控制和中断参考指南(SPRU712)。
RST_SEQ2(6) 复位SEQ2
0
无操作
1 立即将 SEQ2 复位到“触发前”状态,即在 CONV08 等待触发信号。 将异常中止当前活动的转换 序列。 SOC_SEQ2(5) 序列发生器2(SEQ2)的转换开始触发器。(仅适用于 双序列发生器模式;在级联模式中被忽略)可通过 以下触发器设置此位: • S/W - 通过软件将 1 写入此位 • ePWM SOCB
ADCCLKPS [3:0](4~1) 内核时钟除法器。除了在ADCCLKPS[3-0]为0000时HSPCLK 直通外,将28x外设时钟HSPCLK除以 2*ADCCLKPS[3-0]。 将分频后的时钟进一步除以 ADCTRL1[7]+1,以产生内核 时钟ADCLK。
SMODE_SEL(0)
采样模式选择。此位选择顺序采样模式或同步采样模式。 0 选择顺序采样模式
SEQ2_STATE[2:0]和SEQ1_STATE[3:0](6~0) SEQ2_STATE和SEQ1_STATE位字段分别为SEQ2和SEQ1 的指针。
ADC 状态和标志寄存器 (ADCST)
INT_ENA_SEQ1(11) 启用SEQ1中断。 此位启用INT SEQ1对CPU的中断请求
0
1
禁用 INT_SEQ1 的中断请求。
启用 INT_SEQ1 的中断请求。 INT_MOD_SEQ1(10)
SEQ1中断模式。此位选择SEQ1中断模式。它影响 SEQ1转换序列结束时的INT SEQ1设置。 0 1 每个 SEQ1 序列结束时设置 INT_SEQ1。 每隔一个 SEQ1 序列结束时设置 INT_SEQ1。

ATmega8寄存器资料整理

ATmega8寄存器资料整理

ATmega8各模塊及相關寄存器功能ADC模塊1.ADMUX--ADC多路選擇寄存器:REFS1,REFS0: = 0,0 關閉內部的參考電壓0,1 Avcc利用AREF腳的外接電容1,0 保留1,1 開啟內部的2.56V參考電壓, AREF腳外接電容.ADLAR: = 1對ADC轉換結果進行左調節, = 0對ADC轉換結果進行右調節,詳見IC spec,我要ADLAR=0.MUX3~0: =0000~0111分別選擇ADC0~ADC7作為輸入, =1110 1.23V(VBG), =1111 0V(GND).2.ADCSR--ADC控制和狀態寄存器ADEN: ADC使能ADSC: ADC工作于單次模式時,’ADSC=1’啟動一次轉換,轉換結束后ADSC由硬件清0.ADC工作于連續模式時,’ADSC=1’啟動轉換,只需一次.對該位寫0沒有意義.注意:每一次對該位寫’1’都會有一次啞轉換.ADFR: =1選擇ADC連續模式. =0則終止連續模式.ADIF: ADC中斷標識位.執行中斷程序后由硬件清0,對該位寫’1’也可以將其清0ADIE:ADC中斷使能.ADPS2..ADPS0: =000~111時ADC的分頻系數分別為2,2,4,8,16,32,64,1283. ADCH/ADCL:ADC結果數據寄存器,讀取時要先讀ADCL.USART模塊1.UDR--USART數據接收/發射寄存器.2.UCSRA--USART控制和狀態寄存器A.RXC: 接收數據完成標識位, RXC在读UDR时自动被清除, 如果采用中断方式则中断例程必须读一次UDR.TXC: 發送數據結束標識位, TXC 置位表示数据已经从发送移位寄存器发送出去且UDR 中没有新的要发送的数据,在半双工通信应用中,由于发送器在发送完数据之后要立即转换到接收模式,所以这个标志位特别有用.如果TXCIE 已置位则TXC 置位将引发发送结束中断,进入中断例程后TXC 自动清零,或者用户可以对其写1清零. UDRE: UART数据寄存器空当数据从UDR 传送到发送移位寄存器后,UDRE 置位,表明发送器已经准备好接收新的要发送的数据.当UDRIE 置位,则只要UDRE 为’1’, UART 发送结束中断就可以执行.写UDR 将复位UDRE. 如果利用中断方式发送数据,则在UART 数据寄存器空中断例程里必须写UDR 以清除UDRE, 否则中断将连续发生.复位后UDRE 的初始值为’1’, 表明发送器就绪.FE: 接收帧错误標識位,MCU 检测到帧错误如检测到停止位为0 时FE 置位,当检测到数据停止位为1 时FE 复位.讀接收緩沖器清除該標識.DOR: 數據過速標識位, 如果UDR 未读而新接收的数据又已进入移位寄存器,则OR 置位. 讀接收緩沖器清除該標識. PE: (?UPE)接收數據奇偶校驗錯誤標識位,讀接收緩沖器清除該標識.U2X: 對異步通訊, U2X=1時波特率加倍.對同步通訊,該位無效,必須寫0.MPCM: =1時為多處理器通訊模式,在該模式下,接收到的未包含地址的楨數據被忽略,不影響發送數據.3.UCSRB-- USART控制和狀態寄存器B.RXCIE: 接收結束中斷使能.TXCIE: 發送結束中斷使能.UDRIE: 數據寄存器空中斷使能.RXEN: =1時接收使能.同時自動設置RXD引腳為接收腳.接收禁能將導致TXC/DOR/FE無法置位,同時也不能復位已經置位的標識位.TXEN: =1時接收接收.同時自動設置TXD引腳為發送腳.UCSZ2: 與UCSRC中的UCSZ1/UCSZ0位一起決定接收和發送數據的楨格式(8/9/10位)RXB8/TXB8: 接收/發送數據的第9位.4. UCSRC-- USART控制和狀態寄存器C.(UCSRC與UBRRH共用一個IO地址)URSEL: =1時讀/寫UCSRC寄存器,=0時讀/寫UBRRH寄存器.UMSEL: =1選擇UART, =0選擇USARTUPM1..UPM0: =0, 0 禁止奇偶校驗,=0,1 保留, =1,0 使能偶校驗, =1,1 使能奇校驗.USBS: =0 發送1位停止位, =1 發送2位停止位. 該位的設置與接收無關.UCSZ1..UCSZ0: 與UCSZ2一起決定數據楨的位數UCSZ2..UCSZ0 = 0,0,0~0,1,1 分別為5/6/7/8位.= 1,0,0~1,1,0 保留= 1,1,1 9位(復位后的缺省值為0,1,1即8位)UCPOL: =0 在時鐘脈沖的上升沿發送一位數據,下降沿接收一位數據. =1則反之.5.UBRRH/UBRRL: UBRRH的低4位和UBRRL組成12位波特率寄存器.(見IC spec.)WDT模塊1.WDTCR—看門狗定時器控制寄存器WDCE: 看門狗關閉使能.WDE: =1使能看門狗.關閉看門狗的步驟為: 1. 在同一个指令内对WDCE 和WDE 写逻辑1,即使WDE 已经为12. 在4 个时钟之内对WDE 写逻辑0WDP2..WDP0: 選擇WDT的溢出時間.TWI模塊1.TWBR—TWI位傳輸率寄存器.SCL頻率=CPU時鐘/(16+2*TWBR*4TWPS)主機模式下要求TWBR>10.2.TWCR—TWI控制寄存器TWINT: TWI中斷標識位該位必須由軟件清0.另外清0該位時會啟動TWI,因此清0該位之前需先設置好TWAR/TWSR/TWDR TWEA: TWI應答信號時能.TWSTA: TWI啟動條件位. 該位置’1’時向總線發送一個啟動信號,然后該位要用軟件清0.TWSTO: TWI停止條件位. 該位置’1’時向總線發送一個停止信號,然后該位自動清0.TWWC: TWI寫沖突標識位. 當TWIBT=0時寫TWDR,該位置位; 當TWIBT=1時寫TWDR,該位清0. TWEN: TWI使能位. 只要將該位置’1’,TWI就對SDA和SCL腳具有控制權.TWIE: TWI中斷使能.3.TWSR—TWI狀態寄存器.TWS7..TWS3: 指示TWI的狀態.TWPS1..TWPS0: 位傳輸速率的預分頻值. =0,0~1,1對應的預分頻值分別為1,4,16,644.TWDR-- TWI數據寄存器.5.TWAR: TWI(slave) 地址寄存器.TWA6..TWA0: TWI(slave) 地址TWGCE: TWI通用呼叫識別使能位.T0模塊1.TIMSK—T/C中斷屏蔽寄存器TOIE0: T/C0溢出中斷使能.2.TIFR—T/C中斷標識寄存器.TOV0: T/C0溢出中斷標識位.3.TCCR0--T/C控制寄存器.CS02…CS00: = 0,0,0 T/C停止.=0,0,1~1,0,1 時鐘分別為I/O時鐘, I/O時鐘/8, I/O時鐘/64, I/O時鐘/256, I/O時鐘/1024,=1,1,0 T0腳的時鐘,下降沿=1,1,1 T0腳的時鐘,上升沿4.TCNT0—T/C計數寄存器.T1模塊1. TIMSK—T/C中斷屏蔽寄存器TICIE1: T/C1輸入捕獲中斷使能.OCIE1A: T/C1輸出比較匹配A中斷使能.OCIE1B: T/C1輸出比較匹配B中斷使能.TOIE1: T/C1溢出中斷使能.2.TIFR—T/C中斷標識寄存器.ICF1: T/C1輸入捕獲中斷標識位.OCF1A: T/C1輸出比較匹配A中斷標識位.OCF1B: T/C1輸出比較匹配B中斷標識位.TOV1: T/C1溢出中斷標識位.3.TCCR1A—T/C1控制寄存器A.1A0(1B0): 决定T/C1 的比较匹配发生时输出引脚OC1A(OC1B)的动作,對I/O口的控制權最高,相应的方向控制位要设置为1, 以便将其配置为输出.WGM13..0=正常模式或CTC模式時:1A0(1B0): =0,0 T/C1與输出引脚OC1A(OC1B)斷開=0,1 比较匹配发生时OC1A(OC1B) 輸出反相.=1,0 比较匹配发生时OC1A(OC1B)=0; OC1A(OC1B)=1 at TOP=1,1 比较匹配发生时OC1A(OC1B)=1; OC1A(OC1B)=0 at TOPWGM13..0=快速PWM模式時:1A0(1B0): =0,0 T/C1與输出引脚OC1A(OC1B)斷開=0,1 WGM13..0=15: 比较匹配发生时OC1A/OC1B反相輸出. OC1B斷開=1,0 比较匹配发生时OC1A(OC1B)=0; OC1A(OC1B)=1 at TOP=1,1 比较匹配发生时OC1A(OC1B)=1; OC1A(OC1B)=0 at TOP WGM13..0=相位校正模式/相頻校正模式或PWM模式時:1A0(1B0): =0,0 T/C1與输出引脚OC1A(OC1B)斷開=0,1 WGM13..0=15: 比较匹配发生时OC1A/OC1B反相輸出. OC1B斷開=1,0 比较匹配发生时,若是向上計數OC1A(OC1B)=0; 若是向下計數則OC1A(OC1B)=1=1,1 比较匹配发生时,若是向上計數OC1A(OC1B)=1; 若是向下計數則OC1A(OC1B)=0FOS1A/FOC1B: 写’1’ 后按照COM1A0/1 的设置在引脚PD5 强迫产生一次比较匹配输出,如果COM的值与FOC 的值在同一写入周期更新,本次功能将被忽略.强迫输出比较功能使得MCU可以不用等待比较匹配的发生就变换引脚的输出,由FOC 置位产生的比较匹配不会引发中断,也不会清除TCNT1. 读FOC 的返回值总为零,在PWM 模式下FOC 没有意義.WGM11/WGM10: 與TCCR1B中的WGM13/WGM12位決定波形產生模式Mode WGM13..WGM10 Timer/Counter Mode TOP Update ofOCR1x TOV1 Flag Set on0 0 0 0 0 Normal 0xFFFF Immediate MAX1 0 0 0 1 PWM, Phase Correct, 8-bit 0x00FF TOP BOTTOM2 0 0 1 0 PWM, Phase Correct, 9-bit 0x01FF TOP BOTTOM3 0 0 1 1 PWM, Phase Correct, 10-bit 0x03FF TOP BOTTOM4 0 1 0 0 CTC OCR1A Immediate MAX5 0 1 0 1 Fast PWM, 8-bit 0x00FF TOP TOP6 0 1 1 0 Fast PWM, 9-bit 0x01FF TOP TOP7 0 1 1 1 Fast PWM, 10-bit 0x03FF TOP TOP8 1 0 0 0 PWM, Phase&Frequency Correct ICR1 BOTTOM BOTTOM9 1 0 0 1 PWM, Phase& Frequency Correct OCR1A BOTTOM BOTTOM10 1 0 1 0 PWM, Phase Correct ICR1 TOP BOTTOM11 1 0 1 1 PWM, Phase Correct OCR1A TOP BOTTOM12 1 1 0 0 CTC ICR1 Immediate MAX13 1 1 0 1 (Reserved) –––14 1 1 1 0 Fast PWM ICR1 TOP TOP15 1 1 1 1 Fast PWM OCR1A TOP TOP3.TCCR1B—T/C1控制寄存器B.ICNC1: 输入捕捉抑制器(4个时钟)ICNC1 高有效,输入捕捉在ICP输入捕捉引脚的第一个上升/下降沿触发,当ICNC1 =1时ICP信号要进行4次连续采样,只有4个采样值都有效时,输入捕捉标志才置位.采样频率为XTAL 时钟.ICES1:输入捕捉1 边沿选择当ICES1=0 时,T/C1 的值在ICP 引脚电平的下降沿被传送到输入捕捉寄存器ICR1.若ICES1=1 则T/C1 的值在ICP 引脚电平的上升沿被传送到ICR1WGM13/WGM12: 見上面的表格.CS11..CS10: T/C1的時鐘源選擇=000 停止,=001~101 分別為CK, CK/8,CK/64,CK/256,CK/1204. =110 T1腳下降沿. =111 T1腳上升沿.4.TCNT1H/TCNT1L—T/C1計數器此16 位寄存器包含了T/C1 的值,当CPU 访问这两个寄存器时,为了保证高字节和低字节能够同时读写,要用到一个8 位的临时寄存器TEMP, 此寄存器在访问OCR1A/ OCR1B 和ICR1 的时候也要用到,如果主程序和中断程序在访问寄存器时都要用到TEMP, 那么在适当的时候需要关闭中断使能,防止出错.写TCNT1: 当CPU 写TCNT1H 时数据将被放置在TEMP 寄存器,当CPU 写低字节TCNT1L 时,此数据及TEMP 中的数据一并写入TCNT1, 因此在写TCNT1 16 位时首先要写TCNT1H读TCNT1:当CPU 读取TCNT1L 时,TCNT1L 的数据将送入CPU, 同时TCNT1H 将送入TEMP寄存器,等到CPU 读取TCNT1H 时,TEMP 中的数据送入CPU, 因此在读16 位的TCNT1 时首先要读TCNT1LT/C1 是向上记数器或上/下记数器,在PWM 模式下,若T/C1 被置数,则T/C1 将在预置数的基础上记数.5.OCR1AH / OCR1AL-- T/C1輸出比較寄存器1A.OCR1BH / OCR1BL-- T/C1輸出比較寄存器1BT/C1 输出比较寄存器包含与T/C1 值连续比较的数据,如果T/C1 的值与OCR 相等则比较匹配发生,用软件写操作将TCNT1 和OCR1A 或OCR1B 设置为相等不会引发比较匹配,由于OCR1A/OCR1B为16 位寄存器,所以在访问时要用到TEMP 寄存器,以保证两个字节的同步更新,其读写过程与读写TCNT1 相同.访问TCNT1 和ICR1 同样要用到TEMP 寄存器,如果主程序和中断例程都要用到TEMP,则在主程序访问这些寄存器时要禁止中断.6. ICR1H / ICRAL—輸入捕獲寄存器按照ICES1 的设定,输入捕捉引脚ICP 发生上跳变或下跳变时,TCNT1 被送入ICR1, 同时ICF1 置位,由于ICR1 为16 位寄存器,所以在访问时要用到TEMP 寄存器,以保证同时读取两个字节. 读写过程与读写TCNT1 相同.T2模塊1. TIMSK—T/C中斷屏蔽寄存器OCIE2: T/C2輸出比較匹配中斷使能.TOIE2: T/C2溢出中斷使能.2.TIFR—T/C中斷標識寄存器.OCF2: T/C2輸出比較匹配中斷標識位.TOV2: T/C2溢出中斷標識位.3. TCCR2—T/C2控制寄存器FOC2: 强迫输出比较写1 后按照COM21/20 的设置,在引脚强迫产生一次比较匹配输出,如果COM 的值与FOC 的值在同一写入周期更新,本次功能将被忽略.由FOC 置位产生的比较匹配不会产生中断.读FOC 的返回值总为零.在PWM 模式下FOC没有任何意义.WGM21/WGM20: 波形產生模式Mode WGM21/WGM20 Timer/Counter Mode TOP Update of OCR2 TOV2 FlagSet0 0 0 Normal 0Xff Immediate MAX1 0 1 PWM, Phase Correct 0xFF TOP BOTTOM2 1 0 CTC OCR2 Immediate MAX3 1 1 Fast PWM 0xFF TOP MAXCOM21/COM20: 比較輸出模式Non-PWM模式時:COM21/COM20 Description0 0 Normal port operation, OC2 disconnected.0 1 Toggle OC2 on Compare Match1 0 Clear OC2 on Compare Match1 1 Set OC2 on Compare Matchfast-PWM模式時:COM21/ COM20 Description0 0 Normal port operation, OC2 disconnected.0 1 Reserved1 0 Clear OC2 on Compare Match, set OC2 at TOP1 1 Set OC2 on Compare Match, clear OC2 at TOPPhase Correct PWM模式時:COM21 COM20 Description0 0 Normal port operation, OC2 disconnected.0 1 Reserved1 0 Clear OC2 on Compare Match when up-counting. Set OC2 on Compare Match when downcounting.1 1 Set OC2 on Compare Match when up-counting. Clear OC2 on Compare Match when downcounting.CS22/CS21/CS20: 選擇T/C2的預分頻值CS22/CS21/CS20 Description0 0 0 No clock source (Timer/Counter2 stopped).0 0 1 clk T2S (No prescaling)0 1 0 clk T2S/8 (From prescaler)0 1 1 clk T2S/32 (From prescaler)1 0 0 clk T2S/64 (From prescaler)1 0 1 clk T2S/128 (From prescaler)1 1 0 clk T2S/256 (From prescaler)1 1 1 clk T2S/1024 (From prescaler)4. TCNT2—T/C2計數器5. OCR2—T/C2輸出比較寄存器6.ASSR—T/C2異步狀態寄存器AS2: AS2=0,T/C2的時鐘為clk i/o, AS2=1, T/C2的時鐘為TOSC1腳的晶體時鐘.改變AS2的值,可能破壞TCNT2/ORC2/TCCR2的內容.TCN2UB: T/C2 更新忙標識T/C2 工作于异步模式时,写TCNT2 将引起TCN2UB置位,当TCNT2从暂存寄存器更新完毕后,TCN2UB 由硬件清零.TCN2UB为0 表明TCNT2可以写入新值了.OCR2UB: 输出比较寄存器更新忙T/C2 工作于异步模式时,写OCR2将引起OCR2UB置位,当OCR2从暂存寄存器更新完毕后,OCR2UB由硬件清零,OCR2UB为0 表明OCR2可以写入新值了.TCR2UB: T/C2 控制寄存器更新忙T/C2 工作于异步模式时写TCCR2将引起TCR2UB置位,当TCCR2从暂存寄存器更新完毕后,TCR2UB由硬件清零.TCR2UB为0表明TCCR2可以写入新值了.如果在’更新忙标志’置位的时候写上述任何一个寄存器,都将引起数据的破坏并引发不必要的中断!7.SFIOR—特殊功能IO寄存器PSR2: T/C2 分频器复位置位后,T/C2 的预分频器复位,操作完成后硬件对其清零,软件写零并不真正执行清零工作.如果T/C2 由内部CPU 时钟驱动,读取这一位的结果为零.如果T/C2 工作于异步模式,由自己的晶振驱动,则这一位将一直保持为1, 直到异步操作完成.SPI 模塊1.SPDR—SPI數據寄存器2.SPSR—SPI狀態寄存器SPIF: SPI中斷標識串行发送结束后SPIF置位,即使此时/SS 被拉低(作为输入口).进入中断例程后SPIF自动复位,或者可以通过先读SPSR, 紧接着读SPDR来对SPIF清零.WCOL: 写碰撞标志在SPI 发送当中对SPI 数据寄存器SPDR写数据将置位WCOL, WCOL可以通过先读SPSR,紧接着读SPDR来清零SPI2X: 双速置位后SPI 的速度加倍,若作为主机则SPI 频率可达CPU频率的一半,若为从机只能保证f C L/4.3.SPCR—SPI控制寄存器SPIE: SPI 中斷使能SPE: SPI 使能DORD: 数据發送次序, DORD=1 LSB先发送;DORD=0 MSB先发送.MSTR: 主从选择MSTR 置位时选择主机模式,否则为从机.如果MSTR为1, /SS 为输入,但被拉低,则MSTR被清零,SPIF置位.用户必须重新设置MSTR进入主机模式.CPOL: 时钟极性CPOL置位表明总线空闲时SCK为高.CPHA: 时钟相位SPR1/SPR0: SPI 时钟速率选择位=00~11 时钟速率分別為f OSC/4, f OSC/16, f OSC/64, f OSC/128端口B / 端口C / 端口D 模塊1.PORTB / PORTC / PORTD--端口數據寄存器2.DDRB / DDRC / DDRD—端口數據方向寄存器3.PINB / PINC / PIND—端口輸入引腳地址PINB/PINC/PIND 不是寄存器,这个地址用来访问端口的物理值,读取PORTB/PORTC/PORTD时,读到的是端口锁存的数据,而读取PINB/PINC/PIND时,读到的是施加于引脚上的逻辑数值.外部中斷模塊1.GICR—通用中斷控制寄存器INT1/INT0:外部中斷1/0使能IVSEL: 中斷向量選擇=1 中斷向量放置在flash存儲區的開始. =0中斷向量放置在BOOT LOADER區的開始.IVCE: 中斷向量改變使能.2.GIFR—外部中斷標識位寄存器.INTF1/INTF0: 外部中斷1/0標識3.MCUCR—MCU控制寄存器ISC11/ISC10 / ISC01/ISC00: 外部中斷觸發信號選擇ISC11( ISC01)/ ISC10 (ISC00) Description0 0 The low level of INT1(INT0) generates an interrupt request.0 1 Any logical change on INT1(INT0) generates an interrupt request.1 0 The falling edge of INT1(INT0) generates an interrupt request.1 1 The rising edge of INT1(INT0) generates an interrupt request.EEPROM 模塊1.EEARH/EEARL--EEPROM地址寄存器.(對Atmega8為9位)2.EEDR—EEPROM數據寄存器3.EECR—EEPROM控制寄存器EERIE: EEPROM准備好中斷使能EEMWE: EEPROM主写使能EEMWE 决定是否设置EEWE 为1 以写EEPROM, 当EEMWE 为1 时置位EEWE,将把数据写入EEPROM 的指定地址,若EEMWE 为0 则EEWE 不起作用.EEMWE 置位后4个周期硬件对其清零.EEWE: EEPROM写使能当EEPROM数据和地址设置好之后,需置位EEWE以便将数据写入EEPROM, 写时序如下,第2和第3步不是必须的:1 等待EEWE为0.2 将EEPROM的新地址写入EEAR.3 将新数据写入EEDR.4 置位EEMWE.5 在置位EEMWE 的4个周期内对EEWE 写逻辑1.经过写访问时间(VCC=2.7V 时为4ms左右,VCC=5V时为2.5ms左右)之后,EEWE硬件清零,用户可以凭此位判断写时序是否已经完成.EEWE置位后CPU要停止2 个周期.注意: 发生在步骤4和5之间的中断将导致写操作失败,如果一个操作EEPROM的中断打断了EEPROM操作,EEAR或EEDR寄存器可能被修改,引起EEPROM操作失败,建议此时关闭全局中断标志I.EERE: EEPROM读使能当EEPROM地址设置好之后,需置位EERE以便将数据读入EEDR, EERE清零表示EEPROM的数据已经读入EEDR, EEPROM数据的读取只需要一条指令,且无需等待.EERE置位后,CPU要停止2个周期.用户在读取EEPROM时应该检测EEWE, 如果一个写操作正在进行,写EEAR 和EEDR将中断EEPROM的写入,使得结果无法预测.防止EEPROM数据毁坏由于电源电压过低,CPU和EEPROM有可能工作不正常造成EEPROM数据的毁坏,这种情况在使用独立的EEPROM 器件时也会遇到.由于电压过低造成EEPROM数据损坏有两种可能:一是电压低至EEPROM写操作所需要的最低电压二是CPU本身已经无法正常工作.EEPROM数据损坏的问题可以通过以下3 种方法解决:1 当电压过低时保持/RESET信号为低,这可以通过外加复位电路(BOD-Brown-out Detection)来完成,有些AVR产品本身就内含BOD电路,详情请看有关数据手册.2 当VCC过低时使AVR内核处于掉电休眠状态,这可以防止CPU对程序解码和执行代码,有效防止对EEPROM的误操作.3 将那些不需修改的常数存储于FLASH 之中.模擬比較器模塊1. SFIOR--特殊功能IO寄存器ACME: 模擬比較器多路使能ACME=0,AIN1腳作為模擬比較器的負輸入端.ACME=1,ADEN/MUX2..0選擇模擬比較器的負輸入端.2.ACSR--模擬比較器控制和狀態寄存器ACD: 模拟比较器禁止当ACD 为1 时,模拟比较器的电源将切断,可以在任何时候对其置位以关闭模拟比较器,这样可以减少器件的功耗.改变ACD 时要注意禁止模拟比较器的中断,否则有可能引发不必要的中断.ACBG: 模拟比较器帶隙選擇=1 使用內部的參考電壓作為模拟比较器的正輸入.=0 使用AIN0腳的電壓作為模拟比较器的正輸入.ACO:模拟比较器的輸出. ACO與比较器的輸出端直接相連.ACI: 模拟比较器中断标志位当比较器输出触发中断时,ACI 将置位,中断方式由ACIS1 和ACIS0 决定.如果ACI 和I 都为1, 则CPU 执行比较器中断例程,进入中断例程后ACI 被硬件清零.此外ACI 也可以通过对此位写1 来达到清零的目的.要注意的是如果ACSR 的另一些位被SBI 或CBI 指令修改时ACI 亦被清零.ACIE: 模拟比较器中斷使能.ACIC: 模拟比较器输入捕捉使能ACIC为1 时T/C1 的输入捕捉功能由比较器中断触发,此时比较器的输出与T/C1的输入捕捉前端直接相连.T/C1 的输入捕捉噪声抑制和边沿选择仍然适用.如果ACIC 为0 则模拟比较器与T/C1 没有关联,为了使能比较器驱动的T/C1 输入捕捉中断,TICIE1必须置位.ACIS1/ACIS0: 模拟比较器中断模式选择=00 电平切换引发中断=01 保留=10 ACO 下降沿中断=11 ACO 上升沿中断注意: 改变ACIS1/ACIS0 时要注意禁止模拟比较器的中断,否则有可能引发不必要的中断.CPU 模塊1.SREG—CPU狀態寄存器位7---I(R/W): I=1, 允许全局中断; I=0, 不允许全局中断; 在中断发生后I位由硬件清除,并由RETI(中断返回)指令设置,从而允许子序列的中断.位6---T(R/W):位复制存储位5---H(R/W):半进位标志位位4---S(R/W):标志位,S=N⊕V,S位是负数标志位N 和2 的补码溢出标志位V 两者异或值.位3---V(R/W):2的补码溢出标志位,2的补码溢出标志位V支持2的补码运算.位2---N(R/W):负数标志位.指示在不同的运算和逻辑操作之后的负数结果.位1---Z(R/W):零值标志位.指示在不同的运算和逻辑操作之后的零值结果.位0---C(R/W):进位标志位.指示在某一运算和逻辑操作中的某一进位.2.SPH/SPL—堆棧指針3.MCUCR—MCU控制寄存器SE: 睡眠使能SM2..SM0: 睡眠模式選擇SM2/ SM1/ SM0 Sleep Mode0 0 0 Idle0 0 1 ADC Noise Reduction0 1 0 Power-down0 1 1 Power-save1 0 0 Reserved1 0 1 Reserved1 1 0 StandbyNote: Standby mode is only available with external crystals or resonators.ISC11/ISC10 / ISC01/ISC00:見’外部中斷模塊’4.MCUCSR—MCU控制和狀態寄存器WDRF: 看門狗復位標識.BORF: brown-out reset flag (?電壓淡出復位標識?)EXTRF: 外部復位標識PORF: 上電復位標識5.OSCCAL—內部振蕩器頻率調整寄存器6.SPMCR—儲存程序存儲器寄存器SPMIE: SPM中斷使能RWWSB: Read-While-Write Section BusyWhen a Self-Programming (page erase or page write) operation to the RWW section is initiated, the RWWSB will be set (one) by hardware. When the RWWSB bit is set, the RWW section cannot be accessed. The RWWSB bit will be cleared if the RWWSRE bit is written to one after a Self-Programming operation is completed. Alternatively the RWWSB bit willautomatically be cleared if a page load operation is initiated.RWWSRE: Read-While-Write Section Read EnableWhen programming (page erase or page write) to the RWW section, the RWW section is blocked for reading (theRWWSB will be set by hardware). To re-enable the RWW section, the user software must wait until the programming iscompleted (SPMEN will be cleared). Then, if the RWWSRE bit is written to one at the same time as SPMEN, the nextSPM instruction within four clock cycles re-enables the RWW section. The RWW section cannot be re-enabled while the Flash is busy with a page erase or a page write (SPMEN is set). If the RWWSRE bit is written while the Flash is beingloaded, the Flash load operation will abort and the data loaded will be lost (The page buffer will be cleared when theRead-While-Write section is re-enabled).BLBSET: 置位BOOT锁定位若此位与SPMEN一起置位,则在其后4个时钟内执行的SPM将R0的数据写入到BOOT锁定位,R1 及Z寄存器的数据不参与此项操作.锁定位改变完成后,或者在4个时钟内SPM未执行,BLBSET自动清零.锁定位改变过程当中CPU 停止,只有片擦除操作才可以清除锁定位.BLBSET和SPMEN置位后4个时钟内执行的LPM将把锁定位或熔丝位(依赖于Z寄存器的Z0)读到目的寄存器. PGWRT: 页写若此位与SPMEN一起置位,则在其后4个时钟内执行的SPM将把临时缓冲区的数据写入到FLASH.页地址位于Z 寄存器的高位,页写完成后或者在4个时钟内SPM未执行,PGWRT自动清零.页写过程当中CPU停止.PGERS: 页擦除若此位与SPMEN一起置位,则在其后4个时钟内执行的SPM将擦除一页.页地址位于Z寄存器的高位.页擦除完成后或者在4个时钟内SPM未执行,PGERS自动清零.页擦除过程当中CPU 停止.SPMEN: 儲存程序存储器使能使能其后4个时钟内执行的SPM,如果与BLBSET/PGWRT/PGERS 的其中之一一起置位,则SPM将执行特殊命令.如果仅置位SPMEN则其后的SPM指令仅把R1:R0 的值保存到由Z寄存器指定的临时缓冲区.SPM完成后或者在4个时钟内SPM未执行,SPMEN自动清零.如果在低4 位写入除1001/ 0101/ 0011/ 0001 之外的值,或是在任一位已置位后,再对SPMCR操作将无效.写EEPROM将阻止对FLASH的编程以及读熔丝位和锁定位.所以在写SPMCR之前最好先检查EECR的EEWE位, 等EEWE为0 后再操作SPMCR.7.SFIOR—特殊功能IO寄存器PUD: 上拉電阻禁能。

ADC模块总结

ADC模块总结

ADCON0——用来控制 ADC 的操作, 是一位 7 位可读写的寄存器。 1. ADCS1~ADCS0:A/D 转换时钟及频率选择位。 � 00:选择系统时钟,频率为 fosc/2; � 01: 选择系统时钟,频率为 fosc/8; � 10:选择系统时钟,频率为 fosc/32; � 11:选择自带阻容(RC)振荡器,频率为 frc. 2. CHS2~CHS0:A/D 转换模拟通道选择位。选择公共通路与哪一 个模拟输入端接通, AN5~AN7 通道只有 40 脚封装的型号才具 备。 � 000:选择通道 0,RA0/AN0; � 001:选择通道 1,RA1/AN1; � 010:选择通道 2,RA2/AN2; � 011:选择通道 3,RA3/AN3; � 100:选择通道 4,RA5/AN4; � 101:选择通道 5,RE0/AN5; � 110:选择通道 6,RE1/AN6; � 111:选择通道 7,RE2/AN7; 我认为每次做 A/D 转换的时候,我们只需要估计也只能选择 一个通道进入。 (当然前提就是对一个模拟信号进行数字转换) , 现在我就有疑惑:如果我们遇到要对几个模拟量进行数字转换,
ADC
学习知识,我们要首先要明白,为什么需要这些知识,这些知 识解决了什么样的问题。 在各类电子产品中, 如何将现实的模拟物理量和计算机用的数 字来对应起来,那是相当重要的。 ADC 的任务就是: 将连续变化的模拟信号转换为离散的数字信 号,以便于我们的数字系统进行计算、处理、存储、控制、显示; DAC 的任务就是: 将经数字系统处理后的数字信号转换成模拟 信号以便进行控制,播放等。 也即: 数字处理器在采集花花世界里的模拟信号时, 离不开前 向通道中的 ADC;处理器要实现对模拟量的控制也离不开后向通 道中的 DAC。 ADC/DAC,有独立形态。也就是这么个意思:有单独的这种芯 片。但是现在很多单片机都集成了这些模块,就成为了单片机内 部的非独立形态。 哪些 ADC 指标很重要: (可能就是反应 AD 模块功能是否强大) � ADC 模块的位数: 是指数字量的位数, 其实和分辨率有 着密切的联系。 � ADC 模块的模拟通道: 有几个模拟量采集路口, 也就是 说可以对多少个模拟量进行转换。 (一) 和 ADC 模块有关的寄存器:11 个 � ADC 控制寄存器 0——ADCON0
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ADC控制和状态寄存器A—ADCSRA
ADC控制和状态寄存器A—ADCSRA
·Bit 7—ADEN:ADC使能
ADEN置位即启动ADC,否则ADC功能关闭。

在转换过程中.关闭ADC将立即中止正在进行的转换。

·Bit 6-ADSC:ADC开始转换
在单次转换模式下,ADSC置位将启动一次ADC转换。

在连续转换模式下,ADSC置位将启动首次转换。

第1次转换(在ADC启动之后置位ADSC或者在使能ADC的同时置位ADSC)需要25个ADC时钟周期.而不是正常情况下的13个。

第1次转换执行ADC初始化的工作,在转换进行过程中读取ADSC的返回值为1,直到转换结束,ADSC清零不产生任何动作。

·Bit 5—ADFR : ADC连续转换选择
当该位写1时,ADC工作在连续转换模式。

在该模式下,ADC不断对数据寄存器采样与更新。

该位写0时,停止连续转换模式。

·Bit 4—ADI F: ADC中断标志
在ADC转换结束且数据寄存器更新后,ADIF置位。

如果ADIE及SREG中的全局中断使能位I也置位,ADC转换结束中断服务程序即得以执行,同时ADIF硬件清零。

此外,还可以通过向此标志写1来清ADIF。

要注意的是,如果对ADCSRA进行“读—修改—写”操作.那么待处理的中断会被禁止,这也适用于SBI及CBI指令。

·Bit 3—ADIE:ADC中断使能
若ADIE及SREG的位I置位,则ADC转换结束中断即被激活。

·Bits 2:0—ADPS2:0 : ADC预分频器选择位
这几位确定了XTAL与ADC输人时钟之间的分频因子,详见表6—9。

相关文档
最新文档