wrong file location
This commit is contained in:
		
							
								
								
									
										48
									
								
								Marlin/watchdog.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								Marlin/watchdog.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | |||||||
|  | #ifdef USE_WATCHDOG | ||||||
|  |  | ||||||
|  | #include  <avr/wdt.h> | ||||||
|  | #include  <avr/interrupt.h> | ||||||
|  |  | ||||||
|  | volatile uint8_t timeout_seconds=0; | ||||||
|  |  | ||||||
|  | void(* ctrlaltdelete) (void) = 0; //does not work on my atmega2560 | ||||||
|  |  | ||||||
|  | //Watchdog timer interrupt, called if main program blocks >1sec | ||||||
|  | ISR(WDT_vect)  | ||||||
|  | {  | ||||||
|  |   if(timeout_seconds++ >= WATCHDOG_TIMEOUT) | ||||||
|  |   { | ||||||
|  |   | ||||||
|  |     #ifdef RESET_MANUAL | ||||||
|  |       LCD_MESSAGE("Please Reset!"); | ||||||
|  |       ECHOLN("echo_: Something is wrong, please turn off the printer."); | ||||||
|  |     #else | ||||||
|  |       LCD_MESSAGE("Timeout, resetting!"); | ||||||
|  |     #endif  | ||||||
|  |     //disable watchdog, it will survife reboot. | ||||||
|  |     WDTCSR |= (1<<WDCE) | (1<<WDE); | ||||||
|  |     WDTCSR = 0; | ||||||
|  |     #ifdef RESET_MANUAL | ||||||
|  |       kill(); //kill blocks | ||||||
|  |       while(1); //wait for user or serial reset | ||||||
|  |     #else | ||||||
|  |       ctrlaltdelete(); | ||||||
|  |     #endif | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /// intialise watch dog with a 1 sec interrupt time | ||||||
|  | void wd_init()  | ||||||
|  | { | ||||||
|  |   WDTCSR = (1<<WDCE )|(1<<WDE ); //allow changes | ||||||
|  |   WDTCSR = (1<<WDIF)|(1<<WDIE)| (1<<WDCE )|(1<<WDE )|  (1<<WDP2 )|(1<<WDP1)|(0<<WDP0); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /// reset watchdog. MUST be called every 1s after init or avr will reset. | ||||||
|  | void wd_reset()  | ||||||
|  | { | ||||||
|  |   wdt_reset(); | ||||||
|  |   timeout_seconds=0; //reset counter for resets | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #endif /* USE_WATCHDOG */ | ||||||
							
								
								
									
										10
									
								
								Marlin/watchdog.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								Marlin/watchdog.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | #ifndef __WATCHDOGH | ||||||
|  | #define __WATCHDOGH | ||||||
|  | #ifdef | ||||||
|  | /// intialise watch dog with a 1 sec interrupt time | ||||||
|  | void wd_init(); | ||||||
|  | /// pad the dog/reset watchdog. MUST be called at least every second after the first wd_init or avr will go into emergency procedures.. | ||||||
|  | void wd_reset(); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | #endif | ||||||
		Reference in New Issue
	
	Block a user