PIC16守时器与晶振核算
T=(256-A)*(4/F)*分频比
T:是你要设定的时刻.
A:是对应要赋的值(便是我要得到的值).
F:晶振频率
Tmax=256*(4/F)*分频比max
T:单位是US
1S=1000MS=1000000US
分频器一般都是跟计数单元一同结合运用。
预分频比是在计数单元值产生变化之前起效果(假设不必预分频时,计数器在每个上升沿到来时加1,而现在运用分频比为1:2的预分频器的话,那么有必要比及两个上升沿的到来,计数器才会加1)
后分频器与预分频器功用相同,只不过是在计数器值产生改动后起效果。像TMR2的后分频器,假如不运用,计数器一但产生溢出,将当即置位标志为TMR2IF,可是假如有1:2的后分频器的话,有必要两次溢出后才会置位。
关于PIC单片机的守时器精准计时的核算
|
|
在此用了16C711单片机的TMR0做守时中止,期望完成精准计时,在程序中,TMR0用了晶振的32分频,初值#0FCH,因而POPBEAR兄弟计 算出每个守时中止的计时时刻为(256-X)*32*4/32768=0.015625秒。留意,问题就在这儿!实际上这个时刻是TMR0的初值被置入后 两个指令周期后(见PIC单片机守时器/计数器材料)到下一次中止产生时的时刻。假如要用到守时器的精准守时,有必要了解这一概念! 如选用32768Hz的晶振,每个指令周期为122us,在中止处理程序中,到TMR0的初值被置入,共有7条指令,加上TMR0的初值被置入后两个指令 周期,假如中止处理程序不直接放在0004H地址而选用GOTO指令的两个周期,一共为11个指令周期。也便是说,每个守时中止产生的距离为 0.015625秒+11*122us。程序中64次中止为1秒,那么1秒差错为64*11*122us=85.9375ms,1分钟的差错为 5.156s。 那么怎样得到精准计时呢?这就要在对守时器的初值赋值上和中止处理程序中做文章。 |