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