新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC16 定時(shí)器與晶振計(jì)算

        PIC16 定時(shí)器與晶振計(jì)算

        作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò) 收藏
        PIC16定時(shí)器晶振計(jì)算

        T=(256-A)*(4/F)*分頻比
        T:是你要設(shè)定的時(shí)間.
        A:是對(duì)應(yīng)要賦的值(就是我要得到的值).

        本文引用地址:http://www.104case.com/article/201611/316235.htm

        F:晶振頻率
        Tmax=256*(4/F)*分頻比max
        T:單位是US
        1S=1000MS=1000000US

        分頻器一般都是跟計(jì)數(shù)單元一起結(jié)合使用。

        預(yù)分頻比是在計(jì)數(shù)單元值發(fā)生變化之前起作用(假如不用預(yù)分頻時(shí),計(jì)數(shù)器在每個(gè)上升沿到來(lái)時(shí)加1,而現(xiàn)在使用分頻比為1:2的預(yù)分頻器的話(huà),那么必須等到兩個(gè)上升沿的到來(lái),計(jì)數(shù)器才會(huì)加1)

        后分頻器與預(yù)分頻器功能一樣,只不過(guò)是在計(jì)數(shù)器值發(fā)生改變后起作用。像TMR2的后分頻器,如果不使用,計(jì)數(shù)器一但發(fā)生溢出,將立即置位標(biāo)志為T(mén)MR2IF,但是如果有1:2的后分頻器的話(huà),必須兩次溢出后才會(huì)置位。


        關(guān)于PIC單片機(jī)的定時(shí)器精準(zhǔn)計(jì)時(shí)的計(jì)算

        在此用了16C711單片機(jī)的TMR0做定時(shí)中斷,希望實(shí)現(xiàn)精準(zhǔn)計(jì)時(shí),在程序中,TMR0用了晶振的32分頻,初值#0FCH,因此POPBEAR兄弟計(jì) 算出每個(gè)定時(shí)中斷的計(jì)時(shí)時(shí)間為(256-X)*32*4/32768=0.015625秒。注意,問(wèn)題就在這里!實(shí)際上這個(gè)時(shí)間是TMR0的初值被置入后 兩個(gè)指令周期后(見(jiàn)PIC單片機(jī)定時(shí)器/計(jì)數(shù)器資料)到下一次中斷發(fā)生時(shí)的時(shí)間。如果要用到定時(shí)器的精準(zhǔn)定時(shí),必須理解這一概念!

        如采用32768Hz的晶振,每個(gè)指令周期為122us,在中斷處理程序中,到TMR0的初值被置入,共有7條指令,加上TMR0的初值被置入后兩個(gè)指令 周期,如果中斷處理程序不直接放在0004H地址而采用GOTO指令的兩個(gè)周期,一共為11個(gè)指令周期。也就是說(shuō),每個(gè)定時(shí)中斷發(fā)生的間隔為 0.015625秒+11*122us。程序中64次中斷為1秒,那么1秒誤差為64*11*122us=85.9375ms,1分鐘的誤差為 5.156s。


        那么怎樣得到精準(zhǔn)計(jì)時(shí)呢?這就要在對(duì)定時(shí)器的初值賦值上和中斷處理程序中做文章。




        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 甘洛县| 东城区| 井陉县| 宣城市| 海晏县| 双城市| 沽源县| 上饶市| 乐平市| 进贤县| 阿拉善右旗| 新沂市| 千阳县| 苍山县| 盐城市| 平塘县| 淮滨县| 财经| 新津县| 阳城县| 盐边县| 郓城县| 聂荣县| 高雄市| 兴城市| 珠海市| 凤翔县| 若羌县| 仁化县| 衡山县| 仪陇县| 宝兴县| 丹棱县| 长沙市| 万宁市| 兴宁市| 延吉市| 镇赉县| 西藏| 浏阳市| 城市|