PIT详解

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【转】XS128之PIT

为了更好地学习和交流,DABAO在学习之余写一下自己的学习笔记。

在XS128中,与定时计算有关的模块有PIT、TIM。TIM主要包括8个通道的输入捕捉/输出比较,和一个脉冲累加器。PIT是一个模数递减计数器。首先给计数寄存器设定一个初值,每经过一个总线周期,计数器进行一次减一操作,当计数器自减溢出时,触发中断。因为总线周期是已知的,即可以通过计数器自减实现定时。现在主要写一下PIT。

下图为PIT的模块图:

PIT模块没有对应的外接引脚。

PIT的寄存器有:PITCFLMT、PITFLT、PITCE、PITMUX、PITINTE、PITTF、PITMTLD0、PITMTLD1、PITLD0、PITCNT0、PITLD1、PITCNT1、PITLD2、PITCNT2、PITLD3、PITCNT3。下面逐个说明其用法:

PITCFLMT: 该寄存器的第七位PITE是PIT模块的使能位。置1,则使能,即此模块可以用了。第六位PITSWAI,置1,则PIT模块在等待模式下不可用。第五位为PITFRZ,置1,则PIT在冻结模式(freeze)下不可用。第一,第零位为PFLMT1、PFLMT0,其置1,能使对应的8位数据寄存器PITMTLD1、PITMTLD0中的数据马上进入计数器。

PITFLT:低四位(PFLT0~PFLT3)有效,相应位置1,能使相应的16位数据寄存器PITLD0~PITLD3中的数据马上进入计数器。

PITCE: 低四位(PCE0~PCE3)有效,位置,则使能相应的计数通道(共四个通道)。PITMUX: 低四位(PMUX0~PMUX3)有效。相应通道的时基选择。如模块图如示,每个通道由一个8位计数块(相应数据寄存器为PITMTLD)和一个16位计数模块(相应数据寄存器为PITLD)组成。PITMUX相应的位上置0时,则8位计数模块0与相应的16位计数模块组合计数。置1,则8位计数模块1与相应的16位计数模块组合计数。

PITINTE: 低四位(PINTE0~PINTE3)有效。相应通道的计数溢出中断使能。相应位置1后,溢出时才能产生中断。

PITTF: 低四位(PTF0~PTF3)有效。相应通道的中断标志位。中断时,相应位由硬件置1。PITCNT0~PITCNT3: 16位寄存器,记录的是当前计数器中的16位计数模块中的数据。

溢出周期公式为:溢出周期=(PITMTLD+1)*(PITLD+1) / f(BUS)。f(BUS)为总线时钟频率。

PITMTLD0~PITMTLD1: 该寄存器写入数据时,计数器中的相应的计数模块的数据不会马上更新,等到计数减到0溢出时,数据才重新装入计数器。如果想要马上装入计数器,可以在

PITCFLMT中的PFLMT0~PFLMT1中写1.

PITLD0~PITLD3: 该寄存器写入数据时,计数器中的相应的计数模块的数据不会马上更新,等到计数减到0溢出时,数据才重新装入计数器。如果想要马上装入计数器,可以在PITFLT 中的相应位写1.

根据自己想要的频率配好相应的寄存器,如需中断,写好中断函数,即可用。如:

void PIT_Init(void)

{

PITCFLMT_PITE = 0; //定时中断通道0关

PITCE_PCE0 = 1; //定时器通道0使能

PITMTLD0 = 160 - 1; //8位定时器初值设定,160分频

PITLD0 = 0; //16位定时器初值设定,

PITINTE_PINTE0 = 1; //定时器中断通道0中断使能

PITCFLMT_PITE = 1; //定时器通道0使能

}

相关文档
最新文档