AVR单片机的主要内部资源与应用_第1页
AVR单片机的主要内部资源与应用_第2页
AVR单片机的主要内部资源与应用_第3页
AVR单片机的主要内部资源与应用_第4页
AVR单片机的主要内部资源与应用_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

§4.2AVR单片机的SPI接口一、SPI接口:串行外设接口SPI允许ATmega16和外设或其他AVR器件进行高速的同步数据传输。1、ATmega16SPI的特点如下:全双工,3线同步数据传输,SS#,SCK,MISO,MOSI;主机或从机操作

LSB首先发送或MSB首先发送7种可编程的比特率传输结束中断标志写碰撞标志检测可以从闲置模式唤醒2、SPI工作过程主机和从机之间的SPI连接如下图所示。系统包括两个移位寄存器和一个主机时钟发生器。通过将需要的从机的SS#引脚拉低,主机启动一次通讯过程。主机和从机将需要发送的数据放入相应的移位寄存器。主机在SCK引脚上产生时钟脉冲以交换数据。主机的数据从主机的MOSI移出,从从机的MOSI移入;从机的数据从从机的MISO移出,从主机的MISO移入。主机通过将从机的SS#拉高实现与从机的同步。配置为SPI主机时,SPI接口不自动控制SS#引脚,必须由用户软件来处理。对SPI数据寄存器写入数据即启动SPI时钟,将8比特的数据移入从机。传输结束后SPI时钟停止,传输结束标志SPIF置位。如果此时SPCR寄存器的SPI中断使能位SPIE置位,中断就会发生。主机可以继续往SPDR写入数据以移位到从机中去,或者是将从机的SS#拉高以说明数据包发送完成。最后进来的数据将一直保存于缓冲寄存器里。配置为从机时,只要SS#为高,SPI接口将一直保持睡眠状态,并保持MISO为三态。在这个状态下软件可以更新SPI数据寄存器SPDR的内容。即使此时SCK引脚有输入时钟,SPDR的数据也不会移出,直至SS被拉低。一个字节完全移出之后,传输结束标志SPIF置位。如果此时SPCR寄存器的SPI中断使能位SPIE置位,就会产生中断请求。在读取移入的数据之前从机可以继续往SPDR写入数据。最后进来的数据将一直保存于缓冲寄存器里。SPI系统的发送方向只有一个缓冲器,而在接收方向有两个缓冲器。也就是说,在发送时一定要等到移位过程全部结束后才能对SPI数据寄存器执行写操作。而在接收数据时,需要在下一个字符移位过程结束之前通过访问SPI数据寄存器读取当前接收到的字符。否则第一个字节将丢失。工作于SPI从机模式时,控制逻辑对SCK引脚的输入信号进行采样。为了保证对时钟信号的正确采样,SPI时钟不能超过fosc/4。SPI使能后,MOSI、MISO、SCK和SS#引脚的数据方向将按照下表所示自动进行配置。3、SPI控制寄存器-SPCR(1)SPIE:使能SPI中断。置位后,只要SPI状态寄存器SPSR的SPIF位和状态寄存器SREG的全局中断使能位I置位,就会引发SPI中断。(2)SPE:使能SPI。SPE置位将使能SPI。进行任何SPI操作之前必须置位SPE。(3)DORD:数据次序。DORD置位时数据的LSB首先发送;否则数据的MSB首先发送。(4)MSTR:主/从选择。MSTR置位时选择主机模式,否则为从机。如果MSTR为“1”,SS#配置为输入,但被拉低,则MSTR被清零,SPSR的SPIF置位。用户必须重新设置MSTR进入主机模式。所以,主机模式下,常用主机的SS#控制从机的SS#.CPOL:时钟极性。CPOL=0,起始沿:上升沿,结束沿:下降沿;CPOL=1,起始沿:下升沿,结束沿:上降沿;CPHA:时钟相位。SPR1,SPR0:SPI时钟速率选择。确定主机的SCK速率,对从机没有影响。4、SPI状态寄存器-SPSRSPIF:SPI中断标志。串行发送结束后,SPIF置位。。进入中断服务程序后SPIF自动清零。或者可以通过先读SPSR,紧接着访问SPDR来对SPIF清零。WCOL:写碰撞标志。在发送当中对SPI数据寄存器SPDR写数据将置位WCOL。WCOL可以通过先读SPSR,紧接着访问SPDR来清零。SPI2X:SPI倍速。置位后SPI的速度加倍。若为主机则SCK频率可达CPU频率的一半。若为从机,最高只能保证fosc/4。数据寄存器-SPDR(八位):读/写寄存器,用来在寄存器文件和SPI移位寄存器之间传输数据。写寄存器将启动数据传输,读寄存器将读取寄存器的接收缓冲器。数据模式:相对于串行数据,SCK的相位CPHA和极性CPOL有4种组合。每一位数据的移出和移入发生于SCK不同的信号跳变沿,以保证有足够的时间使数据稳定。设置设置设置SPI主主机机模模式式下下的的写写、、读读数数据据程程序序::.include"m16def.inc".org$00$20main:ldir16,high(ramend)outsph,r16ldir16,low(ramend)outspl,r16clisbiddrb,4;ss#_pb4sbiddrb,5;mosi_pb5sbiddrb,7;sck_pb7cbiddrb,6;miso_pb6cbiportb,4sbiportb,6ldir16,0outspsr,r16;SPI速速度度不不倍倍增增ldir16,0b01010001;0x51,or$51outspcr,r16ldir16,0b10101010;0x55or$55,SPI要要发发送送的的数数据据outspdr,r16loop:inr16,spsr;读读取取发发送送状状态态sbrsr16,7;判判断断发发送送是是否否完完成成rjmploopinr16,spdrloop1:sbrsr16,7;判判断断接接收收是是否否完完成成rjmploop1inr16,spdr;读读取取数数据据wait:rjmpwait二、、16位位定定时时/计数数器器1((定定时时(事事件件管管理理)、、波波形形产产生生和和信信号号测测量量))1特特点点::真正正的的16位设设计计(即允允许许16位的的PWM)2个个独独立立的的输输出出比比较较单单元元双缓缓冲冲的的输输出出比比较较寄寄存存器器一个个输输入入捕捕捉捉单单元元输入入捕捕捉捉噪噪声声抑抑制制器器比较较匹匹配配发发生生时时清清除除寄寄存存器器(自动动重重载载)无干干扰扰脉脉冲冲,,相相位位正正确确的的PWM可变变的的PWM周期期频率率发发生生器器外部部事事件件计计数数器器4个独独立立的的中中断断源源(TOV1、OCF1A、OCF1B与ICF1)2、、C/T主主要要功功能能介介绍绍(1))T/C时时钟钟源源::可以以来来自自内内部部,,也也可可来来自自外外部部,,由由位位于于T/C控控制制寄寄存存器器B(TCCR1B)的的时时钟钟选选择择位位(CS12:0)决决定定。。(2))计计数数器器单单元元::16位位T/C的的主主要要部部分分是是可可编编程程的的16位位双双向向计计数数器器单单元元。。(3))输输入入捕捕捉捉单单元元::可用用来来捕捕获获外外部部事事件件,,并并为为其其赋赋予予时时间间标标记记以以说说明明此此时时间间的的发发生生时时刻刻。。外外部部事事件件发发生生的的触触发发信信号号由由引引脚脚ICP1输输入入,,也也可可通通过过模模拟拟比比较较器器单单元元来来实实现现。。时时间间标标记记可可用用来来计计算算频频率率、、占占空空比比及及信信号号的的其其它它特特征征,,以以及及为为事事件件创创建建日日志志。。(4)输入捕捉捉触发源:输入捕捉单元元的主要触发发源是ICP1。T/C1还可用用模拟比较输输出作为输入入捕捉单元的的触发源。用用户必须通过过设置模拟比比较控制与状状态寄存器ACSR的的模拟比较输输入捕捉位ACIC来来做到这一点点。要注意的的是,改变触触发源有可能能造成一次输输入捕捉。因因此在改变触触发源后必须须对输入捕捉捉标志执行一一次清零操作作以避免出现现错误的结果果。(5)噪声抑抑制器:通过一个简单单的数字滤波波方案提高系系统抗噪性。。它对输入触触发信号进行行4次采样样。只有当4次采样值值相等时其输输出才会送入入边沿检测器器。(6)输出比比较单元:16位比较器器持续比较TCNT1与与OCR1x的内容,一一旦发现它们们相等,比较较器立即产生生一个匹配信信号。然后OCF1x在在下一个定定时器时钟置置位。如果此此时OCIE1x=1,OCF1x置置位将引发输输出比较中断断。中断执行行时OCF1x标志自自动清零,或或者通过软件件在其相应的的I/O位置置写入逻辑"1”也可可以清零。根根据WGM13:0与与COM1x1:0的的不同设置,,波形发生器器用匹配信号号生成不同的的波形。波形形发生器利用用TOP和和BOTTOM信号处处理在某些模模式下对极值值的操作。输出比较单元元A的一个个特质是定义义T/C的的TOP值值(即计数数器的分辨率率)。此外,,TOP值值还用来定定义通过波形形发生器产生生的波形的周周期。(7)强制输输出比较:工作于非PWM模式时时,可以通过过对强制输出出比较位FOC1x写写”1”的的方式来产生生比较匹配。。强制比较匹匹配不会置位位OCF1x标志,,也不会重载载/清零定定时器,但是是OC1x引引脚将被更更新,好象真真的发生了比比较匹配一样样(COMx1:0决决定OC1x是置位、、清零,还是是交替变化)。(8)写TCNT1操操作阻止比较较匹配:CPU对TCNT1寄存存器的写操作作会阻止比较较匹配的发生生。这个特性性可以用来将将OCR1x初始化为与与TCNT1相同的数数值而不触发发中断。(9)比较匹匹配输出单元元:比较匹配模式式控制位COM1x1:0具有双双重功能。波波形发生器利利用COM1x1:0来来确定下一一次比较匹配配发生时的输输出比较OC1x状态态;COM1x1:0还控制OC1x引引脚输出的来来源。(10)比较较输出模式和和波形产生::波形发生器利利用COM1x1:0的的方法在普普通模式、CTC模式式和PWM模模式下有所所区别。对于于所有的模式式,设置COM1x1:0=0表明比较较匹配发生时时波形发生器器不会操作OC1x寄寄存器。(11)工作作模式工作模模式:-T/C和和输出比较较引脚的行为为-由波形形发生模式(WGM13:0)及及比较输出模模式(COM1x1:0)的控制制位决定。比比较输出模式式对计数序列列没有影响,,而波形产生生模式对计数数序列则有影影响。COM1x1:0控制PWM输出是是否为反极性性。非PWM模式时COM1x1:0控制输输出是否应该该在比较匹配配发生时置位位、清零,或或是电平取反反。(12)普通通模式:为最简单的工工作模式。在在此模式下计计数器不停地地累加。计到到最大值后(TOP=0xFFFF)由由于数值溢出出计数器简单单地返回到最最小值0x0000重重新开始。在在TCNT1为零的同一一个定时器时时钟里T/C溢出标志TOV1置位位。此时TOV1有点象象第17位,,只是只能置置位,不会清清零。但由于于定时器中断断服务程序能能够自动清零零TOV1,,因此可以通通过软件提高高定时器的分分辨率。在普普通模式下没没有什么需要要特殊考虑的的,用户可以以随时写入新新的计数器数数值。(13)CTC(比较较匹配时清零零定时器)模模式:在CTC模模式里OCR1A或ICR1寄寄存器用于调调节计数器的的分辨率。当当计数器的数数值TCNT1等于OCR1A(WGM13:0=4)或等等于ICR1(WGM13:0=12)时计数器器清零。OCR1A或或ICR1定定义了计数数器的TOP值,亦即即计数器的分分辨率。这个个模式使得用用户可以很容容易地控制比比较匹配输出出的频率,也也简化了外部部事件计数的的操作。(14)快速PWM模式式:可用来产生高高频的PWM波形。快快速PWM模模式与其他PWM模式的的不同之处是是其单边斜坡坡工作方式。。计数器从BOTTOM计到TOP,然后立即即回到BOTTOM重重新开始。对对于普通的比比较输出模式式,输出比较较引脚OC1x在TCNT1与OCR1x匹匹配时置位位,在TOP时清零;;对于反向比比较输出模式式,OCR1x的动作作正好相反。。由于使用了了单边斜坡模模式,快速PWM模式式的工作频率率比使用双斜斜坡的相位修修正PWM模模式高一倍倍。此高频操操作特性使得得快速PWM模式十分分适合于功率率调节,整流流和DAC应应用。高频可可以减小外部部元器件(电电感,电容容)的物理理尺寸,从而而降低系统成成本。(15)输出出的PWM频频率可以通通过如下公式式计算得到::变量N代表表分频因子(1、8、64、、256或或1024)。3.定时器/计数器1寄存器的说说明(1)控制寄寄存器A--TCCR1ABit7:6–COM1A1:0:通道A的比较输出模模式Bit5:4–COM1B1:0:通道B的比较输出模模式COM1A1:0与COM1B1:0分别控制制OC1A与与OC1B状态。如果果COM1A1:0(COM1B1:0)的一一位或两位被被写入"1””,OC1A(OC1B)输出功功能将取代I/O端口口功能。此时时OC1A(OC1B)相应的输出出引脚数据方方向控制必须须置位以使能能输出驱动器器。OC1A(OC1B)与物理理引脚相连时时,COM1x1:0的的功能由WGM13:0的设置置决定。Bit3––FOC1A:通道A强制输出比较较Bit2––FOC1B:通道B强制输出比较较FOC1A/FOC1B只有当WGM13:0指定为非PWM模式时时被激活。为为与未来器件件兼容,工作作在PWM模模式下对TCCR1A写入时,,这两位必须须清零。当FOC1A/FOC1B位置1,,立即强制制波形产生单单元进行比较较匹配。COM1x1:0的设置置改变OC1A/OC1B的输输出。注意FOC1A/FOC1B位作为选选通信号。COM1x1:0位的的值决定强制制比较的效果果。在CTC模式下使使用OCR1A作为TOP值,,FOC1A/FOC1B选通通即不会产生生中断也不好好清除定时器器。FOC1A/FOC1B位总总是读为0。。Bit1:0–WGM11:0:波形发生模式式这两位与位于于TCCR1B寄存器器的WGM13:2相相结合,用于于控制计数器器的计数序列列——计数器计数的上上限值和确定定波形发生器器的工作模式式(见Table47)。T/C支持的的工作模式有有:普通模式式(计数器器),比较匹匹配时清零定定时器(CTC)模式式,及三种脉脉宽调制(PWM)模模式。控制寄存器TCCR1B:Bit7––ICNC1:入入捕捉噪声抑抑制器。置位将使能输输入捕捉噪声声抑制功能。。此时外部引引脚ICP1的输入被被滤波。其作作用是从ICP1引脚脚连续进行4次采样。。如果4个个采样值都相相等,那么信信号送入边沿沿检测器。因因此使能该功功能使得输入入捕捉被延迟迟了4个时时钟周期。Bit6––ICES1:输输入捕捉捉触发沿沿选择。。该位选择择使用ICP1上的的哪个边边沿触发发捕获事事件。ICES为"0”选选择的的是下降降沿触发发输入捕捕捉;ICES1为为"1”选选择的是是逻辑电电平的上上升沿触触发输入入捕捉。。按照ICES1的的设置捕捕获到一一个事件件后,计计数器的的数值被被复制到到ICR1寄寄存器。。捕获事事件还会会置为ICF1。如果果此时中中断使能能,输入入捕捉事事件即被被触发。。当ICR1用用作TOP值值(见见TCCR1A与TCCR1B寄寄存器器中WGM13:0位位的描描述)时时,ICP1与输入入捕捉功功能脱开开,从而而输入捕捕捉功能能被禁用用。Bit5––保留留位。为保证与与将来器器件的兼兼容性,,写TCCR1B时时,该位位必须写写入"0”。Bit4:3–WGM13:2:波波形发发生模式式。Bit2:0–CS12:0:T/C的的时钟钟源选择择。TCNT1H与与TCNT1L:TCNT1H与与TCNT1L组成了了T/C1的数数据寄存存器TCNT1。通过过它们可可以直接接对定时时器/计计数器单单元的16位位计数器器进行读读写访问问。输出比较较寄存器器1A--OCR1AH与与OCR1AL输出比较较寄存器器1B--OCR1BH与与OCR1BL该寄存器器中的16位位数据与与TCNT1寄寄存器器中的计计数值进进行连续续的比较较,一旦旦数据匹匹配,将将产生一一个输出出比较中中断,或或改变OC1x的输输出逻辑辑电平。。输入捕捉捉寄存器器1--ICR1H与ICR1L:当外部引引脚ICP1(或T/C1的的模拟比比较器)有输入入捕捉触触发信号号产生时时,计数数器TCNT1中的值值写入ICR1中。。ICR1的的设定值值可作为为计数器器的TOP值值。注意:TCNT1、OCR1A/B与ICR1是AVRCPU通通过8位位数据总总线可以以访问的的16位位寄存器器。读写写16位位寄存器器需要两两次操作作。写16位位寄存存器时,,应先写写入该寄寄存器的的高位字字节;而而读16位寄寄存器时时应先读读取该寄寄存器的的低位字字节。中断屏蔽蔽寄存器器-TIMSK:Bit5––TICIE1:T/C1输输入捕捉捉中断使使能。当该位被被设为"1”,,且状态态寄存器器中的I位被被设为"1”时时,T/C1的的输入捕捕捉中断断使能。。一旦TIFR的ICF1置位位,CPU即即开始执执行T/C1输输入捕捕捉中断断服务程程序。Bit4––OCIE1A:输输出比比较A匹配配中断使使能。当该位被被设为"1”,,且状态态寄存器器中的I位被被设为"1”时时,T/C1的的输出比比较A匹匹配中中断使能能。一旦旦TIFR上上的OCF1A置位位,CPU即即开始执执行T/C1输输出比比较A匹匹配中中断服务务程序。。Bit3––OCIE1B:T/C1输输出比较较B匹匹配中中断使能能。当该位被被设为"1”,,且状态态寄存器器中的I位被被设为"1”时时,使使能T/C1的的输出出比较B匹配配中断使使能。一一旦TIFR上上的OCF1B置置位,CPU即即开始始执行T/C1输出出比较B匹配配中断服服务程序序。Bit2––TOIE1:T/C1溢出出中断使使能。当该位被被设为"1”,,且状态态寄存器器中的I

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论