一、PIT模块介绍

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

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

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

由图中可以看出。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的频率闪烁。

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

  1. 飞思卡尔16位单片机(十四)—— CAN总线模块测试

    一.CAN模块介绍 这个实验我们来研究XEP100单片机内部的CAN模块. XEP100单片机的CAN的基本特性如下: • 实施CAN协议-2.0A/B版 - 标准和扩展数据帧 - 0-8字节数据长度 ...

  2. 飞思卡尔16位单片机(五)——ADC模数转换模块测试

    一.介绍 ADC模块的作用是将模拟的电压信号转换为CPU可以处理的数字信号.一些低端的单片机上没有ADC模块,必须使用片外的ADC芯片,才能实现模数转换的功能.而飞思卡尔的单片机一般是集成了ADC模块 ...

  3. 飞思卡尔16位单片机(十五)—— 如何批量烧写芯片

    我们在进行飞思卡尔单片机开发时,一般使用CodeWarrior软件和usbdm调试器进行.但是在实际生产过程中,采用这种方式烧写芯片效率比较低,而且很多情况下,程序的源码不希望对生产人员开放,本文就是 ...

  4. 飞思卡尔16位单片机(十二)—— IIC模块测试

    一.IIC模块介绍 目前市场上很多单片机都已经具有硬件IIC总线控制单元,这类单片机在工作时,IIC总线状态由硬件监测,无需用户介入,操作方便. IIC总线是双线.双向的串行总线,是与其它芯片交换数据 ...

  5. 飞思卡尔mc9s08烧录方法_飞思卡尔8位单片机MC9S08JM60开发板实践教程

    第一章 搭建实验环境 系统时钟设置 #include "App\Include\App.h" #ifndef _MCG_C #define _MCG_C //oscillator  ...

  6. 飞思卡尔mc9s08烧录方法_(整理)飞思卡尔8位单片机MC9S08JM60开发板实践教程

    精品文档 精品文档 第一章 搭建实验环境 系统时钟设置 #include "App\Include\App.h" #ifndef _MCG_C #define _MCG_C //o ...

  7. freescale飞思卡尔 HC9S12 系列单片机 Flash擦写详解(一)之时钟设置

    Flash擦写的内容,个人做HC9S12系列单片机时觉得应该是各模块内容中最难而且是最麻烦的一步了.只有能够对Flash进行擦写以后,所做的Bootloader才有真正手段将串口或者其他通讯手段接收到 ...

  8. 飞思卡尔MC9S12系列单片机地址影射以及分页问题

    对于用MCU的人来说,不一定要明白HCS12(x) memory map的机制和联系.因为如果没有系统地学习操作系统和编译原理之类的课程,确实有些难度.并且,对于DG128 XS128这样的MCU,默 ...

  9. 飞思卡尔MKL系列单片机用jlink烧写程序出现的Kinetis (connect): Timeout while halting CPU. CPU does not stop.问题

    最近用Jlink烧写飞思卡尔MKL16Z128单片机时发现经常出现不能连接成功的情况,用的是SWD接口,排查了好久后来发现问题在单片机的RESET脚上,因为之前用SWD接口的时候只接4线(SWD.SC ...

最新文章

  1. Servlet中的HttpServlet
  2. 探访火车票“守护者”:一卷票据值百万 压力大到失眠
  3. BZOJ-2242-计算器-SDOI2011-BSGS
  4. SQL关键字筛选数据
  5. Oracle学习网站总结
  6. 高斯过程回归预测Matlab简单实现
  7. java文件上传下载接口_java 文件上传下载
  8. linux系统中profile文件介绍
  9. 增加客流量的方法_如何增加博客流量-简单的方法(27条可靠的技巧)
  10. COSOSWAP的这份NFT防盗指南,请给周杰伦转发
  11. 360安卓_据说有了这些专治卡顿的 APP,你的安卓手机竟能如丝般流畅顺滑?
  12. 五年级计算机课主要学哪些内容,五年级下册信息技术课程纲要
  13. c语言法定节日日历程序,一个完整的日历程序(含有农历)
  14. 圈叉棋、套娃圈叉棋、嵌套圈叉棋、九个井字棋
  15. 简单数据类型的转换和条件控制语句(if else)的使用
  16. python保存数据到本地文件_python保存数据到本地文件的方法
  17. api是什么意思?又该如何使用呢?
  18. 圆满收官!2022 秋招总结与建议
  19. discuz的htm模板代码分析
  20. 计算机一级考试实训在线做,程序设计能力 在线实训系统

热门文章

  1. ora-20000:ORU-10027: buffer overflow
  2. 万有导航:简洁实用的综合导航网站
  3. 《FM/AM相邻信道选择性测试》
  4. 【19调剂】南京航空航天大学空间光电成像探测信息仿真与处理实验室团队拟接收2019年硕士研究生调剂...
  5. 网站域名301重定向到带www网址的几种有效方式
  6. 解决 Windows 10 中的网络连接问题
  7. 矩阵分析法,做商业决策必备的经典分析思维
  8. 什么方法应对3D打印常见的表面粗糙的问题
  9. 计算机学院颁奖晚会主题集锦,计算机学院2010迎新晚会圆满落幕
  10. Android 从一次apk迁移窥看Android JellyBean(4.1)的变化