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

下载本文档

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

文档简介

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

LSB首先发送或MSB首先发送7种可编程的比特率传输结束中断标志写碰撞标志检测可以从闲置模式唤醒§4.2AVR单片机的SPI接口12、SPI工作过程主机和从机之间的SPI连接如下图所示。系统包括两个移位寄存器和一个主机时钟发生器。通过将需要的从机的SS#引脚拉低,主机启动一次通讯过程。主机和从机将需要发送的数据放入相应的移位寄存器。主机在SCK引脚上产生时钟脉冲以交换数据。主机的数据从主机的MOSI移出,从从机的MOSI移入;从机的数据从从机的MISO移出,从主机的MISO移入。主机通过将从机的SS#拉高实现与从机的同步。配置为SPI主机时,SPI接口不自动控制SS#引脚,必须由用户软件来处理。对SPI数据寄存器写入数据即启动SPI时钟,将8比特的数据移入从机。传输结束后SPI时钟停止,传输结束标志SPIF置位。如果此时SPCR寄存器的SPI中断使能位SPIE置位,中断就会发生。主机可以继续往SPDR写入数据以移位到从机中去,或者是将从机的SS#拉高以说明数据包发送完成。最后进来的数据将一直保存于缓冲寄存器里。2、SPI工作过程2配置为从机时,只要SS#为高,SPI接口将一直保持睡眠状态,并保持MISO为三态。在这个状态下软件可以更新SPI数据寄存器SPDR的内容。即使此时SCK引脚有输入时钟,SPDR的数据也不会移出,直至SS被拉低。一个字节完全移出之后,传输结束标志SPIF置位。如果此时SPCR寄存器的SPI中断使能位SPIE置位,就会产生中断请求。在读取移入的数据之前从机可以继续往SPDR写入数据。最后进来的数据将一直保存于缓冲寄存器里。配置为从机时,只要SS#为高,SPI接3SPI系统的发送方向只有一个缓冲器,而在接收方向有两个缓冲器。也就是说,在发送时一定要等到移位过程全部结束后才能对SPI数据寄存器执行写操作。而在接收数据时,需要在下一个字符移位过程结束之前通过访问SPI数据寄存器读取当前接收到的字符。否则第一个字节将丢失。工作于SPI从机模式时,控制逻辑对SCK引脚的输入信号进行采样。为了保证对时钟信号的正确采样,SPI时钟不能超过fosc/4。SPI使能后,MOSI、MISO、SCK和SS#引脚的数据方向将按照下表所示自动进行配置。SPI系统的发送方向只有一个缓冲器,而在接收方向有4AVR单片机的主要内部资源与应用课件53、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#.3、SPI控制寄存器-SPCR(1)SPIE:使能SP6CPOL:时钟极性。CPOL=0,起始沿:上升沿,结束沿:下降沿;CPOL=1,起始沿:下升沿,结束沿:上降沿;CPHA:时钟相位。SPR1,SPR0:SPI时钟速率选择。确定主机的SCK速率,对从机没有影响。CPOL:时钟极性。CPOL=0,起始沿:上升沿,结束沿7AVR单片机的主要内部资源与应用课件84、SPI状态寄存器-SPSRSPIF:SPI中断标志。串行发送结束后,SPIF置位。。进入中断服务程序后SPIF自动清零。或者可以通过先读SPSR,紧接着访问SPDR来对SPIF清零。WCOL:写碰撞标志。在发送当中对SPI数据寄存器SPDR写数据将置位WCOL。WCOL可以通过先读SPSR,紧接着访问SPDR来清零。SPI2X:SPI倍速。置位后SPI的速度加倍。若为主机则SCK频率可达CPU频率的一半。若为从机,最高只能保证fosc/4。4、SPI状态寄存器-SPSRSPIF:SPI中断标9数据寄存器-SPDR(八位):读/写寄存器,用来在寄存器文件和SPI移位寄存器之间传输数据。写寄存器将启动数据传输,读寄存器将读取寄存器的接收缓冲器。数据模式:相对于串行数据,SCK的相位CPHA和极性CPOL有4种组合。每一位数据的移出和移入发生于SCK不同的信号跳变沿,以保证有足够的时间使数据稳定。设置设置设置数据寄存器-SPDR(八位):读/写寄存器,用来在寄存器文10AVR单片机的主要内部资源与应用课件11AVR单片机的主要内部资源与应用课件12SPI主机模式下的写、读数据程序:.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速度不倍增SPI主机模式下的写、读数据程序:13ldir16,0b01010001;0x51,or$51outspcr,r16

ldir16,0b10101010;0x55or$55,SPI要发送的数据outspdr,r16

loop:inr16,spsr;读取发送状态sbrsr16,7;判断发送是否完成rjmploop

inr16,spdrloop1:sbrsr16,7;判断接收是否完成rjmploop1inr16,spdr;读取数据wait:rjmpwaitldir16,0b01010001;0x51,14二、16位定时/计数器1(定时(事件管理)、波形产生和信号测量)1特点:真正的16位设计(即允许16位的PWM)2个独立的输出比较单元双缓冲的输出比较寄存器一个输入捕捉单元输入捕捉噪声抑制器比较匹配发生时清除寄存器(自动重载)无干扰脉冲,相位正确的PWM可变的PWM周期频率发生器外部事件计数器4个独立的中断源(TOV1、OCF1A、OCF1B与ICF1)二、16位定时/计数器1(定时(事件管理)、波形产生和信152、C/T主要功能介绍(1)T/C时钟源:可以来自内部,也可来自外部,由位于T/C控制寄存器B(TCCR1B)的时钟选择位(CS12:0)决定。(2)计数器单元:16位T/C的主要部分是可编程的16位双向计数器单元。(3)输入捕捉单元:可用来捕获外部事件,并为其赋予时间标记以说明此时间的发生时刻。外部事件发生的触发信号由引脚ICP1输入,也可通过模拟比较器单元来实现。时间标记可用来计算频率、占空比及信号的其它特征,以及为事件创建日志。2、C/T主要功能介绍16(4)输入捕捉触发源:输入捕捉单元的主要触发源是ICP1。T/C1还可用模拟比较输出作为输入捕捉单元的触发源。用户必须通过设置模拟比较控制与状态寄存器ACSR的模拟比较输入捕捉位ACIC来做到这一点。要注意的是,改变触发源有可能造成一次输入捕捉。因此在改变触发源后必须对输入捕捉标志执行一次清零操作以避免出现错误的结果。(5)噪声抑制器:通过一个简单的数字滤波方案提高系统抗噪性。它对输入触发信号进行4次采样。只有当4次采样值相等时其输出才会送入边沿检测器。(4)输入捕捉触发源:输入捕捉单元的主要触发源是ICP1。T17(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相同的数值而不触发中断。(6)输出比较单元:16位比较器持续比较TCNT1与OCR118(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控制输出是否应该在比较匹配发生时置位、清零,或是电平取反。(9)比较匹配输出单元:比较匹配模式控制位COM1x1:019(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值,亦即计数器的分辨率。这个模式使得用户可以很容易地控制比较匹配输出的频率,也简化了外部事件计数的操作。(12)普通模式:为最简单的工作模式。在此模式下计数器不停地20(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)。(14)快速PWM模式:可用来产生高频的PWM波形。快速21AVR单片机的主要内部资源与应用课件223.定时器/计数器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的设置决定。3.定时器/计数器1寄存器的说明23AVR单片机的主要内部资源与应用课件24Bit3–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)模式。Bit3–FOC1A:通道A强制输出比较25AVR单片机的主要内部资源与应用课件26控制寄存器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与输入捕捉功能脱开,从而输入捕捉功能被禁用。控制寄存器TCCR1B:27Bit5–保留位。为保证与将来器件的兼容性,写TCCR1B时,该位必须写入"0”。Bit4:3–WGM13:2:波形发生模式。Bit2:0–CS12:0:T/C的时钟源选择。Bit5–保留位。为保证与将来器件的兼容性,写TCCR28TCNT1H与TCNT1L:TCNT1H与TCNT1L组成了T/C1的数据寄存器TCNT1。通过它们可以直接对定时器/计数器单元的16位计数器进行读写访问。输出比较寄存器1A-OCR1AH与OCR1AL输出比较寄存器1B-OCR1BH与OCR1BL该寄存器中的16位数据与TCNT1寄存器中的计数值进行连续的比较,一旦数据匹配,将产生一个输出比较中断,或改变OC1x的输出逻辑电平。TCNT1H与TCNT1L:TCNT1H与TCNT1L组成29输入捕捉寄存器1-ICR1H与ICR1L:当外部引脚ICP1(或T/C1的模拟比较器)有输入捕捉触发信号产生时,计数器TCNT1中的值写入ICR1中。ICR1的设定值可作为计数器的TOP值。注意:

TCNT1、OCR1A/B与ICR1是AVRCPU通过8位数据总线可以访问的16位寄存器。读写16位寄存器需要两次操作。写16位寄存器时,应先写入该寄存器的高位字节;而读16位寄存器时应先读取该寄存器的低位字节。输入捕捉寄存器1-ICR1H与ICR1L:30中断屏蔽寄存器-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匹配中断服务程序。中断屏蔽寄存器-TIMSK:31Bit3–OCIE1B:T/C1输出比较B匹配中断使能。当该位被设为"1”,且状态寄存器中的I位被设为"1”时,使能T/C1的输出比较B匹配中断使能。一旦TIFR上的OCF1B置位,CPU即开始执行T/C1输出比较B匹配中断服务程序。Bit2–TOIE1:T/C1溢出中断使能。当该位被设为"1”,且状态寄存器中的I位被设为”1”时,T/C1的溢出中断使能。一旦TIFR上的TOV1置位,CPU即开始执行T/C1溢出中断服务程序。Bit3–OCIE1B:T/C1输出比较B匹配32中断标志寄存器-TIFR:•Bit5–ICF1:T/C1输入捕捉标志位。外部引脚ICP1出现捕捉事件时ICF1置位。此外,当ICR1作为计数器的TOP值时,一旦计数器值达到TOP,ICF1也置位。执行输入捕捉中断服务程序时ICF1自动清零。也可以对其写入逻辑"1”来清除该标志位。Bit4–OCF1A:T/C1输出比较A匹配标志位。当TCNT1与OCR1A匹配成功时,该位被设为"1”。强制输出比较(FOC1A)不会置位OCF1A。执行强制输出比较匹配A中断服务程序时OCF1A自动清零。也可以对其写入逻辑"1”来清除该标志位。中断标志寄存器-TIFR:33Bit3–OCF1B:T/C1输出比较B匹配标志位。当TCNT1与OCR1B匹配成功时,该位被设为"1”。强制输出比较(FOC1B)不会置位OCF1B。执行强制输出比较匹配B中断服务程序时OCF1B自动清零。也可以对其写入逻辑"1”来清除该标志位。Bit2–TOV1:T/C1溢出标志。该位的设置与T/C1的工作方式有关。工作于普通模式和CTC模式时,T/C1溢出时TOV1置位。对工作在其它模式下的TOV1标志位置位,执行溢出中断服务程序时OCF1A自动清零。也可以对其写入逻辑“1”来清除该标志位。Bit3–OCF1B:T/C1输出比较B匹配标34PWM下程序举例:1.CTC模式2.快速PWM模式3.相位、频率可调PWM模式PWM下程序举例:35§4.2AVR单片机的SPI接口一、SPI接口:串行外设接口SPI允许ATmega16和外设或其他AVR器件进行高速的同步数据传输。1、ATmega16SPI的特点如下:全双工,3线同步数据传输,SS#,SCK,MISO,MOSI;主机或从机操作

LSB首先发送或MSB首先发送7种可编程的比特率传输结束中断标志写碰撞标志检测可以从闲置模式唤醒§4.2AVR单片机的SPI接口362、SPI工作过程主机和从机之间的SPI连接如下图所示。系统包括两个移位寄存器和一个主机时钟发生器。通过将需要的从机的SS#引脚拉低,主机启动一次通讯过程。主机和从机将需要发送的数据放入相应的移位寄存器。主机在SCK引脚上产生时钟脉冲以交换数据。主机的数据从主机的MOSI移出,从从机的MOSI移入;从机的数据从从机的MISO移出,从主机的MISO移入。主机通过将从机的SS#拉高实现与从机的同步。配置为SPI主机时,SPI接口不自动控制SS#引脚,必须由用户软件来处理。对SPI数据寄存器写入数据即启动SPI时钟,将8比特的数据移入从机。传输结束后SPI时钟停止,传输结束标志SPIF置位。如果此时SPCR寄存器的SPI中断使能位SPIE置位,中断就会发生。主机可以继续往SPDR写入数据以移位到从机中去,或者是将从机的SS#拉高以说明数据包发送完成。最后进来的数据将一直保存于缓冲寄存器里。2、SPI工作过程37配置为从机时,只要SS#为高,SPI接口将一直保持睡眠状态,并保持MISO为三态。在这个状态下软件可以更新SPI数据寄存器SPDR的内容。即使此时SCK引脚有输入时钟,SPDR的数据也不会移出,直至SS被拉低。一个字节完全移出之后,传输结束标志SPIF置位。如果此时SPCR寄存器的SPI中断使能位SPIE置位,就会产生中断请求。在读取移入的数据之前从机可以继续往SPDR写入数据。最后进来的数据将一直保存于缓冲寄存器里。配置为从机时,只要SS#为高,SPI接38SPI系统的发送方向只有一个缓冲器,而在接收方向有两个缓冲器。也就是说,在发送时一定要等到移位过程全部结束后才能对SPI数据寄存器执行写操作。而在接收数据时,需要在下一个字符移位过程结束之前通过访问SPI数据寄存器读取当前接收到的字符。否则第一个字节将丢失。工作于SPI从机模式时,控制逻辑对SCK引脚的输入信号进行采样。为了保证对时钟信号的正确采样,SPI时钟不能超过fosc/4。SPI使能后,MOSI、MISO、SCK和SS#引脚的数据方向将按照下表所示自动进行配置。SPI系统的发送方向只有一个缓冲器,而在接收方向有39AVR单片机的主要内部资源与应用课件403、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#.3、SPI控制寄存器-SPCR(1)SPIE:使能SP41CPOL:时钟极性。CPOL=0,起始沿:上升沿,结束沿:下降沿;CPOL=1,起始沿:下升沿,结束沿:上降沿;CPHA:时钟相位。SPR1,SPR0:SPI时钟速率选择。确定主机的SCK速率,对从机没有影响。CPOL:时钟极性。CPOL=0,起始沿:上升沿,结束沿42AVR单片机的主要内部资源与应用课件434、SPI状态寄存器-SPSRSPIF:SPI中断标志。串行发送结束后,SPIF置位。。进入中断服务程序后SPIF自动清零。或者可以通过先读SPSR,紧接着访问SPDR来对SPIF清零。WCOL:写碰撞标志。在发送当中对SPI数据寄存器SPDR写数据将置位WCOL。WCOL可以通过先读SPSR,紧接着访问SPDR来清零。SPI2X:SPI倍速。置位后SPI的速度加倍。若为主机则SCK频率可达CPU频率的一半。若为从机,最高只能保证fosc/4。4、SPI状态寄存器-SPSRSPIF:SPI中断标44数据寄存器-SPDR(八位):读/写寄存器,用来在寄存器文件和SPI移位寄存器之间传输数据。写寄存器将启动数据传输,读寄存器将读取寄存器的接收缓冲器。数据模式:相对于串行数据,SCK的相位CPHA和极性CPOL有4种组合。每一位数据的移出和移入发生于SCK不同的信号跳变沿,以保证有足够的时间使数据稳定。设置设置设置数据寄存器-SPDR(八位):读/写寄存器,用来在寄存器文45AVR单片机的主要内部资源与应用课件46AVR单片机的主要内部资源与应用课件47SPI主机模式下的写、读数据程序:.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速度不倍增SPI主机模式下的写、读数据程序:48ldir16,0b01010001;0x51,or$51outspcr,r16

ldir16,0b10101010;0x55or$55,SPI要发送的数据outspdr,r16

loop:inr16,spsr;读取发送状态sbrsr16,7;判断发送是否完成rjmploop

inr16,spdrloop1:sbrsr16,7;判断接收是否完成rjmploop1inr16,spdr;读取数据wait:rjmpwaitldir16,0b01010001;0x51,49二、16位定时/计数器1(定时(事件管理)、波形产生和信号测量)1特点:真正的16位设计(即允许16位的PWM)2个独立的输出比较单元双缓冲的输出比较寄存器一个输入捕捉单元输入捕捉噪声抑制器比较匹配发生时清除寄存器(自动重载)无干扰脉冲,相位正确的PWM可变的PWM周期频率发生器外部事件计数器4个独立的中断源(TOV1、OCF1A、OCF1B与ICF1)二、16位定时/计数器1(定时(事件管理)、波形产生和信502、C/T主要功能介绍(1)T/C时钟源:可以来自内部,也可来自外部,由位于T/C控制寄存器B(TCCR1B)的时钟选择位(CS12:0)决定。(2)计数器单元:16位T/C的主要部分是可编程的16位双向计数器单元。(3)输入捕捉单元:可用来捕获外部事件,并为其赋予时间标记以说明此时间的发生时刻。外部事件发生的触发信号由引脚ICP1输入,也可通过模拟比较器单元来实现。时间标记可用来计算频率、占空比及信号的其它特征,以及为事件创建日志。2、C/T主要功能介绍51(4)输入捕捉触发源:输入捕捉单元的主要触发源是ICP1。T/C1还可用模拟比较输出作为输入捕捉单元的触发源。用户必须通过设置模拟比较控制与状态寄存器ACSR的模拟比较输入捕捉位ACIC来做到这一点。要注意的是,改变触发源有可能造成一次输入捕捉。因此在改变触发源后必须对输入捕捉标志执行一次清零操作以避免出现错误的结果。(5)噪声抑制器:通过一个简单的数字滤波方案提高系统抗噪性。它对输入触发信号进行4次采样。只有当4次采样值相等时其输出才会送入边沿检测器。(4)输入捕捉触发源:输入捕捉单元的主要触发源是ICP1。T52(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相同的数值而不触发中断。(6)输出比较单元:16位比较器持续比较TCNT1与OCR153(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控制输出是否应该在比较匹配发生时置位、清零,或是电平取反。(9)比较匹配输出单元:比较匹配模式控制位COM1x1:054(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值,亦即计数器的分辨率。这个模式使得用户可以很容易地控制比较匹配输出的频率,也简化了外部事件计数的操作。(12)普通模式:为最简单的工作模式。在此模式下计数器不停地55(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)。(14)快速PWM模式:可用来产生高频的PWM波形。快速56AVR单片机的主要内部资源与应用课件573.定时器/计数器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的设置决定。3.定时器/计数器1寄存器的说明58AVR单片机的主要内部资源与应用课件59Bit3–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)模式。Bit3–FOC1A:通道A强制输出比较60AVR单片机的主要内部资源与应用课件61控制寄存器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与输入捕捉功能脱开,从而输入捕捉功能被禁用。控制寄存器TCCR1B:62Bit5–保留位。为保证与将来器件的兼容性,写TCCR1B时,该位必须写入"0”。Bit4:3–W

温馨提示

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

评论

0/150

提交评论