chiark / gitweb /
added suicide pin for a power supply to the arduino that is only active if the arduin...
authorBernhard <bkubicek@x201.(none)>
Sun, 15 Jan 2012 16:06:10 +0000 (17:06 +0100)
committerBernhard <bkubicek@x201.(none)>
Sun, 15 Jan 2012 16:06:10 +0000 (17:06 +0100)
Marlin/Marlin.pde
Marlin/pins.h

index b650909ad17745c4160041bc2e26f53a45491ae5..cabaee13df3e43d7e8811ddedc780d4e3415ce57 100644 (file)
@@ -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
 }
 
index 6451d7425006e95db969092cccd45df6277f897b..28e349161a82bca14b084ac67e94f62e3d5d384a 100644 (file)
 #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