}
//======================================================================================
+#include <avr/pgmspace.h>
+
+void serialprintPGM(const char *str)
+{
+ char ch=pgm_read_byte(str);
+ while(ch)
+ {
+ Serial.print(ch);
+ ch=pgm_read_byte(++str);
+ }
+}
+#define SerialprintPGM(x) serialprintPGM(PSTR(x))
+
#define EEPROM_OFFSET 100
char ver2[4]=EEPROM_VERSION;
i=EEPROM_OFFSET;
EEPROM_writeAnything(i,ver2); // validate data
- SERIAL_ECHOLN("Settings Stored");
+ SerialprintPGM("echo: Settings Stored\n");
}
void RetrieveSettings(bool def=false)
EEPROM_readAnything(i,Ki);
EEPROM_readAnything(i,Kd);
- SERIAL_ECHOLN("Stored settings retreived:");
+ SerialprintPGM("echo: Stored settings retreived:\n");
}
else
{
mintravelfeedrate=DEFAULT_MINTRAVELFEEDRATE;
max_xy_jerk=DEFAULT_XYJERK;
max_z_jerk=DEFAULT_ZJERK;
- SERIAL_ECHOLN("Using Default settings:");
+ SerialprintPGM("echo: Using Default settings:\n");
}
- SERIAL_ECHOLN("Steps per unit:");
- SERIAL_ECHOLN(" M92 X" <<_FLOAT(axis_steps_per_unit[0],3) << " Y" << _FLOAT(axis_steps_per_unit[1],3) << " Z" << _FLOAT(axis_steps_per_unit[2],3) << " E" << _FLOAT(axis_steps_per_unit[3],3));
- SERIAL_ECHOLN("Maximum feedrates (mm/s):");
- SERIAL_ECHOLN(" M203 X" <<_FLOAT(max_feedrate[0]/60,2)<<" Y" << _FLOAT(max_feedrate[1]/60,2) << " Z" << _FLOAT(max_feedrate[2]/60,2) << " E" << _FLOAT(max_feedrate[3]/60,2));
- SERIAL_ECHOLN("Maximum Acceleration (mm/s2):");
- SERIAL_ECHOLN(" M201 X" <<_FLOAT(max_acceleration_units_per_sq_second[0],0) << " Y" << _FLOAT(max_acceleration_units_per_sq_second[1],0) << " Z" << _FLOAT(max_acceleration_units_per_sq_second[2],0) << " E" << _FLOAT(max_acceleration_units_per_sq_second[3],0));
- SERIAL_ECHOLN("Acceleration: S=acceleration, T=retract acceleration");
- SERIAL_ECHOLN(" M204 S" <<_FLOAT(acceleration,2) << " T" << _FLOAT(retract_acceleration,2));
- SERIAL_ECHOLN("Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum xY jerk (mm/s), Z=maximum Z jerk (mm/s)");
- SERIAL_ECHOLN(" M205 S" <<_FLOAT(minimumfeedrate/60,2) << " T" << _FLOAT(mintravelfeedrate/60,2) << " B" << _FLOAT(minsegmenttime,2) << " X" << _FLOAT(max_xy_jerk/60,2) << " Z" << _FLOAT(max_z_jerk/60,2));
+ SerialprintPGM("echo: Steps per unit:\n M92 X");
+ Serial.print(axis_steps_per_unit[0]);
+ SerialprintPGM(" Y");
+ Serial.print(axis_steps_per_unit[1]);
+ SerialprintPGM(" Z");
+ Serial.print(axis_steps_per_unit[2]);
+ SerialprintPGM(" E");
+ Serial.print(axis_steps_per_unit[3]);
+
+ SerialprintPGM("\nMaximum feedrates (mm/s):\n M203 X" );
+ Serial.print(max_feedrate[0]/60);
+ SerialprintPGM(" Y" );
+ Serial.print(max_feedrate[1]/60 );
+ SerialprintPGM(" Z" );
+ Serial.print(max_feedrate[2]/60 );
+ SerialprintPGM(" E" );
+ Serial.print(max_feedrate[3]/60);
+ SerialprintPGM("\nMaximum Acceleration (mm/s2):\n M201 X" );
+ Serial.print(max_acceleration_units_per_sq_second[0] );
+ SerialprintPGM(" Y" );
+ Serial.print(max_acceleration_units_per_sq_second[1] );
+ SerialprintPGM(" Z" );
+ Serial.print(max_acceleration_units_per_sq_second[2] );
+ SerialprintPGM(" E" );
+ Serial.print(max_acceleration_units_per_sq_second[3]);
+ SerialprintPGM("\necho: Acceleration: S=acceleration, T=retract acceleration\n M204 S" );
+ Serial.print(acceleration );
+ SerialprintPGM(" T" );
+ Serial.print(retract_acceleration);
+ SerialprintPGM("\necho: Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum xY jerk (mm/s), Z=maximum Z jerk (mm/s)");
+ SerialprintPGM(" M205 S" );
+ Serial.print(minimumfeedrate/60 );
+ SerialprintPGM(" T" );
+ Serial.print(mintravelfeedrate/60 );
+ SerialprintPGM(" B" );
+ Serial.print(minsegmenttime );
+ SerialprintPGM(" X" );
+ Serial.print(max_xy_jerk/60 );
+ SerialprintPGM(" Z" );
+ Serial.print(max_z_jerk/60);
+ SerialprintPGM("\n" );
#ifdef PIDTEMP
- SERIAL_ECHOLN("PID settings:");
- SERIAL_ECHOLN(" M301 P" << _FLOAT(Kp,3) << " I" << _FLOAT(Ki,3) << " D" << _FLOAT(Kd,3));
+ SerialprintPGM("PID settings:");
+ SerialprintPGM(" M301 P" );
+ Serial.print(Kp );
+ SerialprintPGM(" I" );
+ Serial.print(Ki );
+ SerialprintPGM(" D" );
+ Serial.print(Kd);
#endif
}
#include "streaming.h"
#define SERIAL_ECHO(x) Serial << "echo: " << x;
#define SERIAL_ECHOLN(x) Serial << "echo: "<<x<<endl;
-#define SERIAL_ERROR(x) Serial << "echo: ERROR: " << x;
-#define SERIAL_ERRORLN(x) Serial << "echo: ERROR: " << x<<endl;
+#define SERIAL_ERROR(x) Serial << "Error: " << x;
+#define SERIAL_ERRORLN(x) Serial << "Error: " << x<<endl;
+#define SERIAL_PROTOCOL(x) Serial << x;
+#define SERIAL_PROTOCOLLN(x) Serial << x<<endl;
void get_command();
void process_commands();
+
// look here for descriptions of gcodes: http://linuxcnc.org/handbook/gcode/g-code.html
// http://objects.reprap.org/wiki/Mendel_User_Manual:_RepRapGCodes
//===========================================================================
+extern "C"{
+ extern unsigned int __bss_end;
+ extern unsigned int __heap_start;
+ extern void *__brkval;
+
+ int freeMemory() {
+ int free_memory;
+
+ if((int)__brkval == 0)
+ free_memory = ((int)&free_memory) - ((int)&__bss_end);
+ else
+ free_memory = ((int)&free_memory) - ((int)__brkval);
+
+ return free_memory;
+ }
+}
+
//adds an command to the main command buffer
//thats really done in a non-safe way.
{
Serial.begin(BAUDRATE);
SERIAL_ECHOLN("Marlin "<<version_string);
- Serial.println("start");
+ SERIAL_PROTOCOLLN("start");
+ Serial.print("echo: Free Memory:");
+ serial.println(freeMemory());
for(int8_t i = 0; i < BUFSIZE; i++)
{
fromsd[i] = false;
if(strstr(cmdbuffer[bufindr],"M29") == NULL)
{
card.write_command(cmdbuffer[bufindr]);
- Serial.println("ok");
+ SERIAL_PROTOCOLLN("ok");
}
else
{
card.closefile();
- Serial.println("Done saving file.");
+ SERIAL_PROTOCOLLN("Done saving file.");
}
}
else
strchr_pointer = strchr(cmdbuffer[bufindw], 'N');
gcode_N = (strtol(&cmdbuffer[bufindw][strchr_pointer - cmdbuffer[bufindw] + 1], NULL, 10));
if(gcode_N != gcode_LastN+1 && (strstr(cmdbuffer[bufindw], "M110") == NULL) ) {
- Serial.print("Serial Error: Line Number is not Last Line Number+1, Last Line:");
- Serial.println(gcode_LastN);
+ SERIAL_ERRORLN("Line Number is not Last Line Number+1, Last Line:"<<gcode_LastN);
//Serial.println(gcode_N);
FlushSerialRequestResend();
serial_count = 0;
strchr_pointer = strchr(cmdbuffer[bufindw], '*');
if( (int)(strtod(&cmdbuffer[bufindw][strchr_pointer - cmdbuffer[bufindw] + 1], NULL)) != checksum) {
- Serial.print("Error: checksum mismatch, Last Line:");
- Serial.println(gcode_LastN);
+ SERIAL_ERRORLN("checksum mismatch, Last Line:"<<gcode_LastN);
FlushSerialRequestResend();
serial_count = 0;
return;
}
else
{
- Serial.print("Error: No Checksum with line number, Last Line:");
- Serial.println(gcode_LastN);
+ SERIAL_ERRORLN("No Checksum with line number, Last Line:"<<gcode_LastN);
FlushSerialRequestResend();
serial_count = 0;
return;
{
if((strstr(cmdbuffer[bufindw], "*") != NULL))
{
- Serial.print("Error: No Line Number with checksum, Last Line:");
- Serial.println(gcode_LastN);
+ SERIAL_ERRORLN("No Line Number with checksum, Last Line:"<<gcode_LastN);
serial_count = 0;
return;
}
if(card.saving)
break;
#endif //SDSUPPORT
- Serial.println("ok");
+ SERIAL_PROTOCOLLN("ok");
break;
default:
break;
if(card.eof()){
card.sdprinting = false;
- Serial.println("echo: Done printing file");
+ SERIAL_PROTOCOL("Done printing file");
stoptime=millis();
char time[30];
unsigned long t=(stoptime-starttime)/1000;
int sec,min;
min=t/60;
sec=t%60;
- sprintf(time,"echo: %i min, %i sec",min,sec);
- Serial.println(time);
+ sprintf(time,"%i min, %i sec",min,sec);
+ SERIAL_ECHOLN(time);
LCD_MESSAGE(time);
card.checkautostart(true);
}
#ifdef SDSUPPORT
case 20: // M20 - list SD card
- Serial.println("Begin file list");
+ SERIAL_PROTOCOLLN("Begin file list");
card.ls();
- Serial.println("End file list");
+ SERIAL_PROTOCOLLN("End file list");
break;
case 21: // M21 - init SD card
int sec,min;
min=t/60;
sec=t%60;
- sprintf(time,"echo: time needed %i min, %i sec",min,sec);
- Serial.println(time);
+ sprintf(time,"%i min, %i sec",min,sec);
+ SERIAL_ERRORLN(time);
LCD_MESSAGE(time);
}
break;
if (code_seen('S')) setTargetBed(code_value());
break;
case 105: // M105
+ //SERIAL_ECHOLN(freeMemory());
#if (TEMP_0_PIN > -1) || defined (HEATER_USES_AD595)
tt = degHotend0();
#endif
bt = degBed();
#endif
#if (TEMP_0_PIN > -1) || defined (HEATER_USES_AD595)
- Serial.print("ok T:");
- Serial.print(tt);
+ SERIAL_PROTOCOL("ok T:");
+ SERIAL_PROTOCOL(tt);
#if TEMP_1_PIN > -1
#ifdef PIDTEMP
- Serial.print(" B:");
+ SERIAL_PROTOCOL(" B:");
#if TEMP_1_PIN > -1
- Serial.println(bt);
+ SERIAL_PROTOCOLLN(bt);
#else
- Serial.println(HeaterPower);
+ SERIAL_PROTOCOLLN(HeaterPower);
#endif
#else //not PIDTEMP
- Serial.println();
+ SERIAL_PROTOCOLLN("");
#endif //PIDTEMP
#else
- Serial.println();
+ SERIAL_PROTOCOLLN("");
#endif //TEMP_1_PIN
#else
SERIAL_ERRORLN("No thermistors - no temp");
#endif //TEMP_RESIDENCY_TIME
if( (millis() - codenum) > 1000 )
{ //Print Temp Reading every 1 second while heating up/cooling down
- Serial.print("T:");
- Serial.println( degHotend0() );
+ SERIAL_PROTOCOLLN("T:"<< degHotend0() );
codenum = millis();
}
manage_heater();
if( (millis()-codenum) > 1000 ) //Print Temp Reading every 1 second while heating up.
{
float tt=degHotend0();
- Serial.print("T:");
- Serial.println( tt );
- Serial.print("ok T:");
- Serial.print( tt );
- Serial.print(" B:");
- Serial.println( degBed() );
+ SERIAL_PROTOCOLLN("T:"<<tt );
+ SERIAL_PROTOCOLLN("ok T:"<<tt <<" B:"<<degBed() );
codenum = millis();
}
manage_heater();
}
break;
case 115: // M115
- Serial.println("FIRMWARE_NAME:Marlin; Sprinter/grbl mashup for gen6 FIRMWARE_URL:http://www.mendel-parts.com PROTOCOL_VERSION:1.0 MACHINE_TYPE:Mendel EXTRUDER_COUNT:1");
+ SERIAL_PROTOCOLLN("FIRMWARE_NAME:Marlin; Sprinter/grbl mashup for gen6 FIRMWARE_URL:http://www.mendel-parts.com PROTOCOL_VERSION:1.0 MACHINE_TYPE:Mendel EXTRUDER_COUNT:1");
break;
case 114: // M114
- Serial.print("X:");
- Serial.print(current_position[X_AXIS]);
- Serial.print("Y:");
- Serial.print(current_position[Y_AXIS]);
- Serial.print("Z:");
- Serial.print(current_position[Z_AXIS]);
- Serial.print("E:");
- Serial.print(current_position[E_AXIS]);
+ SERIAL_PROTOCOL("X:");
+ SERIAL_PROTOCOL(current_position[X_AXIS]);
+ SERIAL_PROTOCOL("Y:");
+ SERIAL_PROTOCOL(current_position[Y_AXIS]);
+ SERIAL_PROTOCOL("Z:");
+ SERIAL_PROTOCOL(current_position[Z_AXIS]);
+ SERIAL_PROTOCOL("E:");
+ SERIAL_PROTOCOL(current_position[E_AXIS]);
#ifdef DEBUG_STEPS
- Serial.print(" Count X:");
- Serial.print(float(count_position[X_AXIS])/axis_steps_per_unit[X_AXIS]);
- Serial.print("Y:");
- Serial.print(float(count_position[Y_AXIS])/axis_steps_per_unit[Y_AXIS]);
- Serial.print("Z:");
- Serial.println(float(count_position[Z_AXIS])/axis_steps_per_unit[Z_AXIS]);
+ SERIAL_PROTOCOL(" Count X:");
+ SERIAL_PROTOCOL(float(count_position[X_AXIS])/axis_steps_per_unit[X_AXIS]);
+ SERIAL_PROTOCOL("Y:");
+ SERIAL_PROTOCOL(float(count_position[Y_AXIS])/axis_steps_per_unit[Y_AXIS]);
+ SERIAL_PROTOCOL("Z:");
+ SERIAL_PROTOCOL(float(count_position[Z_AXIS])/axis_steps_per_unit[Z_AXIS]);
#endif
- Serial.println("");
+ SERIAL_PROTOCOLLN("");
break;
case 119: // M119
#if (X_MIN_PIN > -1)
- Serial.print("x_min:");
- Serial.print((READ(X_MIN_PIN)^ENDSTOPS_INVERTING)?"H ":"L ");
+ SERIAL_PROTOCOL("x_min:");
+ SERIAL_PROTOCOL(((READ(X_MIN_PIN)^ENDSTOPS_INVERTING)?"H ":"L "));
#endif
#if (X_MAX_PIN > -1)
- Serial.print("x_max:");
- Serial.print((READ(X_MAX_PIN)^ENDSTOPS_INVERTING)?"H ":"L ");
+ SERIAL_PROTOCOL("x_max:");
+ SERIAL_PROTOCOL(((READ(X_MAX_PIN)^ENDSTOPS_INVERTING)?"H ":"L "));
#endif
#if (Y_MIN_PIN > -1)
- Serial.print("y_min:");
- Serial.print((READ(Y_MIN_PIN)^ENDSTOPS_INVERTING)?"H ":"L ");
+ SERIAL_PROTOCOL("y_min:");
+ SERIAL_PROTOCOL(((READ(Y_MIN_PIN)^ENDSTOPS_INVERTING)?"H ":"L "));
#endif
#if (Y_MAX_PIN > -1)
- Serial.print("y_max:");
- Serial.print((READ(Y_MAX_PIN)^ENDSTOPS_INVERTING)?"H ":"L ");
+ SERIAL_PROTOCOL("y_max:");
+ SERIAL_PROTOCOL(((READ(Y_MAX_PIN)^ENDSTOPS_INVERTING)?"H ":"L "));
#endif
#if (Z_MIN_PIN > -1)
- Serial.print("z_min:");
- Serial.print((READ(Z_MIN_PIN)^ENDSTOPS_INVERTING)?"H ":"L ");
+ SERIAL_PROTOCOL("z_min:");
+ SERIAL_PROTOCOL(((READ(Z_MIN_PIN)^ENDSTOPS_INVERTING)?"H ":"L "));
#endif
#if (Z_MAX_PIN > -1)
- Serial.print("z_max:");
- Serial.print((READ(Z_MAX_PIN)^ENDSTOPS_INVERTING)?"H ":"L ");
+ SERIAL_PROTOCOL("z_max:");
+ SERIAL_PROTOCOL(((READ(Z_MAX_PIN)^ENDSTOPS_INVERTING)?"H ":"L "));
#endif
- Serial.println("");
+ SERIAL_PROTOCOLLN("");
break;
//TODO: update for all axis, use for loop
case 201: // M201
}
else
{
- Serial.print("echo: Unknown command:\"");
- Serial.print(cmdbuffer[bufindr]);
- Serial.println("\"");
+ SERIAL_ECHOLN("Unknown command:\""<<cmdbuffer[bufindr]<<"\"");
}
ClearToSend();
{
//char cmdbuffer[bufindr][100]="Resend:";
Serial.flush();
- Serial.print("Resend:");
- Serial.println(gcode_LastN + 1);
+ SERIAL_PROTOCOLLN("Resend:"<<gcode_LastN + 1);
ClearToSend();
}
if(fromsd[bufindr])
return;
#endif //SDSUPPORT
- Serial.println("ok");
+ SERIAL_PROTOCOLLN("ok");
}
inline void get_coordinates()
inline void ls() {root.ls();};
inline bool eof() { sdpos = file.curPosition();return sdpos>=filesize ;};
- inline char get() { int16_t n = file.read(); return (n!=-1)?(char)n:'\n';};
+ inline char get() { int16_t n = file.read(); return (n==-1)?'\n':(char)n;};
inline void setIndex(long index) {sdpos = index;file.seekSet(index);};
public:
bool autostart_stilltocheck; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware.
};
+
+#else
+class CardReader
+{
+public:
+ inline CardReader(){};
+
+ inline static void initsd(){};
+ inline static void write_command(char *buf){};
+
+ inline static void checkautostart(bool x) {};
+
+ inline static void closefile() {};
+ inline static void release(){};
+ inline static void startFileprint(){};
+ inline static void startFilewrite(char *name){};
+ inline static void pauseSDPrint(){};
+ inline static void getStatus(){};
+
+ inline static void selectFile(char* name){};
+ inline static void getfilename(const uint8_t nr){};
+ inline static uint8_t getnrfilenames(){return 0;};
+
+
+ inline static void ls() {};
+ inline static bool eof() {return true;};
+ inline static char get() {return 0;};
+ inline static void setIndex(){};
+};
#endif //SDSUPPORT
file.close();
if (file.open(&root, name, O_READ)) {
- Serial.print("File opened:");
- Serial.print(name);
- Serial.print(" Size:");
filesize = file.fileSize();
- Serial.println(filesize);
+ SERIAL_PROTOCOLLN("File opened:"<<name<<" Size:"<<filesize);
sdpos = 0;
- Serial.println("File selected");
+ SERIAL_PROTOCOLLN("File selected");
}
else{
- Serial.println("file.open failed");
+ SERIAL_PROTOCOLLN("file.open failed");
}
}
}
if (!file.open(&root, name, O_CREAT | O_APPEND | O_WRITE | O_TRUNC))
{
- Serial.print("open failed, File: ");
- Serial.print(name);
- Serial.print(".");
+ SERIAL_PROTOCOLLN("open failed, File: "<<name<<".");
}
else{
saving = true;
- Serial.print("Writing to file: ");
- Serial.println(name);
+ SERIAL_PROTOCOLLN("Writing to file: "<<name);
}
}
}
void CardReader::getStatus()
{
if(cardOK){
- Serial.print("SD printing byte ");
- Serial.print(sdpos);
- Serial.print("/");
- Serial.println(filesize);
+ SERIAL_PROTOCOLLN("SD printing byte "<<sdpos<<"/"<<filesize);
}
else{
- Serial.println("Not SD printing");
+ SERIAL_PROTOCOLLN("Not SD printing");
}
}
void CardReader::write_command(char *buf)
-#ifndef PINS_H
-#define PINS_H
-
-/****************************************************************************************
-* Arduino pin assignment
-*
-* ATMega168
-* +-\/-+
-* PC6 1| |28 PC5 (AI 5 / D19)
-* (D 0) PD0 2| |27 PC4 (AI 4 / D18)
-* (D 1) PD1 3| |26 PC3 (AI 3 / D17)
-* (D 2) PD2 4| |25 PC2 (AI 2 / D16)
-* PWM+ (D 3) PD3 5| |24 PC1 (AI 1 / D15)
-* (D 4) PD4 6| |23 PC0 (AI 0 / D14)
-* VCC 7| |22 GND
-* GND 8| |21 AREF
-* PB6 9| |20 AVCC
-* PB7 10| |19 PB5 (D 13)
-* PWM+ (D 5) PD5 11| |18 PB4 (D 12)
-* PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM
-* (D 7) PD7 13| |16 PB2 (D 10) PWM
-* (D 8) PB0 14| |15 PB1 (D 9) PWM
-* +----+
-****************************************************************************************/
-#if MOTHERBOARD == 0
-#define KNOWN_BOARD 1
-
-#ifndef __AVR_ATmega168__
-#error Oops! Make sure you have 'Arduino Diecimila' selected from the boards menu.
-#endif
-
-#define X_STEP_PIN 2
-#define X_DIR_PIN 3
-#define X_ENABLE_PIN -1
-#define X_MIN_PIN 4
-#define X_MAX_PIN 9
-
-#define Y_STEP_PIN 10
-#define Y_DIR_PIN 7
-#define Y_ENABLE_PIN -1
-#define Y_MIN_PIN 8
-#define Y_MAX_PIN 13
-
-#define Z_STEP_PIN 19
-#define Z_DIR_PIN 18
-#define Z_ENABLE_PIN 5
-#define Z_MIN_PIN 17
-#define Z_MAX_PIN 16
-
-#define E_STEP_PIN 11
-#define E_DIR_PIN 12
-#define E_ENABLE_PIN -1
-
-#define SDPOWER -1
-#define SDSS -1
-#define LED_PIN -1
-#define FAN_PIN -1
-#define PS_ON_PIN 15
-#define KILL_PIN -1
-
-#define HEATER_0_PIN 6
-#define TEMP_0_PIN 0 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
-#define HEATER_1_PIN -1
-#define HEATER_2_PIN -1
-#endif
-
-
-
-/****************************************************************************************
-* Sanguino/RepRap Motherboard with direct-drive extruders
-*
-* ATMega644P
-*
-* +---\/---+
-* (D 0) PB0 1| |40 PA0 (AI 0 / D31)
-* (D 1) PB1 2| |39 PA1 (AI 1 / D30)
-* INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29)
-* PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28)
-* PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27)
-* MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26)
-* MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25)
-* SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24)
-* RST 9| |32 AREF
-* VCC 10| |31 GND
-* GND 11| |30 AVCC
-* XTAL2 12| |29 PC7 (D 23)
-* XTAL1 13| |28 PC6 (D 22)
-* RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI
-* TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO
-* INT0 RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS
-* INT1 TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK
-* PWM (D 12) PD4 18| |23 PC1 (D 17) SDA
-* PWM (D 13) PD5 19| |22 PC0 (D 16) SCL
-* PWM (D 14) PD6 20| |21 PD7 (D 15) PWM
-* +--------+
-*
-****************************************************************************************/
-#if MOTHERBOARD == 1
-#define KNOWN_BOARD 1
-
-#ifndef __AVR_ATmega644P__
-#error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu.
-#endif
-
-#define X_STEP_PIN 15
-#define X_DIR_PIN 18
-#define X_ENABLE_PIN 19
-#define X_MIN_PIN 20
-#define X_MAX_PIN 21
-
-#define Y_STEP_PIN 23
-#define Y_DIR_PIN 22
-#define Y_ENABLE_PIN 19
-#define Y_MIN_PIN 25
-#define Y_MAX_PIN 26
-
-#define Z_STEP_PIN 29
-#define Z_DIR_PIN 30
-#define Z_ENABLE_PIN 31
-#define Z_MIN_PIN 2
-#define Z_MAX_PIN 1
-
-#define E_STEP_PIN 12
-#define E_DIR_PIN 16
-#define E_ENABLE_PIN 3
-
-#define SDPOWER -1
-#define SDSS -1
-#define LED_PIN 0
-#define FAN_PIN -1
-#define PS_ON_PIN -1
-#define KILL_PIN -1
-
-#define HEATER_0_PIN 14
-#define TEMP_0_PIN 4 //D27 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
-#define HEATER_1_PIN -1
-#define HEATER_2_PIN -1
-/* Unused (1) (2) (3) 4 5 6 7 8 9 10 11 12 13 (14) (15) (16) 17 (18) (19) (20) (21) (22) (23) 24 (25) (26) (27) 28 (29) (30) (31) */
-
-
-
-#endif
-
-
-/****************************************************************************************
-* RepRap Motherboard ****---NOOOOOO RS485/EXTRUDER CONTROLLER!!!!!!!!!!!!!!!!!---*******
-*
-****************************************************************************************/
-#if MOTHERBOARD == 2
-#define KNOWN_BOARD 1
-
-#ifndef __AVR_ATmega644P__
-#error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu.
-#endif
-
-#define X_STEP_PIN 15
-#define X_DIR_PIN 18
-#define X_ENABLE_PIN 19
-#define X_MIN_PIN 20
-#define X_MAX_PIN 21
-
-#define Y_STEP_PIN 23
-#define Y_DIR_PIN 22
-#define Y_ENABLE_PIN 24
-#define Y_MIN_PIN 25
-#define Y_MAX_PIN 26
-
-#define Z_STEP_PINN 27
-#define Z_DIR_PINN 28
-#define Z_ENABLE_PIN 29
-#define Z_MIN_PIN 30
-#define Z_MAX_PIN 31
-
-#define E_STEP_PIN 17
-#define E_DIR_PIN 16
-#define E_ENABLE_PIN -1
-
-#define SDPOWER -1
-#define SDSS 4
-#define LED_PIN 0
-
-#define SD_CARD_WRITE 2
-#define SD_CARD_DETECT 3
-#define SD_CARD_SELECT 4
-
-//our RS485 pins
-#define TX_ENABLE_PIN 12
-#define RX_ENABLE_PIN 13
-
-//pin for controlling the PSU.
-#define PS_ON_PIN 14
-
-#define FAN_PIN -1
-#define KILL_PIN -1
-
-#define HEATER_0_PIN -1
-#define TEMP_0_PIN -1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
-#define HEATER_1_PIN -1
-#define HEATER_2_PIN -1
-
-
-
-#endif
-
-/****************************************************************************************
-* Arduino Mega pin assignment
-*
-****************************************************************************************/
-#if MOTHERBOARD == 33
-#define MOTHERBOARD 3
-#define RAMPS_V_1_3
-#endif
-#if MOTHERBOARD == 3
-#define KNOWN_BOARD 1
-
-//////////////////FIX THIS//////////////
-#ifndef __AVR_ATmega1280__
- #ifndef __AVR_ATmega2560__
- #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.
- #endif
-#endif
-
-// uncomment one of the following lines for RAMPS v1.3 or v1.0, comment both for v1.2 or 1.1
-// #define RAMPS_V_1_3
-// #define RAMPS_V_1_0
-
-#ifdef RAMPS_V_1_3
-
-#define X_STEP_PIN 54
-#define X_DIR_PIN 55
-#define X_ENABLE_PIN 38
-#define X_MIN_PIN 3
-#define X_MAX_PIN -1 //2 //Max endstops default to disabled "-1", set to commented value to enable.
-
-#define Y_STEP_PIN 60
-#define Y_DIR_PIN 61
-#define Y_ENABLE_PIN 56
-#define Y_MIN_PIN 14
-#define Y_MAX_PIN -1 //15
-
-#define Z_STEP_PIN 46
-#define Z_DIR_PIN 48
-#define Z_ENABLE_PIN 62
-#define Z_MIN_PIN 18
-#define Z_MAX_PIN -1 //19
-
-#define E_STEP_PIN 26
-#define E_DIR_PIN 28
-#define E_ENABLE_PIN 24
-
-#define SDPOWER -1
-#define SDSS 53
-#define LED_PIN 13
-#define FAN_PIN 9
-#define PS_ON_PIN 12
-#define KILL_PIN -1
-
-#define HEATER_0_PIN 10
-#define HEATER_1_PIN 8
-#define HEATER_2_PIN -1
-#define TEMP_0_PIN 13 // ANALOG NUMBERING
-#define TEMP_1_PIN 14 // ANALOG NUMBERING
-#define TEMP_2_PIN -1 // ANALOG NUMBERING
-
-
-#else // RAMPS_V_1_1 or RAMPS_V_1_2 as default
-
-#define X_STEP_PIN 26
-#define X_DIR_PIN 28
-#define X_ENABLE_PIN 24
-#define X_MIN_PIN 3
-#define X_MAX_PIN -1 //2
-
-#define Y_STEP_PIN 38
-#define Y_DIR_PIN 40
-#define Y_ENABLE_PIN 36
-#define Y_MIN_PIN 16
-#define Y_MAX_PIN -1 //17
-
-#define Z_STEP_PIN 44
-#define Z_DIR_PIN 46
-#define Z_ENABLE_PIN 42
-#define Z_MIN_PIN 18
-#define Z_MAX_PIN -1 //19
-
-#define E_STEP_PIN 32
-#define E_DIR_PIN 34
-#define E_ENABLE_PIN 30
-
-#define SDPOWER 48
-#define SDSS 53
-#define LED_PIN 13
-#define PS_ON_PIN -1
-#define KILL_PIN -1
-
-
-
-#ifdef RAMPS_V_1_0 // RAMPS_V_1_0
- #define HEATER_0_PIN 12 // RAMPS 1.0
- #define HEATER_1_PIN -1 // RAMPS 1.0
- #define FAN_PIN 11 // RAMPS 1.0
-
-#else // RAMPS_V_1_1 or RAMPS_V_1_2
- #define HEATER_0_PIN 10 // RAMPS 1.1
- #define HEATER_1_PIN 8 // RAMPS 1.1
- #define FAN_PIN 9 // RAMPS 1.1
-#endif
-#define HEATER_2_PIN -1
-#define TEMP_0_PIN 2 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
-#define TEMP_1_PIN 1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
-#define TEMP_2_PIN -1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
-#endif
-
-// SPI for Max6675 Thermocouple
-
-#ifndef SDSUPPORT
-// these pins are defined in the SD library if building with SD support #define SCK_PIN 52
- #define MISO_PIN 50
- #define MOSI_PIN 51
- #define MAX6675_SS 53
-#else
- #define MAX6675_SS 49
-#endif
-
-
-#endif
-/****************************************************************************************
-* Duemilanove w/ ATMega328P pin assignment
-*
-****************************************************************************************/
-#if MOTHERBOARD == 4
-#define KNOWN_BOARD 1
-
-#ifndef __AVR_ATmega328P__
-#error Oops! Make sure you have 'Arduino Duemilanove w/ ATMega328' selected from the 'Tools -> Boards' menu.
-#endif
-
-#define X_STEP_PIN 19
-#define X_DIR_PIN 18
-#define X_ENABLE_PIN -1
-#define X_MIN_PIN 17
-#define X_MAX_PIN -1
-
-#define Y_STEP_PIN 10
-#define Y_DIR_PIN 7
-#define Y_ENABLE_PIN -1
-#define Y_MIN_PIN 8
-#define Y_MAX_PIN -1
-
-#define Z_STEP_PIN 13
-#define Z_DIR_PIN 3
-#define Z_ENABLE_PIN 2
-#define Z_MIN_PIN 4
-#define Z_MAX_PIN -1
-
-#define E_STEP_PIN 11
-#define E_DIR_PIN 12
-#define E_ENABLE_PIN -1
-
-#define SDPOWER -1
-#define SDSS -1
-#define LED_PIN -1
-#define FAN_PIN 5
-#define PS_ON_PIN -1
-#define KILL_PIN -1
-
-#define HEATER_0_PIN 6
-#define TEMP_0_PIN 0 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
-#define HEATER_1_PIN -1
-#define HEATER_2_PIN -1
-
-#endif
-
-/****************************************************************************************
-* Gen6 pin assignment
-*
-****************************************************************************************/
-#if MOTHERBOARD == 5
-#define KNOWN_BOARD 1
-
-#ifndef __AVR_ATmega644P__
- #error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu.
-#endif
-
-//x axis pins
- #define X_STEP_PIN 15
- #define X_DIR_PIN 18
- #define X_ENABLE_PIN 19
- #define X_MIN_PIN 20
- #define X_MAX_PIN -1
-
- //y axis pins
- #define Y_STEP_PIN 23
- #define Y_DIR_PIN 22
- #define Y_ENABLE_PIN 24
- #define Y_MIN_PIN 25
- #define Y_MAX_PIN -1
-
- //z axis pins
- #define Z_STEP_PIN 27
- #define Z_DIR_PIN 28
- #define Z_ENABLE_PIN 29
- #define Z_MIN_PIN 30
- #define Z_MAX_PIN -1
-
- //extruder pins
- #define E_STEP_PIN 4 //Edited @ EJE Electronics 20100715
- #define E_DIR_PIN 2 //Edited @ EJE Electronics 20100715
- #define E_ENABLE_PIN 3 //Added @ EJE Electronics 20100715
- #define TEMP_0_PIN 5 //changed @ rkoeppl 20110410
- #define HEATER_0_PIN 14 //changed @ rkoeppl 20110410
- #define HEATER_1_PIN -1 //changed @ rkoeppl 20110410
- #define HEATER_2_PIN -1
-
- #define SDPOWER -1
- #define SDSS 17
- #define LED_PIN -1 //changed @ rkoeppl 20110410
- #define TEMP_1_PIN -1 //changed @ rkoeppl 20110410
- #define TEMP_2_PIN -1
- #define FAN_PIN -1 //changed @ rkoeppl 20110410
- #define PS_ON_PIN -1 //changed @ rkoeppl 20110410
- //our pin for debugging.
-
- #define DEBUG_PIN 0
-
- //our RS485 pins
- #define TX_ENABLE_PIN 12
- #define RX_ENABLE_PIN 13
-
-#endif
-
-/****************************************************************************************
-* Sanguinololu pin assignment
-*
-****************************************************************************************/
-#if MOTHERBOARD == 62
-#define MOTHERBOARD 6
-#define SANGUINOLOLU_V_1_2
-#endif
-#if MOTHERBOARD == 6
-#define KNOWN_BOARD 1
-#ifndef __AVR_ATmega644P__
-#error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu.
-#endif
-
-#define X_STEP_PIN 15
-#define X_DIR_PIN 21
-#define X_MIN_PIN 18
-#define X_MAX_PIN -2
-
-#define Y_STEP_PIN 22
-#define Y_DIR_PIN 23
-#define Y_MIN_PIN 19
-#define Y_MAX_PIN -1
-
-#define Z_STEP_PIN 3
-#define Z_DIR_PIN 2
-#define Z_MIN_PIN 20
-#define Z_MAX_PIN -1
-
-#define E_STEP_PIN 1
-#define E_DIR_PIN 0
-
-#define LED_PIN -1
-
-#define FAN_PIN -1
-
-#define PS_ON_PIN -1
-#define KILL_PIN -1
-
-#define HEATER_0_PIN 13 // (extruder)
-
-#ifdef SANGUINOLOLU_V_1_2
-
-#define HEATER_1_PIN 12 // (bed)
-#define X_ENABLE_PIN 14
-#define Y_ENABLE_PIN 14
-#define Z_ENABLE_PIN 26
-#define E_ENABLE_PIN 14
-
-#else
-
-#define HEATER_1_PIN 14 // (bed)
-#define X_ENABLE_PIN -1
-#define Y_ENABLE_PIN -1
-#define Z_ENABLE_PIN -1
-#define E_ENABLE_PIN -1
-
-#endif
-
-#define TEMP_0_PIN 7 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 33 extruder)
-#define TEMP_1_PIN 6 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed)
-#define TEMP_2_PIN -1
-#define SDPOWER -1
-#define SDSS 31
-#define HEATER_2_PIN -1
-
-#endif
-
-
-#if MOTHERBOARD == 7
-#define KNOWN_BOARD
-/*****************************************************************
-* Ultimaker pin assignment
-******************************************************************/
-
-#ifndef __AVR_ATmega1280__
- #ifndef __AVR_ATmega2560__
- #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.
- #endif
-#endif
-
-#define X_STEP_PIN 25
-#define X_DIR_PIN 23
-#define X_MIN_PIN 22
-#define X_MAX_PIN 24
-#define X_ENABLE_PIN 27
-
-#define Y_STEP_PIN 31
-#define Y_DIR_PIN 33
-#define Y_MIN_PIN 26
-#define Y_MAX_PIN 28
-#define Y_ENABLE_PIN 29
-
-#define Z_STEP_PIN 37
-#define Z_DIR_PIN 39
-#define Z_MIN_PIN 30
-#define Z_MAX_PIN 32
-#define Z_ENABLE_PIN 35
-
-#define HEATER_1_PIN 4
-#define TEMP_1_PIN 11
-
-#define EXTRUDER_0_STEP_PIN 43
-#define EXTRUDER_0_DIR_PIN 45
-#define EXTRUDER_0_ENABLE_PIN 41
-#define HEATER_0_PIN 2
-#define TEMP_0_PIN 8
-
-#define EXTRUDER_1_STEP_PIN 49
-#define EXTRUDER_1_DIR_PIN 47
-#define EXTRUDER_1_ENABLE_PIN 51
-#define EXTRUDER_1_HEATER_PIN 3
-#define EXTRUDER_1_TEMPERATURE_PIN 10
-#define HEATER_2_PIN 51
-#define TEMP_2_PIN 3
-
-
-
-#define E_STEP_PIN EXTRUDER_0_STEP_PIN
-#define E_DIR_PIN EXTRUDER_0_DIR_PIN
-#define E_ENABLE_PIN EXTRUDER_0_ENABLE_PIN
-
-#define SDPOWER -1
-#define SDSS 53
-#define LED_PIN 13
-#define FAN_PIN 7
-#define PS_ON_PIN 12
-#define KILL_PIN -1
-
-#ifdef ULTRA_LCD
-
- #ifdef NEWPANEL
- //arduino pin witch triggers an piezzo beeper
- #define BEEPER 18
-
- #define LCD_PINS_RS 20
- #define LCD_PINS_ENABLE 17
- #define LCD_PINS_D4 16
- #define LCD_PINS_D5 21
- #define LCD_PINS_D6 5
- #define LCD_PINS_D7 6
-
- //buttons are directly attached
- #define BTN_EN1 40
- #define BTN_EN2 42
- #define BTN_ENC 19 //the click
-
- #define BLEN_C 2
- #define BLEN_B 1
- #define BLEN_A 0
-
- #define SDCARDDETECT 38
-
- //encoder rotation values
- #define encrot0 0
- #define encrot1 2
- #define encrot2 3
- #define encrot3 1
- #else //old style panel with shift register
- //arduino pin witch triggers an piezzo beeper
- #define BEEPER 18
-
- //buttons are attached to a shift register
- #define SHIFT_CLK 38
- #define SHIFT_LD 42
- #define SHIFT_OUT 40
- #define SHIFT_EN 17
-
- #define LCD_PINS_RS 16
- #define LCD_PINS_ENABLE 5
- #define LCD_PINS_D4 6
- #define LCD_PINS_D5 21
- #define LCD_PINS_D6 20
- #define LCD_PINS_D7 19
-
- //encoder rotation values
- #define encrot0 0
- #define encrot1 2
- #define encrot2 3
- #define encrot3 1
-
-
- //bits in the shift register that carry the buttons for:
- // left up center down right red
- #define BL_LE 7
- #define BL_UP 6
- #define BL_MI 5
- #define BL_DW 4
- #define BL_RI 3
- #define BL_ST 2
-
- #define BLEN_B 1
- #define BLEN_A 0
- #endif
-#endif //ULTRA_LCD
-
-#endif
-
-/****************************************************************************************
-* Teensylu 0.7 pin assingments (ATMEGA90USB)
-* Requires the Teensyduino software with Teensy2.0++ selected in arduino IDE!
-****************************************************************************************/
-#if MOTHERBOARD == 8
-#define MOTHERBOARD 8
-#define KNOWN_BOARD 1
-
-
-#define X_STEP_PIN 0
-#define X_DIR_PIN 1
-#define X_ENABLE_PIN 39
-#define X_MIN_PIN 13
-#define X_MAX_PIN -1
-
-#define Y_STEP_PIN 2
-#define Y_DIR_PIN 3
-#define Y_ENABLE_PIN 38
-#define Y_MIN_PIN 14
-#define Y_MAX_PIN -1
-
-#define Z_STEP_PIN 4
-#define Z_DIR_PIN 5
-#define Z_ENABLE_PIN 23
-#define Z_MIN_PIN 15
-#define Z_MAX_PIN -1
-
-#define E_STEP_PIN 6
-#define E_DIR_PIN 7
-#define E_ENABLE_PIN 19
-
-
-
-#define HEATER_0_PIN 21 // Extruder
-#define HEATER_1_PIN 20 // Bed
-#define HEATER_2_PIN -1
-#define FAN_PIN 22 // Fan
-
-#define TEMP_0_PIN 7 // Extruder
-#define TEMP_1_PIN 6 // Bed
-#define TEMP_2_PIN -1
-
-#define SDPOWER -1
-#define SDSS 8
-#define LED_PIN -1
-#define PS_ON_PIN -1
-#define KILL_PIN -1
-#define ALARM_PIN -1
-
-#ifndef SDSUPPORT
-// these pins are defined in the SD library if building with SD support
- #define SCK_PIN 9
- #define MISO_PIN 11
- #define MOSI_PIN 10
-#endif
-#endif
-
-#ifndef KNOWN_BOARD
-#error Unknown MOTHERBOARD value in configuration.h
-#endif
-
-//List of pins which to ignore when asked to change by gcode, 0 and 1 are RX and TX, do not mess with those!
-#define SENSITIVE_PINS {0, 1, X_STEP_PIN, X_DIR_PIN, X_ENABLE_PIN, X_MIN_PIN, X_MAX_PIN, Y_STEP_PIN, Y_DIR_PIN, Y_ENABLE_PIN, Y_MIN_PIN, Y_MAX_PIN, Z_STEP_PIN, Z_DIR_PIN, Z_ENABLE_PIN, Z_MIN_PIN, Z_MAX_PIN, E_STEP_PIN, E_DIR_PIN, E_ENABLE_PIN, LED_PIN, PS_ON_PIN, HEATER_0_PIN, HEATER_1_PIN, HEATER_2_PIN, FAN_PIN, TEMP_0_PIN, TEMP_1_PIN, TEMP_2_PIN}
-
+#ifndef PINS_H\r
+#define PINS_H\r
+\r
+/****************************************************************************************\r
+* Arduino pin assignment\r
+*\r
+* ATMega168\r
+* +-\/-+\r
+* PC6 1| |28 PC5 (AI 5 / D19)\r
+* (D 0) PD0 2| |27 PC4 (AI 4 / D18)\r
+* (D 1) PD1 3| |26 PC3 (AI 3 / D17)\r
+* (D 2) PD2 4| |25 PC2 (AI 2 / D16)\r
+* PWM+ (D 3) PD3 5| |24 PC1 (AI 1 / D15)\r
+* (D 4) PD4 6| |23 PC0 (AI 0 / D14)\r
+* VCC 7| |22 GND\r
+* GND 8| |21 AREF\r
+* PB6 9| |20 AVCC\r
+* PB7 10| |19 PB5 (D 13)\r
+* PWM+ (D 5) PD5 11| |18 PB4 (D 12)\r
+* PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM\r
+* (D 7) PD7 13| |16 PB2 (D 10) PWM\r
+* (D 8) PB0 14| |15 PB1 (D 9) PWM\r
+* +----+\r
+****************************************************************************************/\r
+#if MOTHERBOARD == 0\r
+#define KNOWN_BOARD 1\r
+\r
+#ifndef __AVR_ATmega168__\r
+#error Oops! Make sure you have 'Arduino Diecimila' selected from the boards menu.\r
+#endif\r
+\r
+#define X_STEP_PIN 2\r
+#define X_DIR_PIN 3\r
+#define X_ENABLE_PIN -1\r
+#define X_MIN_PIN 4\r
+#define X_MAX_PIN 9\r
+\r
+#define Y_STEP_PIN 10\r
+#define Y_DIR_PIN 7\r
+#define Y_ENABLE_PIN -1\r
+#define Y_MIN_PIN 8\r
+#define Y_MAX_PIN 13\r
+\r
+#define Z_STEP_PIN 19\r
+#define Z_DIR_PIN 18\r
+#define Z_ENABLE_PIN 5\r
+#define Z_MIN_PIN 17\r
+#define Z_MAX_PIN 16\r
+\r
+#define E_STEP_PIN 11\r
+#define E_DIR_PIN 12\r
+#define E_ENABLE_PIN -1\r
+\r
+#define SDPOWER -1\r
+#define SDSS -1\r
+#define LED_PIN -1\r
+#define FAN_PIN -1\r
+#define PS_ON_PIN 15\r
+#define KILL_PIN -1\r
+\r
+#define HEATER_0_PIN 6\r
+#define TEMP_0_PIN 0 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!\r
+#define HEATER_1_PIN -1\r
+#define HEATER_2_PIN -1\r
+#endif\r
+\r
+\r
+\r
+/****************************************************************************************\r
+* Sanguino/RepRap Motherboard with direct-drive extruders\r
+*\r
+* ATMega644P\r
+*\r
+* +---\/---+\r
+* (D 0) PB0 1| |40 PA0 (AI 0 / D31)\r
+* (D 1) PB1 2| |39 PA1 (AI 1 / D30)\r
+* INT2 (D 2) PB2 3| |38 PA2 (AI 2 / D29)\r
+* PWM (D 3) PB3 4| |37 PA3 (AI 3 / D28)\r
+* PWM (D 4) PB4 5| |36 PA4 (AI 4 / D27)\r
+* MOSI (D 5) PB5 6| |35 PA5 (AI 5 / D26)\r
+* MISO (D 6) PB6 7| |34 PA6 (AI 6 / D25)\r
+* SCK (D 7) PB7 8| |33 PA7 (AI 7 / D24)\r
+* RST 9| |32 AREF\r
+* VCC 10| |31 GND \r
+* GND 11| |30 AVCC\r
+* XTAL2 12| |29 PC7 (D 23)\r
+* XTAL1 13| |28 PC6 (D 22)\r
+* RX0 (D 8) PD0 14| |27 PC5 (D 21) TDI\r
+* TX0 (D 9) PD1 15| |26 PC4 (D 20) TDO\r
+* INT0 RX1 (D 10) PD2 16| |25 PC3 (D 19) TMS\r
+* INT1 TX1 (D 11) PD3 17| |24 PC2 (D 18) TCK\r
+* PWM (D 12) PD4 18| |23 PC1 (D 17) SDA\r
+* PWM (D 13) PD5 19| |22 PC0 (D 16) SCL\r
+* PWM (D 14) PD6 20| |21 PD7 (D 15) PWM\r
+* +--------+\r
+*\r
+****************************************************************************************/\r
+#if MOTHERBOARD == 1\r
+#define KNOWN_BOARD 1\r
+\r
+#ifndef __AVR_ATmega644P__\r
+#error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu.\r
+#endif\r
+\r
+#define X_STEP_PIN 15\r
+#define X_DIR_PIN 18\r
+#define X_ENABLE_PIN 19\r
+#define X_MIN_PIN 20\r
+#define X_MAX_PIN 21\r
+\r
+#define Y_STEP_PIN 23\r
+#define Y_DIR_PIN 22\r
+#define Y_ENABLE_PIN 19\r
+#define Y_MIN_PIN 25\r
+#define Y_MAX_PIN 26\r
+\r
+#define Z_STEP_PIN 29\r
+#define Z_DIR_PIN 30\r
+#define Z_ENABLE_PIN 31\r
+#define Z_MIN_PIN 2\r
+#define Z_MAX_PIN 1\r
+\r
+#define E_STEP_PIN 12\r
+#define E_DIR_PIN 16\r
+#define E_ENABLE_PIN 3\r
+\r
+#define SDPOWER -1\r
+#define SDSS -1\r
+#define LED_PIN 0\r
+#define FAN_PIN -1\r
+#define PS_ON_PIN -1\r
+#define KILL_PIN -1\r
+\r
+#define HEATER_0_PIN 14\r
+#define TEMP_0_PIN 4 //D27 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!\r
+#define HEATER_1_PIN -1\r
+#define HEATER_2_PIN -1\r
+/* Unused (1) (2) (3) 4 5 6 7 8 9 10 11 12 13 (14) (15) (16) 17 (18) (19) (20) (21) (22) (23) 24 (25) (26) (27) 28 (29) (30) (31) */\r
+\r
+\r
+\r
+#endif\r
+\r
+\r
+/****************************************************************************************\r
+* RepRap Motherboard ****---NOOOOOO RS485/EXTRUDER CONTROLLER!!!!!!!!!!!!!!!!!---*******\r
+*\r
+****************************************************************************************/\r
+#if MOTHERBOARD == 2\r
+#define KNOWN_BOARD 1\r
+\r
+#ifndef __AVR_ATmega644P__\r
+#error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu.\r
+#endif\r
+\r
+#define X_STEP_PIN 15\r
+#define X_DIR_PIN 18\r
+#define X_ENABLE_PIN 19\r
+#define X_MIN_PIN 20\r
+#define X_MAX_PIN 21\r
+\r
+#define Y_STEP_PIN 23\r
+#define Y_DIR_PIN 22\r
+#define Y_ENABLE_PIN 24\r
+#define Y_MIN_PIN 25\r
+#define Y_MAX_PIN 26\r
+\r
+#define Z_STEP_PINN 27\r
+#define Z_DIR_PINN 28\r
+#define Z_ENABLE_PIN 29\r
+#define Z_MIN_PIN 30\r
+#define Z_MAX_PIN 31\r
+\r
+#define E_STEP_PIN 17\r
+#define E_DIR_PIN 16\r
+#define E_ENABLE_PIN -1\r
+\r
+#define SDPOWER -1\r
+#define SDSS 4\r
+#define LED_PIN 0\r
+\r
+#define SD_CARD_WRITE 2\r
+#define SD_CARD_DETECT 3\r
+#define SD_CARD_SELECT 4\r
+\r
+//our RS485 pins\r
+#define TX_ENABLE_PIN 12\r
+#define RX_ENABLE_PIN 13\r
+\r
+//pin for controlling the PSU.\r
+#define PS_ON_PIN 14\r
+\r
+#define FAN_PIN -1\r
+#define KILL_PIN -1\r
+\r
+#define HEATER_0_PIN -1\r
+#define TEMP_0_PIN -1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!\r
+#define HEATER_1_PIN -1\r
+#define HEATER_2_PIN -1\r
+\r
+\r
+\r
+#endif\r
+\r
+/****************************************************************************************\r
+* Arduino Mega pin assignment\r
+*\r
+****************************************************************************************/\r
+#if MOTHERBOARD == 33\r
+#define MOTHERBOARD 3\r
+#define RAMPS_V_1_3\r
+#endif\r
+#if MOTHERBOARD == 3\r
+#define KNOWN_BOARD 1\r
+\r
+//////////////////FIX THIS//////////////\r
+#ifndef __AVR_ATmega1280__\r
+ #ifndef __AVR_ATmega2560__\r
+ #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.\r
+ #endif\r
+#endif\r
+\r
+// uncomment one of the following lines for RAMPS v1.3 or v1.0, comment both for v1.2 or 1.1\r
+// #define RAMPS_V_1_3\r
+// #define RAMPS_V_1_0\r
+\r
+#ifdef RAMPS_V_1_3\r
+\r
+#define X_STEP_PIN 54\r
+#define X_DIR_PIN 55\r
+#define X_ENABLE_PIN 38\r
+#define X_MIN_PIN 3\r
+#define X_MAX_PIN -1 //2 //Max endstops default to disabled "-1", set to commented value to enable.\r
+\r
+#define Y_STEP_PIN 60\r
+#define Y_DIR_PIN 61\r
+#define Y_ENABLE_PIN 56\r
+#define Y_MIN_PIN 14\r
+#define Y_MAX_PIN -1 //15\r
+\r
+#define Z_STEP_PIN 46\r
+#define Z_DIR_PIN 48\r
+#define Z_ENABLE_PIN 62\r
+#define Z_MIN_PIN 18\r
+#define Z_MAX_PIN -1 //19\r
+\r
+#define E_STEP_PIN 26\r
+#define E_DIR_PIN 28\r
+#define E_ENABLE_PIN 24\r
+\r
+#define SDPOWER -1\r
+#define SDSS 53\r
+#define LED_PIN 13\r
+#define FAN_PIN 9\r
+#define PS_ON_PIN 12\r
+#define KILL_PIN -1\r
+\r
+#define HEATER_0_PIN 10\r
+#define HEATER_1_PIN 8\r
+#define HEATER_2_PIN -1\r
+#define TEMP_0_PIN 13 // ANALOG NUMBERING\r
+#define TEMP_1_PIN 14 // ANALOG NUMBERING\r
+#define TEMP_2_PIN -1 // ANALOG NUMBERING\r
+\r
+\r
+#else // RAMPS_V_1_1 or RAMPS_V_1_2 as default\r
+\r
+#define X_STEP_PIN 26\r
+#define X_DIR_PIN 28\r
+#define X_ENABLE_PIN 24\r
+#define X_MIN_PIN 3\r
+#define X_MAX_PIN -1 //2\r
+\r
+#define Y_STEP_PIN 38\r
+#define Y_DIR_PIN 40\r
+#define Y_ENABLE_PIN 36\r
+#define Y_MIN_PIN 16\r
+#define Y_MAX_PIN -1 //17\r
+\r
+#define Z_STEP_PIN 44\r
+#define Z_DIR_PIN 46\r
+#define Z_ENABLE_PIN 42\r
+#define Z_MIN_PIN 18\r
+#define Z_MAX_PIN -1 //19\r
+\r
+#define E_STEP_PIN 32\r
+#define E_DIR_PIN 34\r
+#define E_ENABLE_PIN 30\r
+\r
+#define SDPOWER 48\r
+#define SDSS 53\r
+#define LED_PIN 13\r
+#define PS_ON_PIN -1\r
+#define KILL_PIN -1\r
+\r
+\r
+\r
+#ifdef RAMPS_V_1_0 // RAMPS_V_1_0\r
+ #define HEATER_0_PIN 12 // RAMPS 1.0\r
+ #define HEATER_1_PIN -1 // RAMPS 1.0\r
+ #define FAN_PIN 11 // RAMPS 1.0\r
+\r
+#else // RAMPS_V_1_1 or RAMPS_V_1_2\r
+ #define HEATER_0_PIN 10 // RAMPS 1.1\r
+ #define HEATER_1_PIN 8 // RAMPS 1.1\r
+ #define FAN_PIN 9 // RAMPS 1.1\r
+#endif\r
+#define HEATER_2_PIN -1\r
+#define TEMP_0_PIN 2 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!\r
+#define TEMP_1_PIN 1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!\r
+#define TEMP_2_PIN -1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!\r
+#endif\r
+\r
+// SPI for Max6675 Thermocouple \r
+\r
+#ifndef SDSUPPORT\r
+// these pins are defined in the SD library if building with SD support #define SCK_PIN 52\r
+ #define MISO_PIN 50\r
+ #define MOSI_PIN 51\r
+ #define MAX6675_SS 53\r
+#else\r
+ #define MAX6675_SS 49\r
+#endif\r
+\r
+\r
+#endif\r
+/****************************************************************************************\r
+* Duemilanove w/ ATMega328P pin assignment\r
+*\r
+****************************************************************************************/\r
+#if MOTHERBOARD == 4\r
+#define KNOWN_BOARD 1\r
+\r
+#ifndef __AVR_ATmega328P__\r
+#error Oops! Make sure you have 'Arduino Duemilanove w/ ATMega328' selected from the 'Tools -> Boards' menu.\r
+#endif\r
+\r
+#define X_STEP_PIN 19\r
+#define X_DIR_PIN 18\r
+#define X_ENABLE_PIN -1\r
+#define X_MIN_PIN 17\r
+#define X_MAX_PIN -1\r
+\r
+#define Y_STEP_PIN 10\r
+#define Y_DIR_PIN 7\r
+#define Y_ENABLE_PIN -1\r
+#define Y_MIN_PIN 8\r
+#define Y_MAX_PIN -1\r
+\r
+#define Z_STEP_PIN 13\r
+#define Z_DIR_PIN 3\r
+#define Z_ENABLE_PIN 2\r
+#define Z_MIN_PIN 4\r
+#define Z_MAX_PIN -1\r
+\r
+#define E_STEP_PIN 11\r
+#define E_DIR_PIN 12\r
+#define E_ENABLE_PIN -1\r
+\r
+#define SDPOWER -1\r
+#define SDSS -1\r
+#define LED_PIN -1\r
+#define FAN_PIN 5\r
+#define PS_ON_PIN -1\r
+#define KILL_PIN -1\r
+\r
+#define HEATER_0_PIN 6\r
+#define TEMP_0_PIN 0 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!\r
+#define HEATER_1_PIN -1\r
+#define HEATER_2_PIN -1\r
+\r
+#endif\r
+\r
+/****************************************************************************************\r
+* Gen6 pin assignment\r
+*\r
+****************************************************************************************/\r
+#if MOTHERBOARD == 5\r
+#define KNOWN_BOARD 1\r
+\r
+#ifndef __AVR_ATmega644P__\r
+ #error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu.\r
+#endif\r
+\r
+//x axis pins\r
+ #define X_STEP_PIN 15\r
+ #define X_DIR_PIN 18\r
+ #define X_ENABLE_PIN 19\r
+ #define X_MIN_PIN 20\r
+ #define X_MAX_PIN -1\r
+ \r
+ //y axis pins\r
+ #define Y_STEP_PIN 23\r
+ #define Y_DIR_PIN 22\r
+ #define Y_ENABLE_PIN 24\r
+ #define Y_MIN_PIN 25\r
+ #define Y_MAX_PIN -1\r
+ \r
+ //z axis pins\r
+ #define Z_STEP_PIN 27\r
+ #define Z_DIR_PIN 28\r
+ #define Z_ENABLE_PIN 29\r
+ #define Z_MIN_PIN 30\r
+ #define Z_MAX_PIN -1\r
+ \r
+ //extruder pins\r
+ #define E_STEP_PIN 4 //Edited @ EJE Electronics 20100715\r
+ #define E_DIR_PIN 2 //Edited @ EJE Electronics 20100715\r
+ #define E_ENABLE_PIN 3 //Added @ EJE Electronics 20100715\r
+ #define TEMP_0_PIN 5 //changed @ rkoeppl 20110410\r
+ #define HEATER_0_PIN 14 //changed @ rkoeppl 20110410\r
+ #define HEATER_1_PIN -1 //changed @ rkoeppl 20110410\r
+ #define HEATER_2_PIN -1\r
+ \r
+ #define SDPOWER -1\r
+ #define SDSS 17\r
+ #define LED_PIN -1 //changed @ rkoeppl 20110410\r
+ #define TEMP_1_PIN -1 //changed @ rkoeppl 20110410\r
+ #define TEMP_2_PIN -1\r
+ #define FAN_PIN -1 //changed @ rkoeppl 20110410\r
+ #define PS_ON_PIN -1 //changed @ rkoeppl 20110410\r
+ //our pin for debugging.\r
+ \r
+ #define DEBUG_PIN 0\r
+ \r
+ //our RS485 pins\r
+ #define TX_ENABLE_PIN 12\r
+ #define RX_ENABLE_PIN 13\r
+\r
+#endif\r
+\r
+/****************************************************************************************\r
+* Sanguinololu pin assignment\r
+*\r
+****************************************************************************************/\r
+#if MOTHERBOARD == 62\r
+#define MOTHERBOARD 6\r
+#define SANGUINOLOLU_V_1_2 \r
+#endif\r
+#if MOTHERBOARD == 6\r
+#define KNOWN_BOARD 1\r
+#ifndef __AVR_ATmega644P__\r
+#error Oops! Make sure you have 'Sanguino' selected from the 'Tools -> Boards' menu.\r
+#endif\r
+\r
+#define X_STEP_PIN 15\r
+#define X_DIR_PIN 21\r
+#define X_MIN_PIN 18\r
+#define X_MAX_PIN -2\r
+\r
+#define Y_STEP_PIN 22\r
+#define Y_DIR_PIN 23\r
+#define Y_MIN_PIN 19\r
+#define Y_MAX_PIN -1\r
+\r
+#define Z_STEP_PIN 3\r
+#define Z_DIR_PIN 2\r
+#define Z_MIN_PIN 20\r
+#define Z_MAX_PIN -1\r
+\r
+#define E_STEP_PIN 1\r
+#define E_DIR_PIN 0\r
+\r
+#define LED_PIN -1\r
+\r
+#define FAN_PIN -1 \r
+\r
+#define PS_ON_PIN -1\r
+#define KILL_PIN -1\r
+\r
+#define HEATER_0_PIN 13 // (extruder)\r
+\r
+#ifdef SANGUINOLOLU_V_1_2\r
+\r
+#define HEATER_1_PIN 12 // (bed)\r
+#define X_ENABLE_PIN 14\r
+#define Y_ENABLE_PIN 14\r
+#define Z_ENABLE_PIN 26\r
+#define E_ENABLE_PIN 14\r
+\r
+#else\r
+\r
+#define HEATER_1_PIN 14 // (bed)\r
+#define X_ENABLE_PIN -1\r
+#define Y_ENABLE_PIN -1\r
+#define Z_ENABLE_PIN -1\r
+#define E_ENABLE_PIN -1\r
+\r
+#endif\r
+\r
+#define TEMP_0_PIN 7 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 33 extruder)\r
+#define TEMP_1_PIN 6 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed)\r
+#define TEMP_2_PIN -1\r
+#define SDPOWER -1\r
+#define SDSS 31\r
+#define HEATER_2_PIN -1\r
+\r
+#endif\r
+\r
+\r
+#if MOTHERBOARD == 7\r
+#define KNOWN_BOARD\r
+/*****************************************************************\r
+* Ultimaker pin assignment\r
+******************************************************************/\r
+\r
+#ifndef __AVR_ATmega1280__\r
+ #ifndef __AVR_ATmega2560__\r
+ #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.\r
+ #endif\r
+#endif\r
+\r
+#define X_STEP_PIN 25\r
+#define X_DIR_PIN 23\r
+#define X_MIN_PIN 22\r
+#define X_MAX_PIN 24\r
+#define X_ENABLE_PIN 27\r
+\r
+#define Y_STEP_PIN 31\r
+#define Y_DIR_PIN 33\r
+#define Y_MIN_PIN 26\r
+#define Y_MAX_PIN 28\r
+#define Y_ENABLE_PIN 29\r
+\r
+#define Z_STEP_PIN 37 \r
+#define Z_DIR_PIN 39\r
+#define Z_MIN_PIN 30\r
+#define Z_MAX_PIN 32\r
+#define Z_ENABLE_PIN 35\r
+\r
+#define HEATER_1_PIN 4 \r
+#define TEMP_1_PIN 11 \r
+\r
+#define EXTRUDER_0_STEP_PIN 43 \r
+#define EXTRUDER_0_DIR_PIN 45\r
+#define EXTRUDER_0_ENABLE_PIN 41\r
+#define HEATER_0_PIN 2\r
+#define TEMP_0_PIN 8 \r
+\r
+#define EXTRUDER_1_STEP_PIN 49 \r
+#define EXTRUDER_1_DIR_PIN 47\r
+#define EXTRUDER_1_ENABLE_PIN 51\r
+#define EXTRUDER_1_HEATER_PIN 3\r
+#define EXTRUDER_1_TEMPERATURE_PIN 10 \r
+#define HEATER_2_PIN 51\r
+#define TEMP_2_PIN 3\r
+\r
+\r
+\r
+#define E_STEP_PIN EXTRUDER_0_STEP_PIN\r
+#define E_DIR_PIN EXTRUDER_0_DIR_PIN\r
+#define E_ENABLE_PIN EXTRUDER_0_ENABLE_PIN\r
+\r
+#define SDPOWER -1\r
+#define SDSS 53\r
+#define LED_PIN 13\r
+#define FAN_PIN 7\r
+#define PS_ON_PIN 12\r
+#define KILL_PIN -1\r
+\r
+#ifdef ULTRA_LCD\r
+\r
+ #ifdef NEWPANEL\r
+ //arduino pin witch triggers an piezzo beeper\r
+ #define BEEPER 18\r
+\r
+ #define LCD_PINS_RS 20 \r
+ #define LCD_PINS_ENABLE 17\r
+ #define LCD_PINS_D4 16\r
+ #define LCD_PINS_D5 21 \r
+ #define LCD_PINS_D6 5\r
+ #define LCD_PINS_D7 6\r
+ \r
+ //buttons are directly attached\r
+ #define BTN_EN1 40\r
+ #define BTN_EN2 42\r
+ #define BTN_ENC 19 //the click\r
+ \r
+ #define BLEN_C 2\r
+ #define BLEN_B 1\r
+ #define BLEN_A 0\r
+ \r
+ #define SDCARDDETECT 38\r
+ \r
+ //encoder rotation values\r
+ #define encrot0 0\r
+ #define encrot1 2\r
+ #define encrot2 3\r
+ #define encrot3 1\r
+ #else //old style panel with shift register\r
+ //arduino pin witch triggers an piezzo beeper\r
+ #define BEEPER 18\r
+\r
+ //buttons are attached to a shift register\r
+ #define SHIFT_CLK 38\r
+ #define SHIFT_LD 42\r
+ #define SHIFT_OUT 40\r
+ #define SHIFT_EN 17\r
+ \r
+ #define LCD_PINS_RS 16 \r
+ #define LCD_PINS_ENABLE 5\r
+ #define LCD_PINS_D4 6\r
+ #define LCD_PINS_D5 21 \r
+ #define LCD_PINS_D6 20\r
+ #define LCD_PINS_D7 19\r
+ \r
+ //encoder rotation values\r
+ #define encrot0 0\r
+ #define encrot1 2\r
+ #define encrot2 3\r
+ #define encrot3 1\r
+\r
+ \r
+ //bits in the shift register that carry the buttons for:\r
+ // left up center down right red\r
+ #define BL_LE 7\r
+ #define BL_UP 6\r
+ #define BL_MI 5\r
+ #define BL_DW 4\r
+ #define BL_RI 3\r
+ #define BL_ST 2\r
+\r
+ #define BLEN_B 1\r
+ #define BLEN_A 0\r
+ #endif \r
+#endif //ULTRA_LCD\r
+\r
+#endif\r
+\r
+/****************************************************************************************\r
+* Teensylu 0.7 pin assingments (ATMEGA90USB)\r
+* Requires the Teensyduino software with Teensy2.0++ selected in arduino IDE!\r
+****************************************************************************************/\r
+#if MOTHERBOARD == 8\r
+#define MOTHERBOARD 8\r
+#define KNOWN_BOARD 1\r
+\r
+\r
+#define X_STEP_PIN 0 \r
+#define X_DIR_PIN 1 \r
+#define X_ENABLE_PIN 39 \r
+#define X_MIN_PIN 13 \r
+#define X_MAX_PIN -1 \r
+\r
+#define Y_STEP_PIN 2 \r
+#define Y_DIR_PIN 3 \r
+#define Y_ENABLE_PIN 38 \r
+#define Y_MIN_PIN 14 \r
+#define Y_MAX_PIN -1 \r
+\r
+#define Z_STEP_PIN 4\r
+#define Z_DIR_PIN 5 \r
+#define Z_ENABLE_PIN 23 \r
+#define Z_MIN_PIN 15 \r
+#define Z_MAX_PIN -1 \r
+\r
+#define E_STEP_PIN 6 \r
+#define E_DIR_PIN 7 \r
+#define E_ENABLE_PIN 19 \r
+\r
+\r
+\r
+#define HEATER_0_PIN 21 // Extruder\r
+#define HEATER_1_PIN 20 // Bed\r
+#define HEATER_2_PIN -1\r
+#define FAN_PIN 22 // Fan \r
+\r
+#define TEMP_0_PIN 7 // Extruder\r
+#define TEMP_1_PIN 6 // Bed\r
+#define TEMP_2_PIN -1\r
+\r
+#define SDPOWER -1\r
+#define SDSS 8\r
+#define LED_PIN -1\r
+#define PS_ON_PIN -1\r
+#define KILL_PIN -1 \r
+#define ALARM_PIN -1\r
+\r
+#ifndef SDSUPPORT\r
+// these pins are defined in the SD library if building with SD support \r
+ #define SCK_PIN 9 \r
+ #define MISO_PIN 11 \r
+ #define MOSI_PIN 10 \r
+#endif\r
+#endif\r
+\r
+#ifndef KNOWN_BOARD\r
+#error Unknown MOTHERBOARD value in configuration.h\r
+#endif\r
+\r
+//List of pins which to ignore when asked to change by gcode, 0 and 1 are RX and TX, do not mess with those!\r
+#define SENSITIVE_PINS {0, 1, X_STEP_PIN, X_DIR_PIN, X_ENABLE_PIN, X_MIN_PIN, X_MAX_PIN, Y_STEP_PIN, Y_DIR_PIN, Y_ENABLE_PIN, Y_MIN_PIN, Y_MAX_PIN, Z_STEP_PIN, Z_DIR_PIN, Z_ENABLE_PIN, Z_MIN_PIN, Z_MAX_PIN, E_STEP_PIN, E_DIR_PIN, E_ENABLE_PIN, LED_PIN, PS_ON_PIN, HEATER_0_PIN, HEATER_1_PIN, HEATER_2_PIN, FAN_PIN, TEMP_0_PIN, TEMP_1_PIN, TEMP_2_PIN}\r
+\r
#endif\r
\r
static MainMenu menu;\r
\r
+#include <avr/pgmspace.h>\r
+\r
+void lcdProgMemprint(const char *str)\r
+{\r
+ char ch=pgm_read_byte(str);\r
+ while(ch)\r
+ {\r
+ lcd.print(ch);\r
+ ch=pgm_read_byte(++str);\r
+ }\r
+}\r
+#define lcdprintPGM(x) lcdProgMemprint(PSTR(x))\r
+\r
\r
//===========================================================================\r
//=============================functions ============================\r
feedmultiplychanged=false;\r
encoderpos=feedmultiply;\r
clear();\r
- lcd.setCursor(0,0);lcd.print("\002123/567\001 ");\r
+ lcd.setCursor(0,0);lcdprintPGM("\002123/567\001 ");\r
#if defined BED_USES_THERMISTOR || defined BED_USES_AD595 \r
- lcd.setCursor(10,0);lcd.print("B123/567\001 ");\r
+ lcd.setCursor(10,0);lcdprintPGM("B123/567\001 ");\r
#endif\r
}\r
\r
\r
if(starttime!=oldtime)\r
{\r
- lcd.print(itostr2(time/60));lcd.print("h ");lcd.print(itostr2(time%60));lcd.print("m");\r
+ lcd.print(itostr2(time/60));lcdprintPGM("h ");lcd.print(itostr2(time%60));lcdprintPGM("m");\r
oldtime=time;\r
}\r
}\r
if((currentz!=oldzpos)||force_lcd_update)\r
{\r
lcd.setCursor(10,1);\r
- lcd.print("Z:");lcd.print(itostr31(currentz));\r
+ lcdprintPGM("Z:");lcd.print(itostr31(currentz));\r
oldzpos=currentz;\r
}\r
static int oldfeedmultiply=0;\r
{\r
oldfeedmultiply=curfeedmultiply;\r
lcd.setCursor(0,2);\r
- lcd.print(itostr3(curfeedmultiply));lcd.print("% ");\r
+ lcd.print(itostr3(curfeedmultiply));lcdprintPGM("% ");\r
}\r
if(messagetext[0]!='\0')\r
{\r
if(force_lcd_update) //initial display of content\r
{\r
encoderpos=feedmultiply;\r
- lcd.setCursor(0,0);lcd.print("\002123/567\001 ");\r
+ lcd.setCursor(0,0);lcdprintPGM("\002123/567\001 ");\r
#if defined BED_USES_THERMISTOR || defined BED_USES_AD595 \r
- lcd.setCursor(10,0);lcd.print("B123/567\001 ");\r
+ lcd.setCursor(10,0);lcdprintPGM("B123/567\001 ");\r
#endif\r
}\r
\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Prepare");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Prepare");\r
}\r
if((activeline==line) && CLICKED)\r
{\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Auto Home");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Auto Home");\r
}\r
if((activeline==line) && CLICKED)\r
{\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Set Origin");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Set Origin");\r
\r
}\r
if((activeline==line) && CLICKED)\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Preheat"); \r
+ lcd.setCursor(0,line);lcdprintPGM(" Preheat"); \r
}\r
if((activeline==line) && CLICKED)\r
{\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Extrude");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Extrude");\r
}\r
if((activeline==line) && CLICKED)\r
{\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Disable Steppers");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Disable Steppers");\r
}\r
if((activeline==line) && CLICKED)\r
{\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Control");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Control");\r
}\r
if((activeline==line) && CLICKED)\r
{\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" \002Nozzle:");\r
+ lcd.setCursor(0,line);lcdprintPGM(" \002Nozzle:");\r
lcd.setCursor(13,line);lcd.print(ftostr3(intround(degHotend0())));\r
}\r
\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Fan speed:");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Fan speed:");\r
lcd.setCursor(13,line);lcd.print(ftostr3(fanpwm));\r
}\r
\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Acc:");\r
- lcd.setCursor(13,line);lcd.print(itostr3(acceleration/100));lcd.print("00");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Acc:");\r
+ lcd.setCursor(13,line);lcd.print(itostr3(acceleration/100));lcdprintPGM("00");\r
}\r
\r
if((activeline==line) )\r
{\r
if(encoderpos<5) encoderpos=5;\r
if(encoderpos>990) encoderpos=990;\r
- lcd.setCursor(13,line);lcd.print(itostr3(encoderpos));lcd.print("00");\r
+ lcd.setCursor(13,line);lcd.print(itostr3(encoderpos));lcdprintPGM("00");\r
}\r
}\r
}break;\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Vxy-jerk: ");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Vxy-jerk: ");\r
lcd.setCursor(13,line);lcd.print(itostr3(max_xy_jerk/60));\r
}\r
\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" PID-P: ");\r
+ lcd.setCursor(0,line);lcdprintPGM(" PID-P: ");\r
lcd.setCursor(13,line);lcd.print(itostr4(Kp));\r
}\r
\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" PID-I: ");\r
+ lcd.setCursor(0,line);lcdprintPGM(" PID-I: ");\r
lcd.setCursor(13,line);lcd.print(ftostr51(Ki));\r
}\r
\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" PID-D: ");\r
+ lcd.setCursor(0,line);lcdprintPGM(" PID-D: ");\r
lcd.setCursor(13,line);lcd.print(itostr4(Kd));\r
}\r
\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" PID-C: ");\r
+ lcd.setCursor(0,line);lcdprintPGM(" PID-C: ");\r
lcd.setCursor(13,line);lcd.print(itostr3(Kc));\r
}\r
\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Vmax ");\r
- if(i==ItemC_vmaxx)lcd.print("x:");\r
- if(i==ItemC_vmaxy)lcd.print("y:");\r
- if(i==ItemC_vmaxz)lcd.print("z:");\r
- if(i==ItemC_vmaxe)lcd.print("e:");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Vmax ");\r
+ if(i==ItemC_vmaxx)lcdprintPGM("x:");\r
+ if(i==ItemC_vmaxy)lcdprintPGM("y:");\r
+ if(i==ItemC_vmaxz)lcdprintPGM("z:");\r
+ if(i==ItemC_vmaxe)lcdprintPGM("e:");\r
lcd.setCursor(13,line);lcd.print(itostr3(max_feedrate[i-ItemC_vmaxx]/60));\r
}\r
\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Vmin:");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Vmin:");\r
lcd.setCursor(13,line);lcd.print(itostr3(minimumfeedrate/60));\r
}\r
\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" VTrav min:");\r
+ lcd.setCursor(0,line);lcdprintPGM(" VTrav min:");\r
lcd.setCursor(13,line);lcd.print(itostr3(mintravelfeedrate/60));\r
}\r
\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Amax ");\r
- if(i==ItemC_amaxx)lcd.print("x:");\r
- if(i==ItemC_amaxy)lcd.print("y:");\r
- if(i==ItemC_amaxz)lcd.print("z:");\r
- if(i==ItemC_amaxe)lcd.print("e:");\r
- lcd.setCursor(13,line);lcd.print(itostr3(max_acceleration_units_per_sq_second[i-ItemC_amaxx]/100));lcd.print("00");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Amax ");\r
+ if(i==ItemC_amaxx)lcdprintPGM("x:");\r
+ if(i==ItemC_amaxy)lcdprintPGM("y:");\r
+ if(i==ItemC_amaxz)lcdprintPGM("z:");\r
+ if(i==ItemC_amaxe)lcdprintPGM("e:");\r
+ lcd.setCursor(13,line);lcd.print(itostr3(max_acceleration_units_per_sq_second[i-ItemC_amaxx]/100));lcdprintPGM("00");\r
}\r
\r
if((activeline==line) )\r
{\r
if(encoderpos<1) encoderpos=1;\r
if(encoderpos>990) encoderpos=990;\r
- lcd.setCursor(13,line);lcd.print(itostr3(encoderpos));lcd.print("00");\r
+ lcd.setCursor(13,line);lcd.print(itostr3(encoderpos));lcdprintPGM("00");\r
}\r
}\r
}break;\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" A-retract:");\r
- lcd.setCursor(13,line);lcd.print(ftostr3(retract_acceleration/100));lcd.print("00");\r
+ lcd.setCursor(0,line);lcdprintPGM(" A-retract:");\r
+ lcd.setCursor(13,line);lcd.print(ftostr3(retract_acceleration/100));lcdprintPGM("00");\r
}\r
\r
if((activeline==line) )\r
{\r
if(encoderpos<10) encoderpos=10;\r
if(encoderpos>990) encoderpos=990;\r
- lcd.setCursor(13,line);lcd.print(itostr3(encoderpos));lcd.print("00");\r
+ lcd.setCursor(13,line);lcd.print(itostr3(encoderpos));lcdprintPGM("00");\r
}\r
}\r
}break;\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Esteps/mm:");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Esteps/mm:");\r
lcd.setCursor(13,line);lcd.print(itostr4(axis_steps_per_unit[3]));\r
}\r
\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Store EPROM");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Store EPROM");\r
}\r
if((activeline==line) && CLICKED)\r
{\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Load EPROM");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Load EPROM");\r
}\r
if((activeline==line) && CLICKED)\r
{\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" Restore Failsafe");\r
+ lcd.setCursor(0,line);lcdprintPGM(" Restore Failsafe");\r
}\r
if((activeline==line) && CLICKED)\r
{\r
{\r
if(force_lcd_update)\r
{\r
- lcd.setCursor(0,line);lcd.print(" File");\r
+ lcd.setCursor(0,line);lcdprintPGM(" File");\r
}\r
if((activeline==line) && CLICKED)\r
{\r
if(true)\r
#endif\r
{\r
- lcd.print(" \004Refresh");\r
+ lcdprintPGM(" \004Refresh");\r
}\r
else\r
{\r
- lcd.print(" \004Insert Card");\r
+ lcdprintPGM(" \004Insert Card");\r
}\r
\r
}\r
{\r
card.getfilename(i-2);\r
//Serial.print("Filenr:");Serial.println(i-2);\r
- lcd.setCursor(0,line);lcd.print(" ");lcd.print(card.filename);\r
+ lcd.setCursor(0,line);lcdprintPGM(" ");lcd.print(card.filename);\r
}\r
if((activeline==line) && CLICKED)\r
{\r
{ \r
case ItemM_watch:\r
{\r
- if(force_lcd_update) {lcd.setCursor(0,line);lcd.print(" Watch \x7E");}\r
+ if(force_lcd_update) {lcd.setCursor(0,line);lcdprintPGM(" Watch \x7E");}\r
if((activeline==line)&&CLICKED)\r
{\r
BLOCK;\r
} break;\r
case ItemM_prepare:\r
{\r
- if(force_lcd_update) {lcd.setCursor(0,line);lcd.print(" Prepare \x7E");}\r
+ if(force_lcd_update) {lcd.setCursor(0,line);lcdprintPGM(" Prepare \x7E");}\r
if((activeline==line)&&CLICKED)\r
{\r
BLOCK;\r
\r
case ItemM_control:\r
{\r
- if(force_lcd_update) {lcd.setCursor(0,line);lcd.print(" Control \x7E");}\r
+ if(force_lcd_update) {lcd.setCursor(0,line);lcdprintPGM(" Control \x7E");}\r
if((activeline==line)&&CLICKED)\r
{\r
BLOCK;\r
#endif\r
{\r
if(card.sdprinting)\r
- lcd.print(" Stop Print \x7E");\r
+ lcdprintPGM(" Stop Print \x7E");\r
else\r
- lcd.print(" Card Menu \x7E");\r
+ lcdprintPGM(" Card Menu \x7E");\r
}\r
else\r
{\r
- lcd.print(" No Card"); \r
+ lcdprintPGM(" No Card"); \r
}\r
}\r
#ifdef CARDINSERTED\r