在許多PIC示例中,您將看到旨在在代碼執(zhí)行期間添加暫停的延遲。這種延遲的一個示例包括先前文章中的LED閃爍代碼,其使用簡單的for循環(huán)來在LED的ON和OFF狀態(tài)之間添加延遲。但是,有時這種延遲并不是很有用,特別是在需要精確定時時。
當(dāng)需要精確定時時,會有非常有用的外設(shè):定時器!與for循環(huán)延遲不同,定時器可以為定時事件提供非常準(zhǔn)確的源并創(chuàng)建特定長度的延遲。通常,PIC有許多不同的定時器,所以為了簡單起見,我們只關(guān)注PIC16F819中的timer0和看門狗定時器。
PIC16F819中的Timer0
大多數(shù)PIC都有一個timer0,它通常是一個可以計時的8位定時器來自多個源,用于其他外設(shè),并可在溢出時產(chǎn)生中斷。這使它對關(guān)鍵的時序例程非常有用,但也可以用作通用計時器。使用定時器時,有兩種主要方法可以實(shí)現(xiàn):
定時器溢出時中斷PIC(計數(shù)超過255并重置為0)
探測定時器寄存器并查看它當(dāng)前處于什么值?
由于我們尚未考慮中斷,我們將專注于使用定時器進(jìn)行1ms的簡單延遲通過民意調(diào)查。使用定時器時的第一個任務(wù)是配置,這是通過配置與定時器相關(guān)的寄存器來完成的。對于PIC16F819,OPTION_REG保存配置定時器所需的位。
需要設(shè)置的第一位是定時器的時鐘源。最常見的來源是內(nèi)部指令時鐘周期(基本上是工作頻率/4),但您也可以從外部時鐘源(饋入T0CKI引腳)為定時器提供時鐘。在我們的例子中,我們將從PIC而不是外部源為它提供時鐘。
可以設(shè)置的下一位是時鐘邊沿,它確定定時器是在上升沿還是下降沿遞增;這很少使用,因此現(xiàn)在可以忽略。
下一位PSA確定預(yù)定標(biāo)器是分配給定時器還是分配給看門狗。在這個例子中,我們將把PSA分配給看門狗,原因?qū)⒃诤竺娼忉尅?/p>
在XC8中的PIC16F819上設(shè)置timer0
配置定時器后,可以在某些代碼中使用它來延遲1ms。定時器由FOSC/4提供時鐘,我們的FOSC為500kHz,因此定時器將以125kHz(或每8us一次)的速率遞增。由于我們希望使用此定時器延遲1ms,我們需要確定定時器計時的時間,直到它達(dá)到大約1ms的值。這是一些數(shù)學(xué)的來源!
因此,當(dāng)1ms過去時,定時器的值為125。所以在我們的延遲功能中,我們復(fù)位定時器值,然后等到定時器寄存器等于或大于125。
PIC16F819中的看門狗定時器
看門狗定時器可以是真正的源痛苦,也可以使PIC系統(tǒng)非常強(qiáng)大和可靠。但看門狗計時器究竟是什么?簡單地說,看門狗定時器是PIC中的硬件定時器,如果不經(jīng)常由軟件復(fù)位,將導(dǎo)致PIC復(fù)位。如果PIC由于硬件或軟件問題而掛起并保證PIC將從頭重新啟動,則此功能非常有用。它不僅重置了系統(tǒng),還標(biāo)記了一些可用于確定系統(tǒng)是否崩潰的位。
在使用看門狗之前,必須先啟用它,這可以通過在代碼頂部設(shè)置一個配置位來完成。如果您沒有使用PIC16F819,請檢查數(shù)據(jù)表中使用的配置位,使用MPLAB X中的配置位選擇系統(tǒng),或使用Google。
打開PIC16F819上的看門狗定時器
下一步是檢查看門狗是否與預(yù)縮放器一起使用;這是之前OPTION_REG發(fā)揮作用的地方。由于我們不希望預(yù)定標(biāo)器與timer0一起使用,我們將PSA分配位設(shè)置為0,這意味著預(yù)分頻器被分配給看門狗。但這如何影響看門狗的運(yùn)作?從本質(zhì)上講,預(yù)分頻器可以被認(rèn)為是一個時鐘分頻器,所以如果你有一個1MHz的時鐘進(jìn)入具有2倍預(yù)分頻器的看門狗,進(jìn)入看門狗的時鐘實(shí)際上是500kHz(因為它除以2 )。
看門狗從內(nèi)部31.25kHz振蕩器獲取其時鐘源,具有16ms周期,然后將該16ms脈沖饋入預(yù)定標(biāo)器系統(tǒng)。這意味著看門狗可以在8種不同選項中的一種上超時(使用PS2:PS0位分配)。
000 - 16ms
001 - 32ms
010 - 64ms
011 - 128ms
100 - 256ms
101 - 512ms
110 - 1024ms
111 - 2048ms
對于我們的項目,我們將配置看門狗定時器,因此如果項目掛起超過一秒鐘,系統(tǒng)將重置。
設(shè)置已分配給看門狗的預(yù)縮放器
所以現(xiàn)在我們有一個看門狗,它會在掛起時每秒重置一次PIC,但我們?nèi)绾未_定掛?這是一個有用的函數(shù):CLRWDT()。調(diào)用此函數(shù)后,它將自動重置看門狗定時器。此函數(shù)應(yīng)放在主循環(huán)代碼段中,以便PIC不復(fù)位,主代碼需要經(jīng)常迭代一次。
重置看門狗定時器所需的功能
計時器:必要的外圍設(shè)備
定時器可以是很棒的外設(shè),你應(yīng)該盡快利用它們。它們可以提供準(zhǔn)確的計時,計數(shù)甚至無掛起的系統(tǒng)。 PIC有時還有其他具有許多高級功能的定時器,例如16位和門控,可用于控制其他外設(shè)??偟膩碚f,不要猶豫使用計時器!
-
PIC
+關(guān)注
關(guān)注
8文章
507瀏覽量
89153 -
定時器
+關(guān)注
關(guān)注
23文章
3298瀏覽量
118732
發(fā)布評論請先 登錄
TPS3431 帶啟用功能的標(biāo)準(zhǔn)可編程看門狗定時器數(shù)據(jù)手冊

TPS3430 具有可編程復(fù)位延遲的窗口看門狗定時器數(shù)據(jù)手冊

TPS3430-Q1 具有可編程復(fù)位延遲的汽車級窗口看門狗定時器數(shù)據(jù)手冊

TPS3431-Q1 具有使能功能的汽車標(biāo)準(zhǔn)可編程看門狗定時器數(shù)據(jù)手冊

TPS3435 納米靜態(tài)電流精密超時看門狗定時器數(shù)據(jù)手冊

TPS35-Q1系列 具有超時看門狗定時器的汽車級納米靜態(tài)電流精密監(jiān)控器數(shù)據(jù)手冊

TPS3436-Q1 汽車級納米靜態(tài)電流精密窗口看門狗定時器數(shù)據(jù)手冊

TPS3435-Q1 汽車級納米靜態(tài)電流精密超時看門狗定時器數(shù)據(jù)手冊

圣邦微電子SGM819SxQ車規(guī)級看門狗定時器電路特性與數(shù)據(jù)手冊分享

抄作業(yè)!看門狗定時器必備知識

TPS3431EVM帶使能的標(biāo)準(zhǔn)可編程看門狗定時器

禁用Tl系列監(jiān)控器的看門狗定時器

DRV3205-Q1的問答看門狗定時器配置

評論