历史上的今天
返回首页

历史上的今天

今天是:2024年08月27日(星期二)

正在发生

2021年08月27日 | 飞思卡尔XS128系列(三) PIT

2021-08-27 来源:eefocus

刚报名参加了第五届飞思卡尔智能车竞赛的时候,知道要用飞思卡尔的16位单片机,当时也没在意,就随便买了本这方面的书,记得书名是:《基于HCS12的嵌入式系统设计》,我是因为这本书各模块后面的例子都是以智能车为主,我才买的,本以为买对书了,还洋洋得意,可惜啊,可惜……


悲剧发生在拿到真正拿到芯片的时候,以无比激动的心情把以前写的程序烧进去实验,一开始都还好,到了ECT定时模块就发生悲剧了,一大串的错误,然后仔细研究才发现书上讲的是DG128,而我拿到的芯片是XS128,怎么能不错呢?


后面仔细搜索,DG128和XS128区别还真的蛮大的,相对于平时使用来说,主要在ECT和AD这两块地方,像定时器模块这部分,查了很多资料,最后发现XS128没有DG128所具有的MDC模数递减计数器模块,相对应的是PIT定时模块,还有比如没有了模糊指令的硬件支持,没有了i2c模块等等。

言归正传,开始讲PIT,讲PIT,我准备先简单讲讲寄存器,之前不讲主要是基本上买的到的书都是DG128的,里面关于IO口的寄存器和PWM的寄存器都是完全可以照搬的,而这一章的东西照搬是要出问题的。


核心内容就在这张图上:

相信大家都明白总线的概念,在图中可以看到6个定时器模块,Micro Timer 0、Micro Timer 1、Timer 0、Timer 1、Timer 2、Timer 3,其中前两个是8位的,后四个是16位的。从图中可以看出PIT模块是以总线时钟(Bus Clock)为基准时钟的,总线时钟通过8位Micro Timer 0和Micro Timer 1倍频形成两个基时钟,即Micro Timer Base 0和Micro Timer Base 1,这两个基时钟通过16位Timer给PIT提供时钟(通过寄存器PITMUX设置)。


原理讲完了,其实相对于PIT模块是一个24位的定时器(51单片机最多也就16位),这个计数范围还是蛮大的。


下面是一些寄存器的解释,解释完还是看代码吧。


S12PIT24B4CV1是一个模数递减计数器。首先给计数寄存器设定一个初值,每经过一个总线周期,计数器进行一次减一操作,当计数器自减溢出时,触发中断。因为总线周期是已知的,即可以通过计数器自减实现定时。

   


在XS128PIT模块中,需要用到得是如下几个寄存器。

   

1)、PIT Contorl and force Lad Micro Timer Register(PITCFLMT)

该寄存器用于PIT模块的使能设置和工作方式设置。通常设置该寄存器中的PITE为即可,即PITCFLMT_PITE=1,使PIT使能。

   


2)、PIT Channel Enable Register(PITCE)

该寄存器用于对PIT模块中的4个通道使能进行设置。如果使用某个通道时,对对应位进行置一即可,即PITCE_PCEx=1,其中x代表通道序号,为0~3。

   


3)、PIT Micro Timer Load Register 0 to 1 (PITMTLD0-1)

该寄存器用于设置PIT模块中的8位计数器初值,以实现24位的计数。设定值为0到255范围。


4)、PIT Load Register 0 to 3(PITLD0-3)

该寄存器用于设置PIT模块中的16位计数器初值,和8位计数器配合而成24位计数器。设定值范围0-65535。

   

5)、PIT Multiplex Register(PITMUX)

该寄存器对定时器通道的8位时基进行选择。因为8位计数器只有两个,所以在将8位计数器和16位计数器连接时,可以选择不同的8位时基。

当设置为0时,对应通道选择时基0;置一时,对应通道选择时基1。

如PITMUX_PMUX0=1为通道0选择时基1。


6)、PIT Interrupt Enable Register(PITINTE)

该寄存器为中断使能寄存器,为不同的PIT通道中断使能。设定为0时,相应通道中断禁止。置一时,相应通道使能。


如PITINTE_PINTE0=1时,PIT通道0定时中断使能,当计数器递减溢出时,申请中断。

   

7)、PIT Time-Out Flag Register(PITTF)

该寄存器为溢出标志位,当某一通道的8位计数器和16位计数器递减到0时,该位置一。给改位写1则清除该标志位。


可以通过查询该位来判断定时是否完成。

/****************************************************************

Code Warrior 5.0

Target : MC9S12XS128

Crystal: 16.000Mhz 

by:庞辉

芜湖联大飞思卡尔项目组  ******************************************************************/


void PIT_Init(void) 

{

      PITCFLMT_PITE=0; //关闭PIT

    

      //微定时器的装载寄存器

      PITMTLD0= 80-1;//8位定时器初值设定。80分频,在80MHzBusClock下,为1MHz,即1us

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

      

      //定时器的装载寄存器

      PITLD0  = 100 - 1 ;//16位定时器初值设定 0.1ms

      PITLD1  = 20000 - 1 ;//定时50000*0.001ms = 20ms


      PITCE_PCE0=1;//使能通道0

      PITCE_PCE1=1;//使能通道1

      

      PITMUX_PMUX0=0;//0:相应16位定时器与微时基0连接

      //PITMUX_PMUX1=1;//1:相应16位定时器与微时基1连接

      

      PITINTE_PINTE0=1;//开通PIT0定时器的溢出中断    

      PITINTE_PINTE1=1;//开通PIT1定时器的溢出中断


      PITCFLMT_PITE=1; //使能PIT 

}


以上代码一次开通了2路PIT,即PIT0和PIT1,初始化之后主要写上相对应的中断代码就可以了。

 

如:

/****************************************************************

Code Warrior 5.0

Target : MC9S12XS128

Crystal: 16.000Mhz 

by:庞辉

芜湖联大飞思卡尔项目组  ******************************************************************


/#pragma CODE_SEG __NEAR_SEG NON_BANKED //指示该程序在不分页区    


void interrupt 66 PIT0(void)     

{                

   //相应代码               

   PITTF=0x01;//清中断标志位                    

}

#pragma CODE_SEG DEFAULT


#pragma CODE_SEG __NEAR_SEG NON_BANKED //指示该程序在不分页区    

void interrupt 67 PIT1(void)     

{                

   //相应代码               

   PITTF=0x02;//清中断标志位                    

}

#pragma CODE_SEG DEFAULT


这里要注意两个地方:


1.首先两路PIT同时使用时,在中断函数里清中断标志位一定要使用如上方面还不是像这样PITTF_PTF0 = 1; 不然两路PIT其实只有1路在工作。


2.一旦PIT中断初始化使能,那么代码里一定要有中断函数,如果没有,编译不会报错,但是可怕的是一定运行会出现不可预估的后果。


以上两点都曾经使我郁闷了N久才知道是怎么回事,一般的书上都不会提,像我买的那本书,其实要我现在说,就是某某人把官方的Datesheet给翻译了一下而已,实属害人不浅。

推荐阅读

史海拾趣

GWM Associates公司的发展小趣事
检查电路中的反馈网络是否稳定,调整反馈电阻或电容的值以稳定增益。
Arcolectric公司的发展小趣事

随着技术的不断进步和市场需求的日益多样化,Arcolectric开始积极拓展其产品线,并逐渐将产品应用于电脑、电源设备及家用电器等多个领域。公司通过不断创新和研发,成功推出了一系列符合市场需求的新产品,进一步扩大了市场份额。

Analogic Corporation公司的发展小趣事

Arcolectric公司成立于1932年,作为Elektron PLC Group的一个著名品牌,它从一开始就专注于开关、指示灯及保险丝座的生产。在创立初期,Arcolectric就展现出了对技术的深厚积累和独特见解,成功研发出了一系列高质量、高性能的产品,为公司的长远发展奠定了坚实的基础。

Electronic Transistors Corp公司的发展小趣事

在电子行业的早期,ETC公司以其独特的技术创新能力在晶体管市场上崭露头角。公司创始人带领研发团队,通过不断的实验和改进,成功研发出一种新型的MOSFET晶体管,具有更高的性能和更低的功耗。这一创新成果迅速在市场上引起轰动,ETC公司的知名度也随之提升。随着产品销量的不断增长,ETC逐渐在电子行业中确立了其领导地位。

BRIGHT公司的发展小趣事

BRIGHT公司不仅在电子产品领域取得了成功,还积极拓展酒店业务。他们成立了伯瑞特酒店集团,并在全国范围内开设了多家酒店。这些酒店以高品质的服务和独特的文化特色赢得了广大消费者的喜爱。其中,宁波伯瑞特酒店荣获了全国钻级酒店评定中的五钻酒家称号,千岛湖伯瑞特度假酒店也获得了金鼎特色文化主题饭店的荣誉。这些荣誉的获得不仅彰显了BRIGHT公司在酒店业务方面的实力,也为其未来的发展奠定了坚实的基础。

Danaher Corporation公司的发展小趣事

自上世纪80年代起,丹纳赫集团通过一系列的战略并购,逐渐扩大其在电子行业的影响力。这些并购不仅为丹纳赫集团带来了先进的技术和产品,还增强了其在全球市场的竞争力。其中,对Leica显微系统公司的收购标志着丹纳赫集团正式涉足生命科学业务,为其在电子显微镜和生命科学仪器领域的发展奠定了基础。

问答坊 | AI 解惑

国产手机前途调查

猜一猜,今年中国手机市场新机型的最低售价纪录是谁创造的?是波导吗?还是TCL?抑或是动辄要搞“低价风暴”的奥克斯?答案都不对,是摩托罗拉,全球和中国手机市场的第二大玩家。其在今年下半年上市的低价手机C117售价已从上市初的不足600元,大幅 ...…

查看全部问答>

生物传感技术关爱“弱势群体”,有望用于车载监控

Exmovere有限公司日前宣布推出一种满足老年人医疗监护需要,基于网络的生物传感器手表服务。 该公司总裁David Bychkov表示,Exmocare手表能够监护老年人的脉搏、心率可变性和皮肤电导系数。Exmocare手表还能够通过内建的加速度计来监测受治疗 ...…

查看全部问答>

急急急!基于单片机的键盘LED指示灯C语言设计问题!附电路图!寻求大侠帮助!

7*6矩阵的键盘,这个程序已经编好了,每个键值存入了key[7][6]这样一个数组中,现在有7*5矩阵的键盘LED指示灯,如何使一个键按下后-其相应的指示灯也亮呢!LED指示灯,列LEDC和行LEDR都是通过锁存器SN74HC574N与P0口相接,信号由CPU到灯!两个锁存 ...…

查看全部问答>

怎样辨别视频线的好坏——大家谈

有的网友工程作了好几年,仍然对这个问题还不能较好的把握。这是一个看来“问题不大”但又很重要的工程实际问题;真正的检测还需要专门的设备和仪器。而这些设备和仪器又是设计和工程单位不具备的。工程鉴别视频线的好坏,希望大家集思广益。这里先 ...…

查看全部问答>

真7.1声道杜比数码EX﹑DTS-ES 96/24解码板

CRYSTAL CS495313 32bit 音频DSP﹑CS8416低时基误差192KHz数字接收器﹑CS42448A 96KHz/24bit ADC及DAC为当今最高性能的AV接收功放解码的芯片组合。     支持杜比数码EX﹑DOLBY PRO-LOGIC﹑HDCD﹑PRO-LOGICⅡ及DTS-ES Matrix﹑DTS-ES Dis ...…

查看全部问答>

关于rtems

各位大牛,谁有下面两个插件? rtemscentre.javaxcomm 和rtemscentre.mysqlconnectorjava…

查看全部问答>

关于函数RegistryNotifyCallback

请问RegistryNotifyCallback,这个函数可以用在driver里面么?           我在Audio Driver中使用了这个函数,但是发现会导致驱动无法加载,而且驱动里面的打印信息一点都没有打印出来,说明不是运行到RegistryNot ...…

查看全部问答>

EVB连接*.cdb数据库问题?

Private Sub Command1_Click()       Dim cnMobileSales As ADOCE.Connection       Dim strPath As String       Dim rs As ADOCE.Recordset       Set cnM ...…

查看全部问答>

加载镜像启动CE后,无法显示硬盘,如何能显示?

小弟新手,刚刚接触wince。我把PLATFORM里的File   Systems   and   Data   Store加上Fat   File   System及CD/UDFS   File   System,并在Storage   D ...…

查看全部问答>