飞思卡尔16位单片机(十)——PIT模块测试

 2023-09-15 阅读 255 评论 0

摘要:一、PIT模块介绍 PIT是周期中断定时器模块的简称,XEP100单片机的PIT定时器是一系列24位定时器的阵列。可以用来触发单片机的外围设备,也可以用来产生周期性的中断。XEP100单片机的PIT模块具有如下特性: 飞思卡尔单片机培训、1、8个具有独立的溢出时间

一、PIT模块介绍

        PIT是周期中断定时器模块的简称,XEP100单片机的PIT定时器是一系列24位定时器的阵列。可以用来触发单片机的外围设备,也可以用来产生周期性的中断。XEP100单片机的PIT模块具有如下特性:

飞思卡尔单片机培训、1、8个具有独立的溢出时间周期的定时器用作模数递减计数器。
2、溢出周期可以在1到2^{24}个总线周期数之间选择。溢出时间等于m×n个总线周期数,其中1<=m<=256,1<=n<=65536。
3、定时器能够被独立使能。
4、8个时间溢出中断。
5、8个可以用的时间溢出触发输出信号,可以用来触发外围模块。
6、启动的各通道可以彼此对齐。

XEP100单片机的PIT模块的示意图如下图所示。

兼容pic单片机,       由图中可以看出。PIT模块的主要组成部分是状态、控制和数据寄存器,2个8位向下计数器,8个16位向下计数器和1个中断触发接口。

        24位的计数器被分为两级,分别为8个16位的模数递减计数器和2个8位模数递减计数器。2个8为模数递减计数器产生2个微时基,这2个微时基为16位计时器提供时钟。每个16位计时器连接到微时基0或1,这通过设置PITMUX寄存器的PMUX[7:0]位来确定。

        如果PIT模块的控制和强制载入微定时器寄存器(PITCFLMT)中的PITE位使能并且PIT通道使能寄存器(PITCE)中的PCE位也置1,则一个定时器通道被使能。两个8为模数递减计数器用来产生两个微时基。一旦一个微时基被一个使能的通道选定,相应的微定时器将载入PITMTLD0或PITMTLD1寄存器的值,并且开始递减计数。无论何时微定时器的递减计数器数到0,则PITMTLD寄存器被重新载入,并且相应的16位模数递减计数器计数一个周期。

         当16位计数器和与其相连的8位计数器同时数到0时,PITLD寄存器被重新载入,并且PIT溢出标志寄存器(PITTF)的PTF位置1。总的溢出周期是PITLD和PITMTLD寄存器的函数,如下式所示,其中fBUS为总线频率。

        溢出周期=(PITMTLD+1)×(PITLD+1)/fBUS

例如:如果总线时钟为40MHz,则最大的溢出周期等于:

        256×65536×25ns=419.43ms

当前的16位模数递减计数器的值能够由PITCNT寄存器中读取。微定时器递减计数器的值不能被读取。

        8位微定时器可以通过向PITCFLMT寄存器的PFLMT位写入1来重新启动。16位定时器可以通过向PITFLT寄存器的PFLT位写入1来重新启动。如果需要可以在同时重新启动任何一组定时器和微定时器。重新启动的方式是用一个16位的数写入相邻的PITCFLMT和PITFLT寄存器,使相应的位置1。如下图所示。

       每个溢出事件能够被用来触发一个中断服务请求。对于每一个定时器通道,PIT中断使能寄存器PITINTE的PINTE位用来使能这个特性。如果PINTE被置1,当相应的溢出标志寄存器PITTF的PTF位置1时,将触发一个中断请求。可以通过向标志位写入1来清除标志位。  

        PIT模块包含8个硬件触发信号线PITTRIG[7:0],每个对应一个定时器通道。这些信号能够将高低电平与外设使能相连。例如:周期性的ATD转换。当一个定时器通道溢出时,相应的PTF位置1,形成的触发信号触发一个上升沿。触发特性要求溢出周期至少要有两个总线周期的大小。

二、例程测试

        接下来,对PIT模块的功能进行测试,本文的资源中包含了PIT模块的测试代码,在这个程序中,PIT模块的初始化代码如下所示。

 void init_PIT(){ PITMTLD0=249;     //为0通道8位计数器赋值PITLD0=63999;     //为0通道16位计数器赋值   //(249+1)*(63999+1)=16000000个总线周期=0.5秒PITMUX_PMUX0=0;   //第0通道使用微计数器0PITCE_PCE0=1;     //第0通道计数器工作 PITCFLMT=0X80;    //使能周期中断定时器PITINTE_PINTE0=1; //0通道定时器定时中断被使能}

单片机功能模块?在这段代码中,把PIT模块的8位和16位计数值分别设置为249和63999。所以根据上面的说明,PIT模块的溢出周期为

        (249+1)*(63999+1)=16000000个总线周期

由于总线设置为32MHz,所以PIT模块的溢出时间为0.5s。初始化代码中还使能了PIT模块的溢出中断。

       PIT模块的中断处理函数如下所示。

interrupt void PIT_INTER(void) 
{if(PITTF_PTF0==1) {PITTF_PTF0=1;            LEDCPU=~LEDCPU;}
}

在中断函数中,清除中断标志位,并改变LED灯的状态。

将程序下载到单片机中并执行,可以看到LED灯以1Hz的频率闪烁。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/63512.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息