Merge remote branch 'origin/experimental' into experimental

This commit is contained in:
Emanuele Caruso 2011-07-24 19:36:35 +02:00
commit edb91dd6fa
5 changed files with 182 additions and 140 deletions

View file

@ -15,6 +15,7 @@
// 1 is 100k thermistor
// 2 is 200k thermistor
// 3 is mendel-parts thermistor
// 4 is 10k thermistor
#define THERMISTORHEATER 1
#define THERMISTORBED 1
@ -28,6 +29,8 @@ float axis_steps_per_unit[] = {80, 80, 3200/1.25,700};
#define ENDSTOPPULLUPS 1 // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
const bool ENDSTOPS_INVERTING = false; //set to true to invert the logic of the endstops
//If your axes are only moving in one direction, make sure the endstops are connected properly.
//If your axes move in one direction ONLY when the endstops are triggered, set ENDSTOPS_INVERTING to true here
// This determines the communication speed of the printer
#define BAUDRATE 115200
@ -41,10 +44,10 @@ const bool ENDSTOPS_INVERTING = false; //set to true to invert the logic of the
#include "thermistortables.h"
// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
const bool X_ENABLE_ON = 0;
const bool Y_ENABLE_ON = 0;
const bool Z_ENABLE_ON = 0;
const bool E_ENABLE_ON = 0;
#define X_ENABLE_ON 0
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define E_ENABLE_ON 0
// Disables axis when it's not being used.
const bool DISABLE_X = false;
@ -60,9 +63,9 @@ const bool INVERT_E_DIR = false;
//// ENDSTOP SETTINGS:
// Sets direction of endstops when homing; 1=MAX, -1=MIN
const int X_HOME_DIR = -1;
const int Y_HOME_DIR = -1;
const int Z_HOME_DIR = -1;
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1
const bool min_software_endstops = false; //If true, axis won't move to coordinates less than zero.
const bool max_software_endstops = true; //If true, axis won't move to coordinates greater than the defined lengths below.
@ -73,6 +76,7 @@ const int Z_MAX_LENGTH = 100;
//// MOVEMENT SETTINGS
const int NUM_AXIS = 4; // The axis order in all axis related arrays is X, Y, Z, E
float max_feedrate[] = {200000, 200000, 240, 500000};
float homing_feedrate[] = {1500,1500,120};
bool axis_relative_modes[] = {false, false, false, false};
// Min step delay in microseconds. If you are experiencing missing steps, try to raise the delay microseconds, but be aware this

View file

@ -127,7 +127,7 @@ int tt = 0, bt = 0;
int temp_iState_max = 100 * PID_INTEGRAL_DRIVE_MAX / PID_IGAIN;
#endif
#ifdef SMOOTHING
uint32_t nma = SMOOTHFACTOR * analogRead(TEMP_0_PIN);
uint32_t nma = 0;
#endif
#ifdef WATCHPERIOD
int watch_raw = -1000;
@ -541,8 +541,7 @@ inline void process_commands()
case 28: //G28 Home all Axis one at a time
saved_feedrate = feedrate;
for(int i=0; i < NUM_AXIS; i++) {
destination[i] = 0;
current_position[i] = 0;
destination[i] = current_position[i];
}
feedrate = 0;
@ -552,7 +551,7 @@ inline void process_commands()
if ((X_MIN_PIN > -1 && X_HOME_DIR==-1) || (X_MAX_PIN > -1 && X_HOME_DIR==1)){
current_position[0] = 0;
destination[0] = 1.5 * X_MAX_LENGTH * X_HOME_DIR;
feedrate = max_start_speed_units_per_second[0] * 60;
feedrate = homing_feedrate[0];
prepare_move();
current_position[0] = 0;
@ -562,8 +561,8 @@ inline void process_commands()
destination[0] = 10 * X_HOME_DIR;
prepare_move();
current_position[0] = 0;
destination[0] = 0;
current_position[0] = (X_HOME_DIR == -1) ? 0 : X_MAX_LENGTH;
destination[0] = current_position[0];
feedrate = 0;
}
}
@ -572,7 +571,7 @@ inline void process_commands()
if ((Y_MIN_PIN > -1 && Y_HOME_DIR==-1) || (Y_MAX_PIN > -1 && Y_HOME_DIR==1)){
current_position[1] = 0;
destination[1] = 1.5 * Y_MAX_LENGTH * Y_HOME_DIR;
feedrate = max_start_speed_units_per_second[1] * 60;
feedrate = homing_feedrate[1];
prepare_move();
current_position[1] = 0;
@ -582,8 +581,8 @@ inline void process_commands()
destination[1] = 10 * Y_HOME_DIR;
prepare_move();
current_position[1] = 0;
destination[1] = 0;
current_position[1] = (Y_HOME_DIR == -1) ? 0 : Y_MAX_LENGTH;
destination[1] = current_position[1];
feedrate = 0;
}
}
@ -592,7 +591,7 @@ inline void process_commands()
if ((Z_MIN_PIN > -1 && Z_HOME_DIR==-1) || (Z_MAX_PIN > -1 && Z_HOME_DIR==1)){
current_position[2] = 0;
destination[2] = 1.5 * Z_MAX_LENGTH * Z_HOME_DIR;
feedrate = max_feedrate[2]/2;
feedrate = homing_feedrate[2];
prepare_move();
current_position[2] = 0;
@ -602,8 +601,8 @@ inline void process_commands()
destination[2] = 10 * Z_HOME_DIR;
prepare_move();
current_position[2] = 0;
destination[2] = 0;
current_position[2] = (Z_HOME_DIR == -1) ? 0 : Z_MAX_LENGTH;
destination[2] = current_position[2];
feedrate = 0;
}
@ -734,7 +733,9 @@ inline void process_commands()
#endif
break;
case 140: // M140 set bed temp
#if TEMP_1_PIN > -1 || defined BED_USES_AD595
if (code_seen('S')) target_bed_raw = temp2analogBed(code_value());
#endif
break;
case 105: // M105
#if (TEMP_0_PIN > -1) || defined (HEATER_USES_MAX6675)|| defined HEATER_USES_AD595
@ -1389,6 +1390,7 @@ void manage_heater()
current_raw = read_max6675();
#endif
#ifdef SMOOTHING
if (!nma) nma = SMOOTHFACTOR * current_raw;
nma = (nma + current_raw) - (nma / SMOOTHFACTOR);
current_raw = nma / SMOOTHFACTOR;
#endif

View file

@ -179,53 +179,53 @@ pins
#define DIO13_PWM NULL
#define AIO0_PIN PINC0
#define AIO0_RPORT PINC
#define AIO0_WPORT PORTC
#define AIO0_DDR DDRC
#define AIO0_PWM NULL
#define DIO14_PIN PINC0
#define DIO14_RPORT PINC
#define DIO14_WPORT PORTC
#define DIO14_DDR DDRC
#define DIO14_PWM NULL
#define AIO1_PIN PINC1
#define AIO1_RPORT PINC
#define AIO1_WPORT PORTC
#define AIO1_DDR DDRC
#define AIO1_PWM NULL
#define DIO15_PIN PINC1
#define DIO15_RPORT PINC
#define DIO15_WPORT PORTC
#define DIO15_DDR DDRC
#define DIO15_PWM NULL
#define AIO2_PIN PINC2
#define AIO2_RPORT PINC
#define AIO2_WPORT PORTC
#define AIO2_DDR DDRC
#define AIO2_PWM NULL
#define DIO16_PIN PINC2
#define DIO16_RPORT PINC
#define DIO16_WPORT PORTC
#define DIO16_DDR DDRC
#define DIO16_PWM NULL
#define AIO3_PIN PINC3
#define AIO3_RPORT PINC
#define AIO3_WPORT PORTC
#define AIO3_DDR DDRC
#define AIO3_PWM NULL
#define DIO17_PIN PINC3
#define DIO17_RPORT PINC
#define DIO17_WPORT PORTC
#define DIO17_DDR DDRC
#define DIO17_PWM NULL
#define AIO4_PIN PINC4
#define AIO4_RPORT PINC
#define AIO4_WPORT PORTC
#define AIO4_DDR DDRC
#define AIO4_PWM NULL
#define DIO18_PIN PINC4
#define DIO18_RPORT PINC
#define DIO18_WPORT PORTC
#define DIO18_DDR DDRC
#define DIO18_PWM NULL
#define AIO5_PIN PINC5
#define AIO5_RPORT PINC
#define AIO5_WPORT PORTC
#define AIO5_DDR DDRC
#define AIO5_PWM NULL
#define DIO19_PIN PINC5
#define DIO19_RPORT PINC
#define DIO19_WPORT PORTC
#define DIO19_DDR DDRC
#define DIO19_PWM NULL
#define AIO6_PIN PINC6
#define AIO6_RPORT PINC
#define AIO6_WPORT PORTC
#define AIO6_DDR DDRC
#define AIO6_PWM NULL
#define DIO20_PIN PINC6
#define DIO20_RPORT PINC
#define DIO20_WPORT PORTC
#define DIO20_DDR DDRC
#define DIO20_PWM NULL
#define AIO7_PIN PINC7
#define AIO7_RPORT PINC
#define AIO7_WPORT PORTC
#define AIO7_DDR DDRC
#define AIO7_PWM NULL
#define DIO21_PIN PINC7
#define DIO21_RPORT PINC
#define DIO21_WPORT PORTC
#define DIO21_DDR DDRC
#define DIO21_PWM NULL
@ -1265,101 +1265,101 @@ pins
#define DIO53_DDR DDRB
#define DIO53_PWM NULL
#define AIO0_PIN PINF0
#define AIO0_RPORT PINF
#define AIO0_WPORT PORTF
#define AIO0_DDR DDRF
#define AIO0_PWM NULL
#define DIO54_PIN PINF0
#define DIO54_RPORT PINF
#define DIO54_WPORT PORTF
#define DIO54_DDR DDRF
#define DIO54_PWM NULL
#define AIO1_PIN PINF1
#define AIO1_RPORT PINF
#define AIO1_WPORT PORTF
#define AIO1_DDR DDRF
#define AIO1_PWM NULL
#define DIO55_PIN PINF1
#define DIO55_RPORT PINF
#define DIO55_WPORT PORTF
#define DIO55_DDR DDRF
#define DIO55_PWM NULL
#define AIO2_PIN PINF2
#define AIO2_RPORT PINF
#define AIO2_WPORT PORTF
#define AIO2_DDR DDRF
#define AIO2_PWM NULL
#define DIO56_PIN PINF2
#define DIO56_RPORT PINF
#define DIO56_WPORT PORTF
#define DIO56_DDR DDRF
#define DIO56_PWM NULL
#define AIO3_PIN PINF3
#define AIO3_RPORT PINF
#define AIO3_WPORT PORTF
#define AIO3_DDR DDRF
#define AIO3_PWM NULL
#define DIO57_PIN PINF3
#define DIO57_RPORT PINF
#define DIO57_WPORT PORTF
#define DIO57_DDR DDRF
#define DIO57_PWM NULL
#define AIO4_PIN PINF4
#define AIO4_RPORT PINF
#define AIO4_WPORT PORTF
#define AIO4_DDR DDRF
#define AIO4_PWM NULL
#define DIO58_PIN PINF4
#define DIO58_RPORT PINF
#define DIO58_WPORT PORTF
#define DIO58_DDR DDRF
#define DIO58_PWM NULL
#define AIO5_PIN PINF5
#define AIO5_RPORT PINF
#define AIO5_WPORT PORTF
#define AIO5_DDR DDRF
#define AIO5_PWM NULL
#define DIO59_PIN PINF5
#define DIO59_RPORT PINF
#define DIO59_WPORT PORTF
#define DIO59_DDR DDRF
#define DIO59_PWM NULL
#define AIO6_PIN PINF6
#define AIO6_RPORT PINF
#define AIO6_WPORT PORTF
#define AIO6_DDR DDRF
#define AIO6_PWM NULL
#define DIO60_PIN PINF6
#define DIO60_RPORT PINF
#define DIO60_WPORT PORTF
#define DIO60_DDR DDRF
#define DIO60_PWM NULL
#define AIO7_PIN PINF7
#define AIO7_RPORT PINF
#define AIO7_WPORT PORTF
#define AIO7_DDR DDRF
#define AIO7_PWM NULL
#define DIO61_PIN PINF7
#define DIO61_RPORT PINF
#define DIO61_WPORT PORTF
#define DIO61_DDR DDRF
#define DIO61_PWM NULL
#define AIO8_PIN PINK0
#define AIO8_RPORT PINK
#define AIO8_WPORT PORTK
#define AIO8_DDR DDRK
#define AIO8_PWM NULL
#define DIO62_PIN PINK0
#define DIO62_RPORT PINK
#define DIO62_WPORT PORTK
#define DIO62_DDR DDRK
#define DIO62_PWM NULL
#define AIO9_PIN PINK1
#define AIO9_RPORT PINK
#define AIO9_WPORT PORTK
#define AIO9_DDR DDRK
#define AIO9_PWM NULL
#define DIO63_PIN PINK1
#define DIO63_RPORT PINK
#define DIO63_WPORT PORTK
#define DIO63_DDR DDRK
#define DIO63_PWM NULL
#define AIO10_PIN PINK2
#define AIO10_RPORT PINK
#define AIO10_WPORT PORTK
#define AIO10_DDR DDRK
#define AIO10_PWM NULL
#define DIO64_PIN PINK2
#define DIO64_RPORT PINK
#define DIO64_WPORT PORTK
#define DIO64_DDR DDRK
#define DIO64_PWM NULL
#define AIO11_PIN PINK3
#define AIO11_RPORT PINK
#define AIO11_WPORT PORTK
#define AIO11_DDR DDRK
#define AIO11_PWM NULL
#define DIO65_PIN PINK3
#define DIO65_RPORT PINK
#define DIO65_WPORT PORTK
#define DIO65_DDR DDRK
#define DIO65_PWM NULL
#define AIO12_PIN PINK4
#define AIO12_RPORT PINK
#define AIO12_WPORT PORTK
#define AIO12_DDR DDRK
#define AIO12_PWM NULL
#define DIO66_PIN PINK4
#define DIO66_RPORT PINK
#define DIO66_WPORT PORTK
#define DIO66_DDR DDRK
#define DIO66_PWM NULL
#define AIO13_PIN PINK5
#define AIO13_RPORT PINK
#define AIO13_WPORT PORTK
#define AIO13_DDR DDRK
#define AIO13_PWM NULL
#define DIO67_PIN PINK5
#define DIO67_RPORT PINK
#define DIO67_WPORT PORTK
#define DIO67_DDR DDRK
#define DIO67_PWM NULL
#define AIO14_PIN PINK6
#define AIO14_RPORT PINK
#define AIO14_WPORT PORTK
#define AIO14_DDR DDRK
#define AIO14_PWM NULL
#define DIO68_PIN PINK6
#define DIO68_RPORT PINK
#define DIO68_WPORT PORTK
#define DIO68_DDR DDRK
#define DIO68_PWM NULL
#define AIO15_PIN PINK7
#define AIO15_RPORT PINK
#define AIO15_WPORT PORTK
#define AIO15_DDR DDRK
#define AIO15_PWM NULL
#define DIO69_PIN PINK7
#define DIO69_RPORT PINK
#define DIO69_WPORT PORTK
#define DIO69_DDR DDRK
#define DIO69_PWM NULL

View file

@ -246,6 +246,10 @@
#define E_DIR_PIN 28
#define E_ENABLE_PIN 24
#define E_1_STEP_PIN 36
#define E_1_DIR_PIN 34
#define E_1_ENABLE_PIN 30
#define SDPOWER -1
#define SDSS 53
#define LED_PIN 13

View file

@ -130,6 +130,32 @@ const short temptable_3[NUMTEMPS_3][2] = {
};
#endif
#if (THERMISTORHEATER == 4) || (THERMISTORBED == 4) //10k thermistor
#define NUMTEMPS_4 20
short temptable_4[NUMTEMPS_4][2] = {
{1, 430},
{54, 137},
{107, 107},
{160, 91},
{213, 80},
{266, 71},
{319, 64},
{372, 57},
{425, 51},
{478, 46},
{531, 41},
{584, 35},
{637, 30},
{690, 25},
{743, 20},
{796, 14},
{849, 7},
{902, 0},
{955, -11},
{1008, -35}
};
#endif
#if THERMISTORHEATER == 1
#define NUMTEMPS NUMTEMPS_1
@ -140,6 +166,9 @@ const short temptable_3[NUMTEMPS_3][2] = {
#elif THERMISTORHEATER == 3
#define NUMTEMPS NUMTEMPS_3
#define temptable temptable_3
#elif THERMISTORHEATER == 4
#define NUMTEMPS NUMTEMPS_4
#define temptable temptable_4
#elif defined HEATER_USES_THERMISTOR
#error No heater thermistor table specified
#endif
@ -152,6 +181,9 @@ const short temptable_3[NUMTEMPS_3][2] = {
#elif THERMISTORBED == 3
#define BNUMTEMPS NUMTEMPS_3
#define bedtemptable temptable_3
#elif THERMISTORBED == 4
#define BNUMTEMPS NUMTEMPS_4
#define bedtemptable temptable_4
#elif defined BED_USES_THERMISTOR
#error No bed thermistor table specified
#endif