extern bool axis_relative_modes[];
-inline void kill()
-{
- disable_heater();
-
- disable_x();
- disable_y();
- disable_z();
- disable_e();
-
- if(PS_ON_PIN > -1) pinMode(PS_ON_PIN,INPUT);
- Serial.println("!! Printer halted. kill() called !!");
- while(1); // Wait for reset
-}
+void kill();
#endif
check_axes_activity();
}
+void kill()
+{
+ disable_heater();
+
+ disable_x();
+ disable_y();
+ disable_z();
+ disable_e();
+
+ if(PS_ON_PIN > -1) pinMode(PS_ON_PIN,INPUT);
+ Serial.println("!! Printer halted. kill() called !!");
+ while(1); // Wait for reset
+}
+
+
#include "ultralcd.h"\r
#include "streaming.h"\r
#include "temperature.h"\r
+#include "watchdog.h"\r
\r
\r
int target_raw[3] = {0, 0, 0};\r
}\r
\r
\r
+void disable_heater()\r
+{\r
+ #if TEMP_0_PIN > -1\r
+ target_raw[0]=0;\r
+ #if HEATER_0_PIN > -1 \r
+ WRITE(HEATER_0_PIN,LOW);\r
+ #endif\r
+ #endif\r
+ #if TEMP_1_PIN > -1\r
+ target_raw[1]=0;\r
+ #if HEATER_1_PIN > -1 \r
+ WRITE(HEATER_1_PIN,LOW);\r
+ #endif\r
+ #endif\r
+ #if TEMP_2_PIN > -1\r
+ target_raw[2]=0;\r
+ #if HEATER_2_PIN > -1 \r
+ WRITE(HEATER_2_PIN,LOW);\r
+ #endif\r
+ #endif \r
+}\r
+\r
// Timer 0 is shared with millies\r
ISR(TIMER0_COMPB_vect)\r
{\r
extern int current_raw[3];\r
extern float Kp,Ki,Kd,Kc;\r
#ifdef PIDTEMP\r
- float pid_setpoint = 0.0;\r
+ extern float pid_setpoint ;\r
#endif\r
#ifdef WATCHPERIOD\r
extern int watch_raw[3] ;\r
inline bool isCoolingHotend1() {return target_raw[TEMPSENSOR_HOTEND_1] < current_raw[TEMPSENSOR_HOTEND_1];};\r
inline bool isCoolingBed() {return target_raw[TEMPSENSOR_BED] < current_raw[TEMPSENSOR_BED];};\r
\r
-inline void disable_heater()\r
-{\r
- #if TEMP_0_PIN > -1\r
- target_raw[0]=0;\r
- #if HEATER_0_PIN > -1 \r
- WRITE(HEATER_0_PIN,LOW);\r
- #endif\r
- #endif\r
- #if TEMP_1_PIN > -1\r
- target_raw[1]=0;\r
- #if HEATER_1_PIN > -1 \r
- WRITE(HEATER_1_PIN,LOW);\r
- #endif\r
- #endif\r
- #if TEMP_2_PIN > -1\r
- target_raw[2]=0;\r
- #if HEATER_2_PIN > -1 \r
- WRITE(HEATER_2_PIN,LOW);\r
- #endif\r
- #endif \r
-}\r
-void setWatch() { \r
- if(isHeatingHotend0())\r
- {\r
- watchmillis = max(1,millis());\r
- watch_raw[TEMPSENSOR_HOTEND_0] = current_raw[TEMPSENSOR_HOTEND_0];\r
- }\r
- else\r
- {\r
- watchmillis = 0;\r
- } \r
-}\r
+void disable_heater();\r
+void setWatch();\r
+\r
#ifdef HEATER_0_USES_THERMISTOR\r
#define HEATERSOURCE 1\r
#endif\r
#ifndef __WATCHDOGH
#define __WATCHDOGH
-#ifdef
+#include "Configuration.h"
+//#ifdef USE_WATCHDOG
+
/// 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
#endif
#ifdef USE_WATCHDOG
-
+#include "watchdog.h"
#include <avr/wdt.h>
#include <avr/interrupt.h>
+++ /dev/null
-#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 */
+++ /dev/null
-#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