周期中断定时器( PIT )

15
周周周周周周周PIT 周周周周周 周周周周周周周周周PIT 周周周周周周周周周周 PIT 周周周周周周 周周周周周周周

description

周期中断定时器( PIT ). 定时器简介 周期中断定时器简介( PIT ) 周期中断定时器寄存器 PIT 模块编程范例 时钟产生器模块. 定时器简介 —— 为什么使用定时器. 时间延迟的产生和测量 外部信号周期和脉冲宽度的测量 事件计数器 事件发生时间比较器 波形发生器 周期性的中断产生 定时器实际上是计数器,它通过累计已知时间间隔的个数来计算时间。被累计的时间间隔若是系统时钟,计数器就变成了定时器。. 定时器简介 —— 怎样获得定时器. 程序设计软件定时器 - PowerPoint PPT Presentation

Transcript of 周期中断定时器( PIT )

Page 1: 周期中断定时器( PIT )

周期中断定时器( PIT )

• 定时器简介• 周期中断定时器简介( PIT )• 周期中断定时器寄存器• PIT 模块编程范例• 时钟产生器模块

Page 2: 周期中断定时器( PIT )

定时器简介——为什么使用定时器

时间延迟的产生和测量

外部信号周期和脉冲宽度的测量

事件计数器 事件发生时间比较器 波形发生器 周期性的中断产生

定时器实际上是计数器,它通过累计已知时间间隔的个数来计算时间。被累计的时间间隔若是系统时钟,计数器就变成了定时器。

Page 3: 周期中断定时器( PIT )

定时器简介——怎样获得定时器

程序设计软件定时器

void delay(void){ unsigned int i,j; for(i=0;i<10;i++) for(j=0;j<10000;) j++;}

微处理器常常内置定时器(硬件定时器)–MCS51 单片机内有二个 16 位定时器、计数器–MC9S12XS 内置 RTI ( Real Time Interrupt) ECT – enhanced capture timer OC – Output comparer PWM – Pulse width modulationPeriod and pulse width measurement 四个 24位 PIT 定时器

Page 4: 周期中断定时器( PIT )

定时器简介——怎样获得定时器

外围扩展定时器 8253 内部有三个计数器

,分别成为计数器 0 、计数器 1 和计数器 2 ,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK ,一个为门控信号输入端 GATE ,另一个为输出端OUT 。每个计数器内部有一个 8 位的控制寄存器,还有一个 16 位的计数初值寄存器CR 、一个计数执行部件 CE和一个输出锁存器 OL 。

Page 5: 周期中断定时器( PIT )

定时器简介——怎样获得定时器

外围扩展定时器

DS12887把时钟芯片所需的晶振和外部锂电池相关电路集于芯片内部,可广泛用于各种需要较高精度的实时时钟场合中。其主要功能如下: (1)内含一个锂电池,断电情况运行十年以上不丢失数据。 (2)计秒、分、时、天、星期、日、月、年,并有闰年补偿功能。 (3)二进制数码或 BCD码表示时间、日历和定闹。 (4)12小时或 24小时制, 12小时时钟模式带有PWM和 AM指导,有夏令时功能。 (5)MOTOROLA5和 INATAEL总线时序选择。 (6)有 128个 RAM单元与软件音响器,其中 14个作为字节时钟和控制寄存器, 114字节为通用RAM,所有 ARAM单元数据都具有掉电保护功能。 (7)可编程方波信号输出。 (8)中断信号输出 (IRQ) 可以产生 500ms 一次到每 122μs 一次的中断

Page 6: 周期中断定时器( PIT )

定时器简介——定时器的主要性能参数

位数 加 1 或是减 1

时钟

重装载

Page 7: 周期中断定时器( PIT )

周期中断定时器简介( PIT )

4路 24 位定时器,每路可以分别

打开或关闭

1~2^24 个总线 周期定时

产生中断信号

Page 8: 周期中断定时器( PIT )

周期中断定时器寄存器

1、 PIT 控制寄存器及强制载入微定时器寄存器 PITCFLMT

PITE:PIT 模块使能位0 禁止 PIT 1 使能 PIT

PITSWAIT: 等待模式 PIT 停止控制位 0 在等待模式下 PIT 正常运行 1 在等待模式下 PIT 时钟产生器停止

PITFRZ: 冻结模式 PIT 计数器冻结控制位 0 在冻结模式下 PIT 正常运行 1 在冻结模式下 PIT 计数器失去作用

PFLMT[1..0]:PIT 强制载入微定时器模数值控制位1 相应的 8 位微定时器模数值被载入 8 位微定时器递减计

数器中0 强制载入无效

地址: $0340

Page 9: 周期中断定时器( PIT )

周期中断定时器寄存器

2、 PIT 强制载入定时器寄存器 PITFLT

PFLT[3..0]:PIT 强制载入定时器模数值控制位1 相应的 16 位定时器模数值被载入 16 位定时器递减计

数器中0 强制载入无效

3、 PIT 通道使能寄存器 PITCE

PCE[3..0]:PIT 使能控制位。该寄存器使能 PIT 四个通道,如果 PCE写 0, PIT 通道将被禁止,PITTF 中相应的标志位也将被清除;如果 PCE写 1, PIT 通道使能, 16 位定时器计数器被载入起始值并开始计数。 1 通道使能 0 通道禁止

地址: $0341

地址: $0342

Page 10: 周期中断定时器( PIT )

周期中断定时器寄存器

4、 PIT 定时器复合寄存器 PITMUX

PMUX[3..0]:PTI 定时器复合寄存器控制位。该寄存器控制 16 位定时器与 8 位微定时器时基 0 或者时基 1 连接复合。 0 相应 16 位定时器与微时基 0 连接 1 相应 16 位定时器与微时基 1 连接

5、 PIT 中断使能寄存器 PITINTE

PINTE[3..0]:PIT 定时器溢出中断使能控制位。 0 PIT 相应通道溢出中断禁止 1 PIT 相应通道溢出中断使能

Page 11: 周期中断定时器( PIT )

周期中断定时器寄存器

6、 PIT 溢出标志寄存器 PITTF

PIF[3..0]:PIT 通道溢出标志位。当 16 位定时器计数器和相复合的 8 位微定时器计数器递减到 0 后,相应位的标志位被置位。写 1 后清除标志位,写 0 无效。 0 PIT 相应通道没有发生溢出中断 1 PIT 相应通道发生了溢出中断

7、 PIT 微定时器装载寄存器 PITMTLD0/PITMTLD1

Page 12: 周期中断定时器( PIT )

周期中断定时器寄存器

8、 PIT 定时器装载寄存器 PITLD0/PITLD1/PITLD2/PITLD3

PLD[15..0]: 同上原理。

Page 13: 周期中断定时器( PIT )

周期中断定时器寄存器

9、 PIT 通道计数器 PITCNT[0..4]

PCNT[15..0]: 该寄存器存放 16 位递减计数器值。

Page 14: 周期中断定时器( PIT )

PIT 模块编程范例

void initIOBoutput(void)//IO 口初始化, B 口为输出{ DDRB=0XFF; PORTB=0XFF;}

void initPIT(void)// 定时中断初始化函数 50MS 定时中断设置 { PITCFLMT_PITE=0; // 定时中断通道 0 关 PIT 使能端 PITCE_PCE0=1;// 定时器通道 0 使能 PITMTLD0=240-1;//8 位定时器初值设定。 240 分频,在24MHzBusClock 下,为 0.1MHz即 10us. PITLD0=PITTIME-1;//16 位定时器初值设定。 PITTIME*0.01MS PITINTE_PINTE0=1;// 定时器中断通道 0 中断使能 PITCFLMT_PITE=1;// 定时器通道 0 使能 }

初始化模块

Page 15: 周期中断定时器( PIT )

PIT 模块编程范例

中断服务子程序 void interrupt 66 PIT0(void) { vTmpPIT++; if(vTmpPIT==10) { PORTB=~PORTB;// 输出取反 vTmpPIT=0; } PITTF_PTF0=1;// 清中断标志位}

void main(void) { pllclk(); initIOBoutput(); initPIT(); EnableInterrupts; for(;;) {} /* wait forever */

}

主程序