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

TPS3430 具有可編程復位延遲的窗口看門狗定時器數據手冊

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

TPS3435 納米靜態電流精密超時看門狗定時器數據手冊

TPS35-Q1系列 具有超時看門狗定時器的汽車級納米靜態電流精密監控器數據手冊

TPS3436-Q1 汽車級納米靜態電流精密窗口看門狗定時器數據手冊

TPS3435-Q1 汽車級納米靜態電流精密超時看門狗定時器數據手冊

圣邦微電子SGM819SxQ車規級看門狗定時器電路特性與數據手冊分享

評論