这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » HELLO八(一) 2812EV模块---通用定时器

共1条 1/1 1 跳转至

HELLO八(一) 2812EV模块---通用定时器

工程师
2014-12-08 19:57:06     打赏
事件管理器的功能



 


2812具有两个事件管理器模块EVAEVB每个EV模块都具有2个通用定时器、3个比较单元、3个捕获单元以及1个正交编码电路。#此前在首页部分显示#


 


                   (表格中蓝色的字表示该信号是低电平有效)


 



 


 



通用定时器用来计时的,而且每个定时器还能产生1路独立的PWM波形


 


比较单元主要功能就是用来生成PWM波形的,EVA具有3个比较单元,每个单元可以生成一对(两路)互补的PWM波形,生成的6PWM波形正好可以驱动一个三相桥电路


 


捕获单元的功能是捕捉外部输入脉冲波形的上升沿或者下降沿,可以统计脉冲的间隔,也可以统计脉冲的个数。


 


正交编码电路可以对输入的正交脉冲进行编码和计数,它和光电编码器相连可以获得旋转机械部件的位置和速率等信息。


 


1 External compare-output trip inputs我们可以理解为切断比较输出的外部控制输入,以C1TRIP为例,当比较单元1工作时,其两个引脚PWM1PWM2正在不断的输出PWM波形,这时候,如果C1TRIP信号变为低电平,则此时PWM1PWM2引脚被置成高阻态,不会再有PWM波形输出,也就是在这个引脚上输入低电平,则比较输出就会被切断。


2 External timer-compare trip inputs我们可以理解为切断定时器比较输出的外部控制输入,以T1PWM_1CMP为例,当定时器1的比较功能在运行,并且T1PWM引脚输出PWM波形的时候,这时候如果T1CTRIP引脚信号变为低电平,则该引脚状态被置成高电平,也不会再有PWM波形输出。


3 External trip inputsPDPINTxx=A或者B其实是个功率驱动保护,它为系统的安全提供了保护,例如如果当电路中出现电压、电流或者温度急剧上升的时候,如果PDPINTx的中断没有被屏蔽,PDPINTx的引脚变为低电平时,2812所有的PWM输出引脚都会变为高阻态,从而阻止了电路进一步损坏,达到保护系统的目的。当然PDPINTx在电路设计时就要考虑到给它配一个监视电路状态的信号。


 


 


                             1.     通用定时器---以通用定时器1为例


 


                                                                                    EV事件管理器时钟模块



 


                               通用定时器模块结构


 


 



 和T1相关的常用寄存器


    


    T1周期寄存器     ----     T1PR               1 6位
 T1比较寄存器     ----     T1CMPR             1 6位
 T1计数寄存器     ----     T1CNT              1 6位
 T1控制寄存器     ----     T1CON              1 6位


 全局定时器控制寄存器A ----   GPTCONA             1 6位


 


T1的常见输入信号



来自于CPU的内部时钟
外部时钟输入TCLKINA,最大频率为器件自身时钟的1/4,也就是1/4*150M
TDIRA/B,用于定时器的增/减计数模式


    复位信号RESET


 


T1的输出信号



定时器的比较输出T1PWM_T1CMP
送给ADC模块的AD转换启动信号
下溢、上溢、比较匹配和周期匹配信号
计数方向指示


 


 


 


                               阴影寄存器作用---重载条件



 


可以在一个周期的任何时刻向T1CMPR或者T1PR写入新的数值,假设我们要向T1CMPR写入新的数值0xXXXXh,首先将这个数值写入T1CMPR的阴影寄存器,当T1CON中第3TCLD1和第2TCLD0所指定的特定事件发生时,阴影寄存器的数据就会被写入T1CMPR的工作寄存器。


T1PR写入新的数据0xXXXXh,数据也会被立即写入阴影寄存器,只有当T1CNT的完成这个周期的计数,值为0的时候,阴影寄存器中的内容才会被载入到工作寄存器中,从而改变T1PR的值。


 


                         定时器比较寄存器重载条件
 TCLD1     TCLD0
   0         0         当计数器T1CNT值为0


   0         1         当计数器T1CNT值为0或者等于周期寄存器
   1         0         立即载入
   1         1         保留


 


                  定时器的计数方式---T1CON12位·11位决定



TMODE1      TMODE0
   0           0         停止/保持
   0           1         连续增/减模式
   1           0         连续增模式


   1           1         定向增/减计数模式(directional up/down count mode)


 


               连续增/减技术模式-----实际的计数周期为2*T1PR



 


                 连续增模式-----实际的计数周期为T1PR+1



                  


                      定向增或者减计数模式


T1CNT进行增计数或者是减计数,取决于引脚TDIRA的电平如果TDIRA为高电平,则T1CNT进行增计数;如果TDIRA为低电平,则T1CNT进行减计数。如果是在计数过程中TDIRA电平发生了变化,那么必须在完成当前计数周期后的下一个CPU时钟周期时,计数方向发生改变



                                      


                                                           T1相关的中断


上溢中断T1OFINT、下溢中断T1UFINT、比较中断T1CINT、周期中断T1PINT


(1)T1CNT的值为0xFFFFh的时候,发生定时器T1上溢中断。当上溢事件发生后,再过1CPU时钟周期,则上溢中断的标志位被置位。


2)当T1CNT的值为0x0000h的时候,发生定时器T1下溢中断。当下溢事件发生后,再过1CPU时钟周期,则下溢中断的标志位被置位。


3)当T1CNT的值和T1比较寄存器T1CMPR的值相等时,发生定时器T1比较中断。当发生比较匹配时,再过1CPU时钟周期,则比较中断的标志位被置位。


4)当T1CNT的值和T1周期寄存器T1PR的值相等时,发生定时器T1周期中断。当发生周期事件时,再过1CPU时钟周期,则周期中断的标志位被置位。


 


当某个中断的标志位被置位,如果该中断已经使能,则会像PIE模块发送中断申请。退出中断的时候,一定要手动清除外设中断标志位。在EV中,和上述中断相关的寄存器是EVAIFRAEVAIMRA EVAIFRBEVAIMRB


 


上述事件除了能够产生中断以外,还能产生一个ADSOC信号,就是启动AD转换的信号,这样可以周期性的去启动AD转换。依据寄存器GPTCONA的第8和第7,这个功能的优点就在于允许在CPU不干涉的情况下使通用定时器的事件和ADC启动转换同步进行


 


                    GPTCONA中T1启动AD转换的信号的相关位(T1TOADC)
Bit8       bit7
  0         0         不启动ADC
  0         1         下溢中断启动ADC
  1         0         周期中断启动ADC
  1         1         比较中断启动ADC


 


   定时器的同步


 


T2可以使用T1的周期寄存器而忽略自身的周期寄存器,也可以使用T1的使能位来启动T2计数,这样的功能保证了T1T2能够实现同步计数


 1.将T2CONT2SWT11,实现由T1CONTENABLE位来启动通用定时器2的计数,这样,两个计数器(T1T2)就能同时启动计数。


2.对T1CNTT2CNT进行不同值的初始化。


3.将T2CONSELT1PR1,指定定时器2将定时器1的周期寄存器作为自己的周期寄存器。


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]