Re: interner Watchdog Kategorie: Sonstige Hardware (von Martin Benninger - 1.01.2009 12:39) | ||
Als Antwort auf Re: interner Watchdog von PeterS - 1.01.2009 12:25 | ||
| ||
Hier die Routinen für den Watchdog: zuerst das File Watchdog.h welches im C-Program mit #include eingefügt wird: /******************************************************************************* * File: Watchdog.h * Author : M. Benninger * Ident : Rev 1 30-DEC-2008 * Function: Definitionen for Watchdog System for ATmega128 * History : Rev 1 30-DEC-2008 M. Benninger * - first implementation ******************************************************************************/ #ifndef _WATCHDOG_H_ #define _WATCHDOG_H_ /****************************************************************************** * Prescalar Values */ #define WDT_15MS 0 #define WDT_30MS 1 #define WDT_60MS 2 #define WDT_120MS 3 #define WDT_240MS 4 #define WDT_500MS 5 #define WDT_1SEC 6 #define WDT_2SEC 7 /****************************************************************************** * Function Prototypes */ void WDT_reset $asm("WDT_reset")(void); void WDT_off $asm("WDT_off")(void); void WDT_on $asm("WDT_on")(byte prescalar); #endif // _DCF_H_ /* End of Watchdog.h -- Definitionen for Watchdog System for ATmega128 ******************************************************************************/ und nun das File Watchdog.asm ;******************************************************************************* ;* File: Watchdog.asm ;* Author : M. Benninger ;* Ident : Rev 1 30-DEC-2008 ;* Function: Watchdog Timer Functions ;* This module implements three functions: ;* WDT_on (prescalar), WDT_off () and WDT_reset () ;* The parameter prescalar determine the Watchdog Timer prescaling ;* when the Watchdog Timer is enabled. The different prescaling values ;* and their corresponding Timeout Periods are shown below: ;* Prescalar Typical Timeout Value ;* 0 15 ms ;* 1 30 ms ;* 2 60 ms ;* 3 120 ms ;* 4 240 ms ;* 5 0.5 sec ;* 6 1.0 sec ;* 7 2.0 sec ;* ;* Library: none ;* ;* History : Rev 1 30-DEC-2008 M. Benninger ;* - first implementation ;******************************************************************************* ;**** Watchdog Timer Definitions **** .equ WDTCR = $21 ; Watchdog Timer Control Register .equ WDCE = 4 ; WDT Change Enable bit .equ WDE = 3 ; WDT Enable bit .equ WDPM = 7 ; WDT Prescalar mask WDT_reset: ; Reset Watchdog Timer wdr ret WDT_on: ; Enable Watchdog Timer movw r26, r6 ; r7:r6 points to ret_addr adiw r26, 4 ; X now points to prescalar parameter ld r16, x ; get prescalar parameter andi r16, WDPM ; and mask lower 3 bits ori r16, (1< out WDTCR, r16 ; write WDT control register ret WDT_off: ; Disable Watchdog Timer in r16, WDTCR ; get WDT control register ori r16, (1< ldi r16, (0< ret ;* End of Watchdog.asm -- Watchdog Timer Functions für ATmega128 ;******************************************************************************/ Ich wünsche allen eine gutes, erfolgreiches neues Jahr. Martin Benninger | ||
Antwort schreiben Antworten: Re: interner Watchdog (von Martin Benninger - 1.01.2009 12:52) Re: interner Watchdog (von Joerg - 23.09.2010 10:17) Re: interner Watchdog (von PeterS - 23.09.2010 11:05) Re: interner Watchdog (von Joerg - 23.09.2010 13:22) Re: interner Watchdog (von Ernst H. - 8.11.2010 22:49) Re: interner Watchdog (von Joerg - 9.11.2010 7:18) Re: interner Watchdog (von PeterS - 9.11.2010 16:16) Re: interner Watchdog (von Manfred - 2.01.2009 15:16) Re: interner Watchdog (von Rainer - 2.01.2009 10:41) Re: interner Watchdog (von Rainer - 9.01.2009 12:26) Re: interner Watchdog (von PeterS - 9.01.2009 13:48) Re: interner Watchdog (von Rainer - 9.01.2009 15:16) Re: interner Watchdog (von Martin Benninger - 2.01.2009 11:11) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum