在由微控制器構成的微型計算機系統中,由於微控制器的工作常常會受到來自外界電磁場的干擾,造成程式的跑飛,而陷入死迴圈,程式的正常執行被打斷,由微控制器控制的系統無法繼續工作,會造成整個系統的陷入停滯狀態,發生不可預料的後果,所以出於對微控制器執行狀態進行實時監測的考慮,便產生了一種專門用於監測微控制器程式執行狀態的晶元,俗稱"看門狗",s3c2440中也整合了看門狗,在受到干擾或者系統錯誤時是晶元復位。s3c2440的看門狗有兩個特點:1、提供16bit的時間間隔的中斷。2、128個pclk的週期復位訊號。看門狗的結構:
看門狗定時器頻率計算如下:
分頻值從0到2的8次方減1,分頻係數可選:16、32、64、128。s3c2440看門狗操作需要三個暫存器:wtcon、wtdat、wtcnt。分別是看門狗控制、限時、計數。在啟動時候wtdat不會自動裝載到wtcnt,所以初始化時一定要寫定時值到wtcnt中。
測試程式:
測試中我們將分頻值設定為249,分頻係數設定為16。可計算看門狗時間間隔t_watchdog為0.00008s,設定4秒中斷一次的話那麼wtdat的值應設定為50000。每次中斷蜂鳴器響起,並用串列埠顯示相關資訊。程式如下:
主程式部分:
#define global_clk 1
#include#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "profile.h"
#include "mmu.h"
extern void watchdog_set(unsigned int wtcnt);
extern void feed_watchdog(unsigned int wtcnt);
extern unsigned char watchdog_flag;
void delay(int num)
/*餵狗操作*/
void feed_watchdog(unsigned int wtcnt)
/*看門狗中斷服務函式*/
void __irq watchdog_interrupt(void)
執行結果: 基於mini2440的看門狗(裸機)
在由微控制器構成的微型計算機系統中,由於微控制器的工作常常會受到來自外界電磁場的干擾,造成程式的跑飛,而陷入死迴圈,程式的正常執行被打斷,由微控制器控制的系統無法繼續工作,會造成整個系統的陷入停滯狀態,發生不可預料的後果,所以出於對微控制器執行狀態進行實時監測的考慮,便產生了一種專門用於監測微控制器...
mini6410 實現 看門狗移植
寫在移植前的 在mini6410中看門狗驅動檔案為linux2.6.38 drivers watchdog s3c2410 wdt.c 在mini6410中linux系統預設看門狗是不開機啟動,但是我們可以向 dev watchdog寫入資料來啟動或關閉看門狗。如 echo 0 dev watchd...
基於mini2440的RTC讀寫(裸機)
很多處理器都有rtc實時時鐘功能,s3c2440也提供了這個功能,其功能主要是 實時時鐘 鬧鐘 tick中斷等。rtc的操作比較簡單。讀寫時rtccon最低位應設定為1,不讀寫時設定為0以免誤修改rtc相應暫存器。bcdsec,bcdmin,bcdhour,bcdday,bcddate,bcdmon...