Browse Source

added suicide pin for a power supply to the arduino that is only active if the arduino is holding high for an output.

pull/1/head
Bernhard 13 years ago
parent
commit
cee5f9020a
  1. 38
      Marlin/Marlin.pde
  2. 1
      Marlin/pins.h

38
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
}

1
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

Loading…
Cancel
Save