From cee5f9020ace7da75895c088a2f9bab3eb2f3a1e Mon Sep 17 00:00:00 2001
From: Bernhard <bkubicek@x201.(none)>
Date: Sun, 15 Jan 2012 17:06:10 +0100
Subject: [PATCH] added suicide pin for a power supply to the arduino that is
only active if the arduino is holding high for an output.
---
Marlin/Marlin.pde | 38 ++++++++++++++++++++++++++++++++++----
Marlin/pins.h | 1 +
2 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/Marlin/Marlin.pde b/Marlin/Marlin.pde
index b650909ad1..cabaee13df 100644
--- a/Marlin/Marlin.pde
+++ b/Marlin/Marlin.pde
@@ -161,7 +161,7 @@ static bool fromsd[BUFSIZE];
static int bufindr = 0;
static int bufindw = 0;
static int buflen = 0;
-static int i = 0;
+//static int i = 0;
static char serial_char;
static int serial_count = 0;
static boolean comment_mode = false;
@@ -233,8 +233,30 @@ void setup_photpin()
#endif
#endif
}
+
+void setup_powerhold()
+{
+ #ifdef SUICIDE_PIN
+ #if (SUICIDE_PIN> -1)
+ SET_OUTPUT(SUICIDE_PIN);
+ WRITE(SUICIDE_PIN, HIGH);
+ #endif
+ #endif
+}
+
+void suicide()
+{
+ #ifdef SUICIDE_PIN
+ #if (SUICIDE_PIN> -1)
+ SET_OUTPUT(SUICIDE_PIN);
+ WRITE(SUICIDE_PIN, LOW);
+ #endif
+ #endif
+}
+
void setup()
{
+ setup_powerhold();
MSerial.begin(BAUDRATE);
SERIAL_ECHO_START;
SERIAL_ECHOLNPGM(VERSION_STRING);
@@ -912,10 +934,17 @@ FORCE_INLINE void process_commands()
case 80: // M80 - ATX Power On
SET_OUTPUT(PS_ON_PIN); //GND
break;
+ #endif
+
case 81: // M81 - ATX Power Off
- SET_INPUT(PS_ON_PIN); //Floating
- break;
- #endif
+ #if (SUICIDE_PIN >-1)
+ suicide();
+ #else
+ #if (PS_ON_PIN > -1)
+ SET_INPUT(PS_ON_PIN); //Floating
+ #endif
+ #endif
+
case 82:
axis_relative_modes[3] = false;
break;
@@ -1314,6 +1343,7 @@ void kill()
SERIAL_ERROR_START;
SERIAL_ERRORLNPGM("Printer halted. kill() called !!");
LCD_MESSAGEPGM("KILLED. ");
+ suicide();
while(1); // Wait for reset
}
diff --git a/Marlin/pins.h b/Marlin/pins.h
index 6451d74250..28e349161a 100644
--- a/Marlin/pins.h
+++ b/Marlin/pins.h
@@ -582,6 +582,7 @@
#define FAN_PIN 7
#define PS_ON_PIN 12
#define KILL_PIN -1
+#define SUICIDE_PIN 54 //PIN that has to be turned on right after start, to keep power flowing.
#ifdef ULTRA_LCD
--
GitLab