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

ADC总结

ADC总结

函数将外设ADCx 的全部寄存器重设为缺省值函数根据ADC_InitStruct 中指定的参数初始化外设ADCx 的寄存器为了能够正确地配置每一个ADC 通道,用户在调用ADC_Init()之后,必须调用ADC_ChannelConfig()来配置每一个所使用通道的转换次序和采样时间.地址偏移:0x00复位值:0x0000 0000ADC_GetFlagStatus检查制定ADC 标志位置1 与否例Status = ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC);位31:15 保留。

必须保持为0。

位:规则通道开始位ADC_FLAG_STRT Status = 该位由硬件在规则通道转换开始时设置,由软件清ADC_GetFlagStatus(ADC1, 除。

ADC_FLAG_EOC); 0:规则通道转换未开始1:规则通道转换已开始位3 :注入通道开始位ADC_FLAG_JSTRT Status = 该位由硬件在注入通道组转换开始时设置,由软件ADC_GetFlagStatus(ADC1, 清除。

ADC_FLAG_EOC); 0:注入通道转换未开始1:注入通道转换已开始位ADC_FLAG_JEOC Status = 该位由硬件在所有注入通道组转换结束时设置,由ADC_GetFlagStatus(ADC1, 软件清除ADC_FLAG_EOC); 0:转换未完成1:转换完成位ADC_FLAG_EOC Status = 该位由硬件在(规则或者注入)通道组转换结束时设ADC_GetFlagStatus(ADC1, 置,由软件清除或者由读取ADC_DR时清除ADC_FLAG_EOC); 0:转换未完成1:转换完成位ADC_FLAG_AWD Status = 该位由硬件在转换的电压值超出了ADC_LTR和ADC_GetFlagStatus(ADC1, ADC_HTR寄存器定义的范围时设置,由软件清除ADC_FLAG_EOC); 0:没有发生摹拟看门狗事件1:发生摹拟看门狗事件地址偏移:0x04复位值:0x0000 0000位31:24位23 ADC_AnalogWatchdog_SingleRegEnable 单个规则通道上设置摹拟看门狗ADC_AnalogWatchdog_SingleInjecEnable 单个注入通道上设置摹拟看门狗ADC_AnalogWatchdog_SingleRegorInjecEna ble 单个规则通道或者注入通道上设置摹拟看门狗ADC_AnalogWatchdog_AllRegEnable 所有规则通道上设置摹拟看门狗ADC_AnalogWatchdog_AllInjecEnable 所有注入通道上设置摹拟看门狗ADC_AnalogWatchdog_AllRegAllInjecEnable 所有规则通道和所有注入通道上上设置摹拟看门狗ADC_AnalogWatchdog_None 不设置摹拟看门狗位22ADC_AnalogWatchdogCmd(ADC2,ADC_AnalogWatchdog_AllRegAllInjec Enable);位21:20位19:16ADC_Mode_IndependentADC1 和ADC2 工作在独立模式ADC_Mode_RegInjecSimultADC1 和ADC2 工作在同步规则和同步注入模式ADC_Mode_RegSimult_AlterTrigADC1 和ADC2 工作在同步规则模式和交替触发模式ADC_Mode_InjecSimult_FastInterlADC1 和ADC2 工作在同步规则模式和快速交替模式ADC_Mode_InjecSimult_SlowInterlADC1 和ADC2 工作在同步注入模式和慢速交替模式ADC_Mode_InjecSimultADC1 和ADC2 工作在同步注入模式保留。

ADC_TEST

ADC_TEST

DDRD = 0xff; //D 口作输出口,控制数码管位数 PORTD = 0x00; }
/************************************************************************** //函数名称:void adc_convert(int8_t N) //功 能:对 N 通道进行 ADC 转换 //入口参数:N //出口参数:NULL //备 注:NULL **************************************************************************/ void adc_convert(uint8_t N) { uint16_t Result = 0;
adc所以一定要注它主要是设置adc了说一下这个测然后把两路转换的结果用数码管显示出来本来在数据手册上说的是而懒猫也没有写什么控制条件最avr学习日志四十九学习使用单片机自带的adc每天进步一点点开心多一点懒猫爱飞硬件说完了说一下软件软件不是太难主要就是寄存器的配置还有就是数码显示用的是八位共阳极数码管显示精度是两位
//读取转换结果,并转换为电压值 Result = (uint16_t)((ADCL+(ADCH<<8))*500.0/1023.0);
//Result = (uint16_t)(ADC*500.0/1023.0); //这个表达式具有同样的效果
//ADC0 结果放入数组 0.1.2 单元 ADC1 的结果放入数组 4.5.6 中 Dis_Buf[N * 4] = Result/100; Dis_Buf[N * 4+1] = Result/10%10; Dis_Buf[N * 4+2] = Result%10;

AVR学习笔记

AVR学习笔记

PC = progammer counter //程序计数器ACC = accumulate //累加器PSW = progammer status word //程序状态字SP = stack point //堆栈指针DPTR = data point register //数据指针寄存器IP = interrupt priority //中断优先级IE = interrupt enable // 中断使能TMOD = timer mode //定时器方式 (定时器/计数器控制寄存器)ALE = alter (变更,可能是)PSEN = progammer saving enable //程序存储器使能(选择外部程序存储器的意思) EA = enable all(允许所有中断)完整应该是 enable all interruptPROG = progamme (程序)SFR = special funtion register //特殊功能寄存器TCON = timer control //定时器控制PCON = power control //电源控制MSB = most significant bit//最高有效位LSB = last significant bit//最低有效位CY = carry //进位(标志)AC = assistant carry //辅助进位OV = overflow //溢出ORG = originally //起始来源DB = define byte //字节定义EQU = equal //等于DW = define word //字定义E = enable //使能OE = output enable //输出使能RD = read //读WR = write //写中断部分:INT0 = interrupt 0 //中断0INT1 = interrupt 1//中断1T0 = timer 0 //定时器0T1 = timer 1 //定时器1TF1 = timer1 flag //定时器1 标志 (其实是定时器1中断标志位)IE1 = interrupt exterior //(外部中断请求,可能是)IT1 = interrupt touch //(外部中断触发方式,可能是)ES = enable serial //串行使能ET = enable timer //定时器使能EX = enable exterior //外部使能(中断)PX = priority exterior //外部中断优先级PT = priority timer //定时器优先级PS = priority serial //串口优先级第一部分二极管发光的条件是正负极相差达1V以上。

ADC数据采集显示实验

ADC数据采集显示实验
1
工程基础实验与训练中心实验报告
那么仅需读取 ADCH 就足够了。否 则必须先读出 ADCL 再读 ADCH ,其中 MUX4~0: 模拟通道与增益选择位。 (3)ADC 控制和状态寄存器 A - ADCSRA:其中 ADEN: ADC 使 能位;ADSC: ADC 转换启动位;ADATE: ADC 自动触发使能位;ADIF: ADC 中断标志;ADIE: ADC 中断使能; ADPS2~0: ADC 预分频器 选择位。 (4)特殊功能 IO 寄存器 - SFIOR:其中 ADTS2~0: ADC 自动触 发源;Res: 保留位。
如下图,使用软件 PROTEUS 画出原理图。 因为在实际中没有 AVR 的开发板,所以使用软件来模型出,来 显示。 当然也要了解这个软件的使用方法。 因此,在下面的图形中能够显示出 ADC 的数据采集与显示,所 以如下图:
4
工程基础实验与训练中心实验报告
三、程序流程图 开始
1602初始化
检测是否
实验原理及主要工作: 一、实验原理
ATmega16 内部的 ADC 拥有很多的特点,更具这些特点可以知 道本次实验的有些内容的要求。本次试验是数据采集和显示,用 ADC 转换器来进行数据的采集,并在 1602 的液晶显示屏上显示出数据采 集的结果。
要做本次实验还需了解 ATmega16 内部的 ADC 的寄存器,ADC 有以下几个寄存器: (1)多路复用器选择寄存器 - ADMUX :其中 REFS1/REFS0: 参考电压源选择设置;ADLAR: ADC 转换结果 对齐选择位。 (2)ADC 数据寄存器 - ADCL 及 ADCH:读取 ADCL 之后, ADC 数据寄存器一直要等到 ADCH 也被读出才可以进行数据更 新。因此,如果转换结果为左对齐,且要求的精度不高于 8 比特,

十三、模拟比较器和ADC接口

十三、模拟比较器和ADC接口

图 10-3
ADC 功能单元方框图
ADC 通过逐次比较(successive approximation)方式,将输入端的模拟电压转换成 10 位的数字量。 最小值代表地,最大值为 AREF 引脚上的电压值减 1 个 LSB。可以通过 ADMUX 寄存器中 REFSn 位的设置, 选 择将芯片内部参考电源(2.56V)或 AVcc 连接到 AREF,作为 A/D 转换的参考电压。这时,内部电压参考源 可以通过外接于 AREF 引脚的电容来稳定,以改进抗噪特性。 模拟输入通道和差分增益的选择是通过 ADMUX 寄存器中的 MUX 位设定的。任何一个 ADC 的输入引脚, 包括地(GND)以及内部的恒定能隙(fixed bandgap)电压参考源,都可以被选择用来作为 ADC 的单端输
4
� ADC 转换结果的读取可设置为左端对齐(LEFT ADJUSTMENT); � ADC 的电压输入范围 0~Vcc; � 可选择的内部 2.56V 的 ADC 参考电压源; � 自由连续转换模式和单次转换模式; � ADC 自动转换触发模式选择; � ADC 转换完成中断; � 休眠模式下的噪声抑制器(NOISE CANCELER)。 AVR 的 ADC 功能单元由独立的专用模拟电源引脚 AVcc 供电。AVcc 和 Vcc 的电压差别不能大于±0.3V。 ADC 转换的参考电源可采用芯片内部的 2.56V 参考电源,或采用 AVcc,也可使用外部参考电源。使用外部 参考电源时,外部参考电源由引脚 ARFE 接入。使用内部电压参考源时,可以通过在 AREF 引脚外部并接一 个电容来提高 ADC 的抗噪性能。 ADC 功能单元包括采样保持电路,以确保输入电压在 ADC 转换过程中保持恒定。ADC 方框图如图 10-3 所示。

ATmega16之AD转换与ADC中断程序

ATmega16之AD转换与ADC中断程序
11
1、ATmega16内部ADC特点
12
2、模拟噪声抑制技术
• 设备内部及外部的数字电路都会产生电磁 干扰(EMI),从而影响模拟测量的精度。如 果转换精度要求较高,那么可以通过以下 方法来减少噪声:
- 1. 模拟通路越短越好。保证模拟信号线位于模拟地之上 ,并使它们与高速切换的数字信号线分开。 - 2. AVCC 应通过 LC 网络与数字电压源 VCC 连接。 - 3. 使用 ADC 噪声抑制器来降低来自 CPU 的干扰噪声。 - 4. 如果有其他 ADC 端口被用作数字输出,那么必须保 证在转换进行过程中它们不会有电平的切换。
39
• 平均滤波:对一个参数进行连续的多次采样,然后取其平 均值。因为是在很短的时间内进行的多次采样,对消除高 频干扰是较有效的。
• 一阶滞后滤波:设上个采样周期的测量结果为Yn-1,本次 转换值为xn,滤波系数为α,0<=α<1,本次的测量结果为 Yn,则Yn=α×Yn-1+(1-α)×xn。α越大,滤波作用越强。
36
SFIOR
4、ADC及相关寄存器
• 中断寄存器 - SREG
- Bit 7 – I: 全局中断使能
I 置位时使能全局中断。单独的中断使能由其他独立的控制寄存器控制 。如果 I 清零,则不论单独中断标志置位与否,都不会产生中断。任意一个 中断发生后 I 清零,而执行 RETI 指令后 I 恢复置位以使能中断。I 也可以通 过 SEI 和 CLI 指令来置位和清零。
ADPS1 0 0 1 1 0 0 1 1
ADPS1 0 1 0 1 0 1 0 1
分频因子 2 2 4 8 16 32 64
128
28
ADCL 及 ADCH

STM32】ADC的基本原理、寄存器(超基础、详细版)

STM32】ADC的基本原理、寄存器(超基础、详细版)

STM32】ADC的基本原理、寄存器(超基础、详细版)ADC的基本介绍ADC的基本定义Analog-to-Digital Converter的缩写。

指模/数转换器或者模拟/数字转换器。

是指将连续变量的模拟信号转换为离散的数字信号的器件。

典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。

ADC的主要特征•12位逐次逼近型的模拟数字转换器;•最多带3个ADC控制器,可以单独使用,也可以使用双重模式提高采样率;•最多支持23个通道,可最多测量21个外部和2个内部信号源;•支持单次和连续转换模式;•转换结束,注入转换结束,和发生模拟看门狗事件时产生中断;•通道0到通道n的自动扫描模式;•自动校准;•采样间隔可以按通道编程;•规则通道和注入通道均有外部触发选项;•转换结果支持左对齐或右对齐方式存储在16位数据寄存器;•ADC转换时间:最大转换速率1us(最大转换速度为1MHz,在ADCCLK=14M,采样周期为1.5个ADC时钟下得到);•ADC供电要求:2.4V-3.6V;•ADC输入范围:VREF- ≤ VIN ≤ VREF+。

STM32F10x系列芯片ADC通道和引脚对应关系由上图中可以看出,STM32F103ZET6带3个ADC控制器,一共支持23个通道,包括21个外部和2个内部信号源;但是每个ADC控制器最多只可以有18个通道,包括16个外部和2个内部信号源。

ADC的基本原理ADC的工作框图ADC模块的框图看起来比较复杂,接下来会一点一点地对它进行分析。

ADC引脚在框图中最左边的一列是ADC的各个引脚,它们的名称、信号类型和作用见下图:一般情况下,VDD是3.3V,VSS接地,相对应的,VDDA是3.3V,VSSA也接地,模拟输入信号不要超过VDD(3.3V)。

ADC时钟配置框图中标注的来自ADC预分频器的ADCCLK是ADC模块的时钟来源。

通常,由时钟控制器提供的ADCCLK时钟和PCLK2(APB2时钟)同步。

AVR_ADC寄存器详细说明

AVR_ADC寄存器详细说明

1.ADMUX 多路复用器选择寄存器Bit 7:6, ADC参考电源选择位Bit5 转换结果左对齐选择位写“1”时,结果左对齐,否则右对齐。

Bit3:0 模拟输入通道和增益选择位,其余选择看手册。

2.ADCSRA 控制和状态寄存器Bit7_ADEN ADC使能位,该位写“1”使能ADC,写“0”关闭ADC。

Bit6_ADSC 转换开始位。

在单次转换模式下,写“1”将启动一次转换。

在自由连续转换模式下,写“1”则启动转换Bit5_ADATE 自动转换触发允许位。

ADATE置位将启动ADC自动触发功能。

触发信号的上跳沿启动ADC转换。

触发信号源通过SFIOR 寄存器的ADC 触发信号源选择位ADTS 设置。

Bit 4 – ADIF: ADC 中断标志。

在ADC 转换结束,且数据寄存器被更新后,ADIF 置位。

(如果使用中断的话,就不用手动清零)Bit 3 – ADIE: ADC 中断使能。

若ADIE 及SREG 的位I 置位,ADC 转换结束中断即被使能。

Bits 2:0 – ADPS2:0: ADC 预分频器选择位。

由这几位来确定XTAL 与ADC 输入时钟之间的分频因子。

3.ADCL和ADCH 数据寄存器(图中上为“右对齐”,下为“左对齐”)4.SFIOR 特殊功能I/O寄存器Bit 7:5 – ADTS2:0: ADC 自动触发源若ADCSRA 寄存器的ADATE 置位,ADTS 的值将确定触发ADC 转换的触发源;否则,ADTS的设置没有意义。

被选中的中断标志在其上升沿触发ADC转换。

从一个中断标志清零的触发源切换到中断标志置位的触发源会使触发信号产生一个上升沿。

如果此时, ADCSRA 寄存器的ADEN 为1,ADC 转换即被启动。

切换到连续运行模式(ADTS[2:0]=0)时,即使ADC 中断标志已经置位也不会产生触发事件。

单片机ADC应用笔记

单片机ADC应用笔记

AVR单片机模数转换的ADC实验ATmega16内容来源:本站整理发布时间:[2010-11-07]查看次数:7226.2 模数转换的ADC实验6.2.1、实例功能AVR的模数转换器ADC具有下列特点:1.10位精度;2.0.5LSB积分非线形误差3.±2LSB的绝对精度;4.13µs~260µs的转换时间;5.在最大精度下可达到每秒15kSPS的采样速率;6.8路可选的单端输入通道;7.7路差分输入通道;8.2路差分输入通道带有可选的10×和200×增益;9.ADC转换结果的读取可设置为左端对齐(LEFTADJUSTMENT);10.ADC的电压输入范围0~Vcc;11.可选择的内部2.56V的ADC参考电压源;12.自由连续转换模式和单次转换模式;13.ADC自动转换触发模式选择;14.ADC转换完成中断;15.休眠模式下的噪声抑制器(NOISE CANCELER)。

在本实例中,我们将编写程序实现将模数转换后获得的电压值通过单片机的串口发送到计算机,然后通过计算机上的串口助手显示测量的电压值。

本实例共有3个功能模块,分别描述如下:● 单片机系统:使用单片机的串口实现将模数转换后获得的电压值通过串口发送到计算机。

● 外围电路:RS232电平转换电路,DB9串行接口插座,模拟电压输入采集电路。

● 软件程序:进一步熟悉单片机的串行通信,并掌握单片机的模数转换的方法。

6.2.2、器件和原理关于串行接口的原理已接单片机与计算机的串口的连接在上一实例中进行了描述,在本实例中不再重复。

本实例只介绍ATmega16单片机如何通过内置的模数转换模块采集外界输入的模拟电压。

1、ATmega16单片机的模数转换器ADC介绍由于单片机只能处理数字信号,所以外部的模拟信号量需要转变成数字量才能进一步的由单片机进行处理。

ATmega16内部集成有一个10位逐次比较(successive approximation)ADC电路。

AD寄存器

AD寄存器

ADC控制模块和状态寄存器ADCRA
ADEN:ADC使能控制位。

为1启动ADC,否则关闭
ADSC:ADC启动装换控制位。

单次工作模式下为1:,启动一次ADC转换。

连续转换工作模式下为1:,启动首次ADC转换。

ADFR: 1:ADC工作在连续转换模式下。

0:停止连续转换。

ADIF:ADC中断标志位。

ADIF=1,I=1时,产生一个ADC转换结束中断事件,ADC进入中断程序时,ADIF便被硬件自动清零,也可以通过给ADIF写1清除。

ADIE:ADC中断使能位。

ADIE=1,I=1,ADC转换结束使能。

ADPS2,ADPS1,ADPS0:ADC预分频选择位。

用于确定系统时钟与ADC 转入时钟之间的分频因子:
ADC模块多工选择寄存器ADMUX
REFS1,REFS0:参考电压选择位。

如下表所示:
ADLAR: 置1时转换结果为左对齐,否则为右对齐。

MUX4——MUX0模拟通道与增益选择位。

用于选择连接到ADC引脚的模拟输入,以及控制差分通道的增益。

如下表所示:(如果在ADC转换过程中改变其设置,只有等到当前转换结束之后,该改变才会起作用。


ADC模块数据寄存器ADCL,ADCH(用于存放ADC的转换结果)
ADC模块特殊I/O寄存器SFIOR
ADHSM:A DC模块的快速模式控制位。

置1时,ADC模块进入快速工作式。

  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。

相关文档
最新文档