时基系统与计数器-定时器CTC

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

FTAOUT 4位 计 数 器
FTAOUT/2 /2
4位 半 加 法 器 APWMO
P_TimerA_ctr1 b9 b8 b7 b6 TAON PWM占 空 比 设 置
图6.7 TimerA结构图
第11页
2021/12/12
Fosc/2
000 Fosc/256
P_TimerB_Data(读 )
001
//清中断标识
//B口输出高电平
//出栈 //子程序返回 //中断子程序IRQ_TMB2 //堆栈 //清中断标识
//出栈 //返回
第9页
2021/12/12
1.2 定时器/计数器
SPCE061A提供了两个具有自动重置初值的16位定 时器/计数器TimerA和TimerB。TimerA为通用计数器, TimerB为多功能计数器。TimerA的时钟源由时钟源A 和时钟源B进行与操作形成,TimerB 的时钟源仅为时 钟源A,它们的内部结构如图6.7和图6.8所示。
第2页
2021/12/12
图6.6 时基信号发生器结构
第3页
2021/12/12
1. 时基信号设置单元P_Timebase_Setup(写)(700EH)
时基信号发生器通过对P_Timebase_Setup(写)(700EH) (如表6.8所示)单元编程来实现选频操作,b3、b2: TMB2选 频逻辑;b1、b0: TMB1选频逻辑,见表6.9。
第23页
2021/12/12
表6.13 P_TimerB_Ctrl 单元设置
b9 b8 b7 b6 Output_pulse_ctrl
b2 b1 b0 时钟源 A 选择位
第24页
2021/12/12
表6.14 b9、b8、b7、b6位的意义
b9
b8
b7
b6
0
0
0
0
0
0
0
1
0
0
1
0
0
0
1
1
0
1
0
0
1 1 1024 Hz 1 1 64 Hz
* 默认的 TMB2 输出频率 ** 默认的 TMB1 输出频
为 128 Hz
率为 8 Hz
第5页
2021/12/12
2. 时基信号清零单元(校准) P_Timebase_Clear(写)(700FH)
P_Timebase_Clear (写)(700FH)单元是控制端口,设置该 单元可以完成时基计数器复位和时间校准。向该单元写入任意 数值,时基计数器将被清0,从而对时基信号发生器进行精确 的时间校准。
语音信号及单片机处理
时基系统与计数器/定时器CTC
时间基准信号简称时基信号,来自于32 768 Hz实时时钟, 通过频率选择组合而成。时基信号发生器的选频逻辑TMB1 为TimerA的时钟源B提供各种频率选择信号,并为中断系统 提供中断源(IRQ6)信号。此外,TMB2只为IRQ6提供时钟信 号(128 Hz、256 Hz、512 Hz、1024 Hz)。时基信号发生器还 可以通过分频产生2 Hz、4 Hz、1024 Hz、2048 Hz以及4096 Hz的时基信号,为中断系统提供各种实时中断源(IRQ4和 IRQ5)信号。时基信号发生器的结构如图6.6所示。
第15页
2021/12/12
TimerA控制单元P_TimerA_Ctrl
通过设置TimerA控制单元P_TimerA_Ctrl(写)(700BH)的 b0~b5来选择TimerA 的时钟源(时钟源A、B),设置该单元的 b6~b9,TimerA将输出不同频率的脉宽调制信号,即控制脉 宽占空比输出APWMO,如表6.9所示,每位的具体意义如表 6.10~表6.12所示。
第6页
2021/12/12
[例6.6]:选择8Hz的时基频率,进入中断后IOB口输出高电平。通过示波器可
观察输出为高电平。
.INCLUDE hardware.inc //包括头文件
.CODE
.PUBLIC _main
//主函数
_main:
INT OFF
//关中断
R1=0xFFFF
//设置B口为带数据缓存器的高电平输出
4 Hz 2 Hz
1 EXT1
011 B 100 选 择 101 110 111
b5 b4 b3
P_TimeA_ctrl
P_TimerA_Data(读 )
TimeA_Timeout INT
& 时 钟 16初 值 寄 存 器
(FTAOUT)
P_TimerA_Data(写 )自 动 重 新 预 置 16初 值 预 置 寄 存 器
TBON[1] 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2021/12/12
表6.15 b2、b1、b0位的意义
b2
b1
b0
0
0
0
0
0
1
0
1
0
0
第13页
2021/12/12
选择一个合适的时钟源,向定时器的P_TimerA_Data(读/ 写)(700AH)单元或P_TimerB_Data(读/写)(700CH)单元写入一 个计数初值N,定时器/计数器将在此时钟频率下,开始以递增 方式计数。N,N+1,N+2,…,0xFFFE,0xFFFF,当计数达 到0xFFFF后,定时器/计数器溢出,产生中断请求信号,向 CPU请求中断,CPU响应后,送入中断控制器处理,执行中断 服务程序,完成相应的中断任务。同时,将初值N重新载入定 时器/计数器初值寄存器,并重新开始计数。
32 768 Hz 8192 Hz 010时 钟 源 时 钟 信 号
011 A
TimeB_Timeout INT
16初 值 寄 存 器
(FTBOUT)
4096 Hz 100 选 择 1 101
自动重新预置
至中断系统
0
110 EXT1
16初 值 预 置 寄 存 器
111
b2 b1 b0 P_TimerB_Data(写 )
b9
b8
b7
b6
脉宽占空比(APWMO)
TAON[1]
0
0
0
0
关断
0
0
0
0
1
1/16
1
0
0
1
0
2/16
1
0
0
1
1
3/16
1
0
1
0
0
4/16
1
0
1
0
1
5/16
1
0
1
1
0
6/16
1
0
1
1
1
7/16
1
1
0
0
0
8/16
1
1
0
0
1
9/16
1
1
0
1
0
10/16
1
Hale Waihona Puke 1011
11/16
1
1
1
0
0
12/16
1
1
1
0
1
13/16
第17页
2021/12/12
表6.11 b2、b1、b0的意义
b2
b1
b0
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
时钟源 A 的频率 Fosc/2
Fosc/256 32 768 Hz 8192 Hz 4096 Hz
1 0 EXT1
第18页
2021/12/12
表6.12 b9、b8、b7、b6位的意义
表6.9 P_TimerA_Ctrl 单元设置
b9
b8
b7
b6
Output_pulse_ctrl
b5
b4
b3
时钟源 B 选择位
b2
b1
b0
时钟源 A 选择位
第16页
2021/12/12
表6.10 b5、b4、b3位的意义
b5
b4
b3
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
时钟源 B 的频率 2048 Hz 1024 Hz 256 Hz TMB1 4 Hz 2 Hz 1 EXT2
0
1
0
1
0
1
1
0
0
1
1
1
1
0
0
0
1
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1
脉宽占空比(BPWMO) 关断 1/16 2/16 3/16 4/16 5/16 6/16 7/16 8/16 9/16 10/16 11/16 12/16 13/16 14/16
T第B2O5页UT[2]触发信号
1
1
1
1
0
1
1
1
1
14/16 TAOUT[2]触发信号
第19页
1
1
2021/12/12
注:[1] TAON是TimerA(APWMO)的脉宽调制信号输出允许位, 默认值为0,当TimerA的b6~b9不全为零时,TAON=1。
[2] TAOUT是TimerA的溢出信号,当TimerA的计数从N达 到0xFFFF后,产生 的溢出信号可以作为Timer的中断标志信号 送至中断控制系统,同时N值将被重新载入预置寄存器,使 Timer重新开始计数。TAOUT触发信号(TAOUT/2)的占空比为 50%,频率为FTAOUT/2,其它输入信号的频率为FTAOUT/16, 请参考图6.7所示的TimerA结构图。
第20页
2021/12/12
TimerA_Timeout (TimerB_Timeout)
APWMO (BPWMO) TDUTY
TAPWMO
TDUTY TDUTY
图6.9 不同占空比的PWM输出波形
占空比 4/16 6/16
11/16
第21页
2021/12/12
3. TimerB数据单元 P_TimerB_Data
[P_IOB_Dir]=R1
//设置方向向量
[P_IOB_Attrib]=R1
//设置属性向量
[P_IOB_Data]=R1
//设置数据向量
R1=0x0000
//选择中断频率为8Hz
[P_TimeBase_Setup]=R1
R1=0x0002
第7页
2021/12/12
[P_INT_Ctrl]=R1 INT IRQ WAIT: JMP WAIT .TEXT .PUBLIC _IRQ6 _IRQ6: R1=0x0001 TEST R1, [P_INT_Ctrl] JNZ IRQ_TMB2 IRQ_TMB1: PUSH R1,R4 TO [SP]
第10页
2021/12/12
Fosc/2
000
Fosc/256
001
32 768 Hz
010
8192 Hz 011时 钟 源
4096 Hz
A
1
100 选 择
101
0
110
EXT1
111
b2 b1 b0
P_TimeA_ctrl
2048 Hz 000
1024 Hz 001
256 Hz 010时 钟 源
第14页
2021/12/12
时钟源A是高频时钟源,来自带锁相环的晶体振荡器输出 Fosc;时钟源B是低频时钟源,来自32 768 Hz实时时钟系统, 时钟源B可以作为精确的计时器。例如,2 Hz定时器可以作为 实时时钟的时钟源。
在TimerA内,时钟源A和时钟源B的组合为TimerA 提供了 多种组合的计数频率。例如,若以CLKA作为门控信号,1为允 许时钟源B信号通过,0为禁止时钟源B信号通过,以此来控制 TimerA的计数或停止。如果时钟源A为1,TimerA 时钟频率将 取决于时钟源B;如果时钟源A为0,将停止TimerA的计数。 EXT1和EXT2为外部时钟源。
FTBOUT
P_TimeB_ctrl
4位 计 数 器
FTBOUT/2
/2
4位 半 加 法 器 BPWMO
P_TimerB_ctr1 b9 b8 b7 b6 TBON PWM占 空 比 设 置
图6.8 TimerB结构图
第12页
2021/12/12
定时器发生溢出会产生一个溢出信号(TAOUT/ TBOUT) ,作为定时器中断请求信号传输到CPU中断系 统;作为4位计数器时钟源信号,输出一个具有4位占空 比可调的脉宽调制输出信号APWMO 或BPWMO(分别从 IOB8 和IOB9 输出)控制电机或其它设备的速度。此外, 定时器溢出信号还可以用于触发ADC输入的自动转换控 制和DAC输出的数据锁存控制信号。
//设置时基中断
//开中断 //主程序循环 //定义中断子程序段
//判断是否为IRQ_TMB2中断 //是,进入该中断;否,进入IRQ_TMB1 //将寄存器压栈
第8页
2021/12/12
R1=0x0002
[P_INT_Clear]=R1 R2=0xFFFF [P_IOB_Data]=R2 POP R1,R4 FROM [SP] RETI IRQ_TMB2: PUSH R1,R4 TO [SP] R1=0x0001 [P_INT_Clear]=R1 POP R1,R4 FROM [SP] RETI
表6.8 P_Timebase_Setup单元
b15- b4 —-
B3
b2
b1
b0
TMB2选频逻辑
TMB1选频逻辑
第4页
2021/12/12
表6.9 选 频 逻 辑
b3 b2
TMB2
b1 b0 TMB1
0 0 128 Hz* 0 0 8 Hz**
01
256 Hz
0 1 16 Hz
10
512 Hz
1 0 32 Hz
TimerB数据单元P_TimerB_Data(读/写)(700CH)用于向16 位预置寄存器写入计数初值或从其中读取数据。
第22页
2021/12/12
4. TimerB控制单元 P_TimerB_Ctrl (写)(700DH)
通过设置b0~b2来选择TimerB的时钟源,设置b6~b9选 择TimerB输出不同脉宽调制信号即控制脉宽占空比输出 PWMO,如表6.13所示,每位的具体意义如表6.14和表6.15所 示。
相关文档
最新文档