From 5eeea2f611ca7104b90a789ae1a16aa719603ad9 Mon Sep 17 00:00:00 2001 From: Ruwan J Egoda Gamage Date: Sat, 12 Dec 2015 20:57:36 -0500 Subject: [PATCH 01/12] Fixing Rigidbot LCD Panel Support --- Marlin/cardreader.cpp | 2 +- .../RigidBot/Configuration.h | 11 ++-- .../RigidBot/Configuration_adv.h | 8 +-- Marlin/pins_RIGIDBOARD.h | 31 +++++------ Marlin/ultralcd.cpp | 51 ++++++++++++++++--- Marlin/ultralcd.h | 3 ++ 6 files changed, 77 insertions(+), 29 deletions(-) diff --git a/Marlin/cardreader.cpp b/Marlin/cardreader.cpp index 61f4a93cc..f6b55f930 100644 --- a/Marlin/cardreader.cpp +++ b/Marlin/cardreader.cpp @@ -196,7 +196,7 @@ void CardReader::initsd() { if (root.isOpen()) root.close(); #if ENABLED(SDEXTRASLOW) - #define SPI_SPEED SPI_QUARTER_SPEED + #define SPI_SPEED SPI_SIXTEENTH_SPEED #elif ENABLED(SDSLOW) #define SPI_SPEED SPI_HALF_SPEED #else diff --git a/Marlin/example_configurations/RigidBot/Configuration.h b/Marlin/example_configurations/RigidBot/Configuration.h index 987fc36d3..e0c956e17 100644 --- a/Marlin/example_configurations/RigidBot/Configuration.h +++ b/Marlin/example_configurations/RigidBot/Configuration.h @@ -219,6 +219,11 @@ Here are some standard links for getting your machine calibrated: //#define DEFAULT_Ki 0.85 //#define DEFAULT_Kd 245 + // E3D w/ rigidbot cartridge + //#define DEFAULT_Kp 16.30 + //#define DEFAULT_Ki 0.95 + //#define DEFAULT_Kd 69.69 + #endif // PIDTEMP //=========================================================================== @@ -611,7 +616,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). // M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. //define this to enable EEPROM support -//#define EEPROM_SETTINGS +#define EEPROM_SETTINGS #if ENABLED(EEPROM_SETTINGS) // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: @@ -651,10 +656,10 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define ULTRA_LCD //general LCD support, also 16x2 //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) -//#define SDSUPPORT // Enable SD Card Support in Hardware Console +#define SDSUPPORT // Enable SD Card Support in Hardware Console // Changed behaviour! If you need SDSUPPORT uncomment it! //#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/RigidBot/Configuration_adv.h b/Marlin/example_configurations/RigidBot/Configuration_adv.h index fe8e2db97..5a70c9d5c 100644 --- a/Marlin/example_configurations/RigidBot/Configuration_adv.h +++ b/Marlin/example_configurations/RigidBot/Configuration_adv.h @@ -279,9 +279,9 @@ //=============================Additional Features=========================== //=========================================================================== -#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly -#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value -#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value +//#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly +//#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value +//#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value //#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ #define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again @@ -414,7 +414,7 @@ const unsigned int dropsegments = 5; //everything with less than this number of //The ASCII buffer for receiving from the serial: #define MAX_CMD_SIZE 96 -#define BUFSIZE 4 +#define BUFSIZE 8 // Bad Serial-connections can miss a received command by sending an 'ok' // Therefore some clients abort after 30 seconds in a timeout. diff --git a/Marlin/pins_RIGIDBOARD.h b/Marlin/pins_RIGIDBOARD.h index 4f8abc126..3fe46a9ff 100644 --- a/Marlin/pins_RIGIDBOARD.h +++ b/Marlin/pins_RIGIDBOARD.h @@ -5,7 +5,10 @@ #include "pins_RAMPS_13.h" #if ENABLED(Z_MIN_PROBE_ENDSTOP) - #define Z_MIN_PROBE_PIN 19 + #undef Z_MAX_PIN + #define Z_MAX_PIN -1 + #undef Z_MIN_PROBE_PIN + #define Z_MIN_PROBE_PIN 19 // Z-MAX pin J14 End Stops #endif #undef HEATER_0_PIN @@ -25,24 +28,22 @@ #undef BEEPER_PIN #define BEEPER_PIN -1 - #undef SD_DETECT_PIN - #define SD_DETECT_PIN 22 - - // Extra button definitions, substitute for EN1 / EN2 - #define BTN_UP 37 // BTN_EN1 - #define BTN_DWN 35 // BTN_EN2 - #define BTN_LFT 33 - #define BTN_RT 32 - - // Marlin can respond to UP/DOWN by default - // #undef BTN_EN1 - // #undef BTN_EN2 - //#define BTN_EN1 -1 - //#define BTN_EN2 -1 + // Direction buttons + #define BTN_UP 37 + #define BTN_DWN 35 + #define BTN_LFT 33 + #define BTN_RT 32 + // 'R' button #undef BTN_ENC #define BTN_ENC 31 + // Disable encoder + #undef BTN_EN1 + #define BTN_EN1 -1 + #undef BTN_EN2 + #define BTN_EN2 -1 + #undef SD_DETECT_PIN #define SD_DETECT_PIN 22 diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index a23995d7c..2f835a3c6 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -218,6 +218,9 @@ static void lcd_status_screen(); #if ENABLED(REPRAPWORLD_KEYPAD) volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values #endif + #if ENABLED(RIGIDBOT_PANEL) + volatile millis_t next_fake_encoder_update_ms; + #endif #if ENABLED(LCD_HAS_SLOW_BUTTONS) volatile uint8_t slow_buttons; // Bits of the pressed buttons. @@ -1524,11 +1527,15 @@ void lcd_init() { lcd_implementation_init(); #if ENABLED(NEWPANEL) + #if BTN_EN1 > 0 + SET_INPUT(BTN_EN1); + WRITE(BTN_EN1, HIGH); + #endif - SET_INPUT(BTN_EN1); - SET_INPUT(BTN_EN2); - WRITE(BTN_EN1, HIGH); - WRITE(BTN_EN2, HIGH); + #if BTN_EN2 > 0 + SET_INPUT(BTN_EN2); + WRITE(BTN_EN2, HIGH); + #endif #if BTN_ENC > 0 SET_INPUT(BTN_ENC); @@ -1543,6 +1550,14 @@ void lcd_init() { WRITE(SHIFT_LD, HIGH); #endif + #ifdef RIGIDBOT_PANEL + pinMode(BTN_UP,INPUT); + pinMode(BTN_DWN,INPUT); + pinMode(BTN_LFT,INPUT); + pinMode(BTN_RT,INPUT); + next_fake_encoder_update_ms = 0; + #endif + #else // Not NEWPANEL #if ENABLED(SR_LCD_2W_NL) // Non latching 2 wire shift register @@ -1843,8 +1858,32 @@ void lcd_reset_alert_level() { lcd_status_message_level = 0; } void lcd_buttons_update() { #if ENABLED(NEWPANEL) uint8_t newbutton = 0; - if (READ(BTN_EN1) == 0) newbutton |= EN_A; - if (READ(BTN_EN2) == 0) newbutton |= EN_B; + #if BTN_EN1 > 0 + if (READ(BTN_EN1) == 0) newbutton |= EN_A; + #endif + #if BTN_EN2 > 0 + if (READ(BTN_EN2) == 0) newbutton |= EN_B; + #endif + #if ENABLED(RIGIDBOT_PANEL) + if (millis() > next_fake_encoder_update_ms && READ(BTN_UP) == 0) { + encoderDiff = -1 * ENCODER_STEPS_PER_MENU_ITEM; + next_fake_encoder_update_ms = millis() + 300; + } + if (millis() > next_fake_encoder_update_ms && READ(BTN_DWN) == 0) { + encoderDiff = ENCODER_STEPS_PER_MENU_ITEM; + next_fake_encoder_update_ms = millis() + 300; + } + if (millis() > next_fake_encoder_update_ms && READ(BTN_LFT) == 0) { + encoderDiff = -1 * ENCODER_PULSES_PER_STEP; + next_fake_encoder_update_ms = millis() + 300; + } + if (millis() > next_fake_encoder_update_ms && READ(BTN_RT) == 0) { + encoderDiff = ENCODER_PULSES_PER_STEP; + next_fake_encoder_update_ms = millis() + 300; + } + #endif + + #if BTN_ENC > 0 if (millis() > next_button_update_ms && READ(BTN_ENC) == 0) newbutton |= EN_C; #endif diff --git a/Marlin/ultralcd.h b/Marlin/ultralcd.h index 23df71cc4..b73b26f16 100644 --- a/Marlin/ultralcd.h +++ b/Marlin/ultralcd.h @@ -41,6 +41,9 @@ #if ENABLED(REPRAPWORLD_KEYPAD) extern volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values #endif + #if ENABLED(RIGIDBOT_PANEL) + extern volatile millis_t next_fake_encoder_update_ms; + #endif #else FORCE_INLINE void lcd_buttons_update() {} #endif From 83c4131ba3dd37c21862bb7a509638c2e8c30d33 Mon Sep 17 00:00:00 2001 From: Ruwan J Egoda Gamage Date: Sun, 13 Dec 2015 12:40:48 -0500 Subject: [PATCH 02/12] Cleaning up, getting rid of the fake encoder count variable. --- Marlin/ultralcd.cpp | 40 +++++++++++++++++++--------------------- Marlin/ultralcd.h | 3 --- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 2f835a3c6..c6a951c7f 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -218,9 +218,6 @@ static void lcd_status_screen(); #if ENABLED(REPRAPWORLD_KEYPAD) volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values #endif - #if ENABLED(RIGIDBOT_PANEL) - volatile millis_t next_fake_encoder_update_ms; - #endif #if ENABLED(LCD_HAS_SLOW_BUTTONS) volatile uint8_t slow_buttons; // Bits of the pressed buttons. @@ -1555,7 +1552,6 @@ void lcd_init() { pinMode(BTN_DWN,INPUT); pinMode(BTN_LFT,INPUT); pinMode(BTN_RT,INPUT); - next_fake_encoder_update_ms = 0; #endif #else // Not NEWPANEL @@ -1685,7 +1681,7 @@ void lcd_update() { int32_t encoderMovementSteps = abs(encoderDiff) / ENCODER_PULSES_PER_STEP; if (lastEncoderMovementMillis != 0) { - // Note that the rate is always calculated between to passes through the + // Note that the rate is always calculated between to passes through the // loop and that the abs of the encoderDiff value is tracked. float encoderStepRate = (float)(encoderMovementSteps) / ((float)(ms - lastEncoderMovementMillis)) * 1000.0; @@ -1865,25 +1861,27 @@ void lcd_reset_alert_level() { lcd_status_message_level = 0; } if (READ(BTN_EN2) == 0) newbutton |= EN_B; #endif #if ENABLED(RIGIDBOT_PANEL) - if (millis() > next_fake_encoder_update_ms && READ(BTN_UP) == 0) { - encoderDiff = -1 * ENCODER_STEPS_PER_MENU_ITEM; - next_fake_encoder_update_ms = millis() + 300; - } - if (millis() > next_fake_encoder_update_ms && READ(BTN_DWN) == 0) { - encoderDiff = ENCODER_STEPS_PER_MENU_ITEM; - next_fake_encoder_update_ms = millis() + 300; - } - if (millis() > next_fake_encoder_update_ms && READ(BTN_LFT) == 0) { - encoderDiff = -1 * ENCODER_PULSES_PER_STEP; - next_fake_encoder_update_ms = millis() + 300; - } - if (millis() > next_fake_encoder_update_ms && READ(BTN_RT) == 0) { - encoderDiff = ENCODER_PULSES_PER_STEP; - next_fake_encoder_update_ms = millis() + 300; + millis_t now = millis(); + if (now > next_button_update_ms) { + if (READ(BTN_UP) == 0) { + encoderDiff = -1 * ENCODER_STEPS_PER_MENU_ITEM; + next_button_update_ms = now + 300; + } + else if (READ(BTN_DWN) == 0) { + encoderDiff = ENCODER_STEPS_PER_MENU_ITEM; + next_button_update_ms = now + 300; + } + else if (READ(BTN_LFT) == 0) { + encoderDiff = -1 * ENCODER_PULSES_PER_STEP; + next_button_update_ms = now + 300; + } + else if (READ(BTN_RT) == 0) { + encoderDiff = ENCODER_PULSES_PER_STEP; + next_button_update_ms = now + 300; + } } #endif - #if BTN_ENC > 0 if (millis() > next_button_update_ms && READ(BTN_ENC) == 0) newbutton |= EN_C; #endif diff --git a/Marlin/ultralcd.h b/Marlin/ultralcd.h index b73b26f16..23df71cc4 100644 --- a/Marlin/ultralcd.h +++ b/Marlin/ultralcd.h @@ -41,9 +41,6 @@ #if ENABLED(REPRAPWORLD_KEYPAD) extern volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values #endif - #if ENABLED(RIGIDBOT_PANEL) - extern volatile millis_t next_fake_encoder_update_ms; - #endif #else FORCE_INLINE void lcd_buttons_update() {} #endif From e6cc232184281d74365f14e596df3e4be59a816a Mon Sep 17 00:00:00 2001 From: Ruwan J Egoda Gamage Date: Sun, 13 Dec 2015 15:47:10 -0500 Subject: [PATCH 03/12] Adding SDULTRASLOW variable. Instead of changing SDEXTRASLOW variable to a slower speed, the new SDULTRASLOW is used for rigidbot panel. --- Marlin/cardreader.cpp | 4 +++- Marlin/example_configurations/Felix/Configuration.h | 1 + Marlin/example_configurations/Felix/Configuration_DUAL.h | 1 + Marlin/example_configurations/Hephestos/Configuration.h | 1 + Marlin/example_configurations/K8200/Configuration.h | 1 + .../RepRapWorld/Megatronics/Configuration.h | 1 + Marlin/example_configurations/RigidBot/Configuration.h | 3 ++- Marlin/example_configurations/SCARA/Configuration.h | 1 + Marlin/example_configurations/TAZ4/Configuration.h | 1 + Marlin/example_configurations/WITBOX/Configuration.h | 1 + Marlin/example_configurations/adafruit/ST7565/Configuration.h | 1 + Marlin/example_configurations/delta/biv2.5/Configuration.h | 1 + Marlin/example_configurations/delta/generic/Configuration.h | 1 + .../example_configurations/delta/kossel_mini/Configuration.h | 1 + .../example_configurations/delta/kossel_pro/Configuration.h | 1 + Marlin/example_configurations/makibox/Configuration.h | 1 + Marlin/example_configurations/tvrrug/Round2/Configuration.h | 1 + 17 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Marlin/cardreader.cpp b/Marlin/cardreader.cpp index f6b55f930..5b69174da 100644 --- a/Marlin/cardreader.cpp +++ b/Marlin/cardreader.cpp @@ -195,8 +195,10 @@ void CardReader::initsd() { cardOK = false; if (root.isOpen()) root.close(); - #if ENABLED(SDEXTRASLOW) + #if ENABLED(SDULTRASLOW) #define SPI_SPEED SPI_SIXTEENTH_SPEED + #elif ENABLED(SDEXTRASLOW) + #define SPI_SPEED SPI_QUARTER_SPEED #elif ENABLED(SDSLOW) #define SPI_SPEED SPI_HALF_SPEED #else diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index f946d35c0..ba6711898 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -651,6 +651,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Changed behaviour! If you need SDSUPPORT uncomment it! //#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/Felix/Configuration_DUAL.h b/Marlin/example_configurations/Felix/Configuration_DUAL.h index bd7b8eed4..1d21b3753 100644 --- a/Marlin/example_configurations/Felix/Configuration_DUAL.h +++ b/Marlin/example_configurations/Felix/Configuration_DUAL.h @@ -620,6 +620,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Changed behaviour! If you need SDSUPPORT uncomment it! //#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index 9fe3715f7..4e7bc9c71 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -660,6 +660,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo #define SDSUPPORT // Enable SD Card Support in Hardware Console //#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 426d8e9b6..220532af3 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -656,6 +656,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Changed behaviour! If you need SDSUPPORT uncomment it! //#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h index e03debc8f..9b628d9ff 100644 --- a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h +++ b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h @@ -668,6 +668,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #define SDSUPPORT // Enable SD Card Support in Hardware Console //#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) #define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/RigidBot/Configuration.h b/Marlin/example_configurations/RigidBot/Configuration.h index e0c956e17..ca1df7fc3 100644 --- a/Marlin/example_configurations/RigidBot/Configuration.h +++ b/Marlin/example_configurations/RigidBot/Configuration.h @@ -659,7 +659,8 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #define SDSUPPORT // Enable SD Card Support in Hardware Console // Changed behaviour! If you need SDSUPPORT uncomment it! //#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index 05c315917..881c60765 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -676,6 +676,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Changed behaviour! If you need SDSUPPORT uncomment it! //#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/TAZ4/Configuration.h b/Marlin/example_configurations/TAZ4/Configuration.h index 484d32da1..aa839b8b9 100644 --- a/Marlin/example_configurations/TAZ4/Configuration.h +++ b/Marlin/example_configurations/TAZ4/Configuration.h @@ -687,6 +687,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Changed behaviour! If you need SDSUPPORT uncomment it! //#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication #define ENCODER_PULSES_PER_STEP 2 // Increase if you have a high resolution encoder #define ENCODER_STEPS_PER_MENU_ITEM 1 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index 2d235e59e..5443f51ee 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -659,6 +659,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo #define SDSUPPORT // Enable SD Card Support in Hardware Console //#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/adafruit/ST7565/Configuration.h b/Marlin/example_configurations/adafruit/ST7565/Configuration.h index 442ee1d7b..4032fbdde 100644 --- a/Marlin/example_configurations/adafruit/ST7565/Configuration.h +++ b/Marlin/example_configurations/adafruit/ST7565/Configuration.h @@ -668,6 +668,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #define SDSUPPORT // Enable SD Card Support in Hardware Console #define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/delta/biv2.5/Configuration.h b/Marlin/example_configurations/delta/biv2.5/Configuration.h index ec78143c6..bbdfd827c 100644 --- a/Marlin/example_configurations/delta/biv2.5/Configuration.h +++ b/Marlin/example_configurations/delta/biv2.5/Configuration.h @@ -790,6 +790,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo // Changed behaviour! If you need SDSUPPORT uncomment it! //#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index 78284a928..bee80589a 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -791,6 +791,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo // Changed behaviour! If you need SDSUPPORT uncomment it! //#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index 75e4d11ba..85f0f6b6e 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -795,6 +795,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Changed behaviour! If you need SDSUPPORT uncomment it! //#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration.h b/Marlin/example_configurations/delta/kossel_pro/Configuration.h index 43fc9ae73..44f03d52f 100644 --- a/Marlin/example_configurations/delta/kossel_pro/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_pro/Configuration.h @@ -785,6 +785,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #define SDSUPPORT // Enable SD Card Support in Hardware Console //#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index 2f8fd73ba..c16da8101 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -670,6 +670,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #define SDSUPPORT // Enable SD Card Support in Hardware Console #define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index 9a6aac98d..a74d2e51b 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -663,6 +663,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo // Changed behaviour! If you need SDSUPPORT uncomment it! //#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking From a64bcd53e96503e94cff754f7f45c39ba3d2aaa5 Mon Sep 17 00:00:00 2001 From: Ruwan J Egoda Gamage Date: Sun, 13 Dec 2015 22:06:03 -0500 Subject: [PATCH 04/12] reusing millis() --- Marlin/ultralcd.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index c6a951c7f..a671a707e 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -1860,8 +1860,10 @@ void lcd_reset_alert_level() { lcd_status_message_level = 0; } #if BTN_EN2 > 0 if (READ(BTN_EN2) == 0) newbutton |= EN_B; #endif - #if ENABLED(RIGIDBOT_PANEL) + #if ENABLED(RIGIDBOT_PANEL) || BTN_ENC > 0 millis_t now = millis(); + #endif + #if ENABLED(RIGIDBOT_PANEL) if (now > next_button_update_ms) { if (READ(BTN_UP) == 0) { encoderDiff = -1 * ENCODER_STEPS_PER_MENU_ITEM; @@ -1881,9 +1883,8 @@ void lcd_reset_alert_level() { lcd_status_message_level = 0; } } } #endif - #if BTN_ENC > 0 - if (millis() > next_button_update_ms && READ(BTN_ENC) == 0) newbutton |= EN_C; + if (now > next_button_update_ms && READ(BTN_ENC) == 0) newbutton |= EN_C; #endif buttons = newbutton; #if ENABLED(LCD_HAS_SLOW_BUTTONS) From 2c9e0415c77d754930cd91e1903ffaff46ddec18 Mon Sep 17 00:00:00 2001 From: Ruwan J Egoda Gamage Date: Sun, 13 Dec 2015 23:23:01 -0500 Subject: [PATCH 05/12] Getting rid of SDEXTRASLOW, SDSLOW variables. --- Marlin/cardreader.cpp | 8 +------- Marlin/example_configurations/Felix/Configuration.h | 4 +--- Marlin/example_configurations/Felix/Configuration_DUAL.h | 4 +--- Marlin/example_configurations/Hephestos/Configuration.h | 4 +--- Marlin/example_configurations/K8200/Configuration.h | 4 +--- .../RepRapWorld/Megatronics/Configuration.h | 4 +--- Marlin/example_configurations/RigidBot/Configuration.h | 4 +--- Marlin/example_configurations/SCARA/Configuration.h | 4 +--- Marlin/example_configurations/TAZ4/Configuration.h | 4 +--- Marlin/example_configurations/WITBOX/Configuration.h | 4 +--- .../adafruit/ST7565/Configuration.h | 4 +--- .../example_configurations/delta/biv2.5/Configuration.h | 4 +--- .../example_configurations/delta/generic/Configuration.h | 4 +--- .../delta/kossel_mini/Configuration.h | 4 +--- .../delta/kossel_pro/Configuration.h | 4 +--- Marlin/example_configurations/makibox/Configuration.h | 4 +--- .../example_configurations/tvrrug/Round2/Configuration.h | 4 +--- 17 files changed, 17 insertions(+), 55 deletions(-) diff --git a/Marlin/cardreader.cpp b/Marlin/cardreader.cpp index 5b69174da..dd4dee3af 100644 --- a/Marlin/cardreader.cpp +++ b/Marlin/cardreader.cpp @@ -195,13 +195,7 @@ void CardReader::initsd() { cardOK = false; if (root.isOpen()) root.close(); - #if ENABLED(SDULTRASLOW) - #define SPI_SPEED SPI_SIXTEENTH_SPEED - #elif ENABLED(SDEXTRASLOW) - #define SPI_SPEED SPI_QUARTER_SPEED - #elif ENABLED(SDSLOW) - #define SPI_SPEED SPI_HALF_SPEED - #else + #ifndef SPI_SPEED #define SPI_SPEED SPI_FULL_SPEED #endif diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index ba6711898..0d1eb8646 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -649,9 +649,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) //#define SDSUPPORT // Enable SD Card Support in Hardware Console // Changed behaviour! If you need SDSUPPORT uncomment it! -//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SPI_SPEED SPI_HALF_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/Felix/Configuration_DUAL.h b/Marlin/example_configurations/Felix/Configuration_DUAL.h index 1d21b3753..d91caae68 100644 --- a/Marlin/example_configurations/Felix/Configuration_DUAL.h +++ b/Marlin/example_configurations/Felix/Configuration_DUAL.h @@ -618,9 +618,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) //#define SDSUPPORT // Enable SD Card Support in Hardware Console // Changed behaviour! If you need SDSUPPORT uncomment it! -//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SPI_SPEED SPI_HALF_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index 4e7bc9c71..10950b27b 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -658,9 +658,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo #define ULTRA_LCD //general LCD support, also 16x2 //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) #define SDSUPPORT // Enable SD Card Support in Hardware Console -//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SPI_SPEED SPI_HALF_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 220532af3..4c79570ba 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -654,9 +654,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) //#define SDSUPPORT // Enable SD Card Support in Hardware Console // Changed behaviour! If you need SDSUPPORT uncomment it! -//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SPI_SPEED SPI_HALF_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h index 9b628d9ff..df92706ec 100644 --- a/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h +++ b/Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h @@ -666,9 +666,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l #define ULTRA_LCD //general LCD support, also 16x2 //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) #define SDSUPPORT // Enable SD Card Support in Hardware Console -//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SPI_SPEED SPI_HALF_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) #define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/RigidBot/Configuration.h b/Marlin/example_configurations/RigidBot/Configuration.h index ca1df7fc3..8ec53268c 100644 --- a/Marlin/example_configurations/RigidBot/Configuration.h +++ b/Marlin/example_configurations/RigidBot/Configuration.h @@ -658,9 +658,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) #define SDSUPPORT // Enable SD Card Support in Hardware Console // Changed behaviour! If you need SDSUPPORT uncomment it! -//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +#define SPI_SPEED SPI_EIGHTH_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index 881c60765..1cd260009 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -674,9 +674,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) //#define SDSUPPORT // Enable SD Card Support in Hardware Console // Changed behaviour! If you need SDSUPPORT uncomment it! -//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SPI_SPEED SPI_HALF_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/TAZ4/Configuration.h b/Marlin/example_configurations/TAZ4/Configuration.h index aa839b8b9..55ce81c14 100644 --- a/Marlin/example_configurations/TAZ4/Configuration.h +++ b/Marlin/example_configurations/TAZ4/Configuration.h @@ -685,9 +685,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) //#define SDSUPPORT // Enable SD Card Support in Hardware Console // Changed behaviour! If you need SDSUPPORT uncomment it! -//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SPI_SPEED SPI_HALF_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication #define ENCODER_PULSES_PER_STEP 2 // Increase if you have a high resolution encoder #define ENCODER_STEPS_PER_MENU_ITEM 1 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index 5443f51ee..03a06cd39 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -657,9 +657,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo #define ULTRA_LCD //general LCD support, also 16x2 //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) #define SDSUPPORT // Enable SD Card Support in Hardware Console -//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SPI_SPEED SPI_HALF_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/adafruit/ST7565/Configuration.h b/Marlin/example_configurations/adafruit/ST7565/Configuration.h index 4032fbdde..d166fa72b 100644 --- a/Marlin/example_configurations/adafruit/ST7565/Configuration.h +++ b/Marlin/example_configurations/adafruit/ST7565/Configuration.h @@ -666,9 +666,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define ULTRA_LCD //general LCD support, also 16x2 //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) #define SDSUPPORT // Enable SD Card Support in Hardware Console -#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +#define SPI_SPEED SPI_HALF_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/delta/biv2.5/Configuration.h b/Marlin/example_configurations/delta/biv2.5/Configuration.h index bbdfd827c..2f900354b 100644 --- a/Marlin/example_configurations/delta/biv2.5/Configuration.h +++ b/Marlin/example_configurations/delta/biv2.5/Configuration.h @@ -788,9 +788,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) //#define SDSUPPORT // Enable SD Card Support in Hardware Console // Changed behaviour! If you need SDSUPPORT uncomment it! -//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SPI_SPEED SPI_HALF_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index bee80589a..861d8d366 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -789,9 +789,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) //#define SDSUPPORT // Enable SD Card Support in Hardware Console // Changed behaviour! If you need SDSUPPORT uncomment it! -//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SPI_SPEED SPI_HALF_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index 85f0f6b6e..94143491b 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -793,9 +793,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) //#define SDSUPPORT // Enable SD Card Support in Hardware Console // Changed behaviour! If you need SDSUPPORT uncomment it! -//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SPI_SPEED SPI_HALF_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration.h b/Marlin/example_configurations/delta/kossel_pro/Configuration.h index 44f03d52f..35c4cb7c7 100644 --- a/Marlin/example_configurations/delta/kossel_pro/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_pro/Configuration.h @@ -783,9 +783,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define ULTRA_LCD //general LCD support, also 16x2 //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) #define SDSUPPORT // Enable SD Card Support in Hardware Console -//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SPI_SPEED SPI_HALF_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index c16da8101..5d99544d8 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -668,9 +668,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l //#define ULTRA_LCD //general LCD support, also 16x2 //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) #define SDSUPPORT // Enable SD Card Support in Hardware Console -#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +#define SPI_SPEED SPI_HALF_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index a74d2e51b..909107361 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -661,9 +661,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo //#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) //#define SDSUPPORT // Enable SD Card Support in Hardware Console // Changed behaviour! If you need SDSUPPORT uncomment it! -//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDEXTRASLOW // Use even slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) -//#define SDULTRASLOW // Use slowest SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SPI_SPEED SPI_HALF_SPEED // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking From 06555febdd30df8d4d95e48bdf46cbd886934813 Mon Sep 17 00:00:00 2001 From: Ruwan J Egoda Gamage Date: Thu, 24 Dec 2015 12:12:25 -0500 Subject: [PATCH 06/12] Using SET_INPUT instead of pinMode --- Marlin/ultralcd.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index a671a707e..b8b9769e7 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -1548,10 +1548,10 @@ void lcd_init() { #endif #ifdef RIGIDBOT_PANEL - pinMode(BTN_UP,INPUT); - pinMode(BTN_DWN,INPUT); - pinMode(BTN_LFT,INPUT); - pinMode(BTN_RT,INPUT); + SET_INPUT(BTN_UP); + SET_INPUT(BTN_DWN); + SET_INPUT(BTN_LFT); + SET_INPUT(BTN_RT); #endif #else // Not NEWPANEL From 2932602643cce9a5d8edd3fb148aa33a65ea9fba Mon Sep 17 00:00:00 2001 From: Naruto-kyun Date: Fri, 15 Jan 2016 16:50:43 +0100 Subject: [PATCH 07/12] Update stepper.cpp Forgot Z2_MIN_PIN --- Marlin/stepper.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp index fa1e9bfdc..395b51786 100644 --- a/Marlin/stepper.cpp +++ b/Marlin/stepper.cpp @@ -942,6 +942,13 @@ void st_init() { WRITE(Z_MIN_PIN,HIGH); #endif #endif + + #if HAS_Z2_MIN + SET_INPUT(Z2_MIN_PIN); + #if ENABLED(ENDSTOPPULLUP_ZMIN) + WRITE(Z2_MIN_PIN,HIGH); + #endif + #endif #if HAS_X_MAX SET_INPUT(X_MAX_PIN); From 7c94c83765e5db484f1543eed2ae884d05add50c Mon Sep 17 00:00:00 2001 From: Richard Wackerbarth Date: Wed, 16 Dec 2015 08:33:51 -0600 Subject: [PATCH 08/12] Repair formula mangled by PR#1319 in Jan 2015 --- Marlin/scripts/createTemperatureLookupMarlin.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Marlin/scripts/createTemperatureLookupMarlin.py b/Marlin/scripts/createTemperatureLookupMarlin.py index 4f54c2833..81747f7dd 100755 --- a/Marlin/scripts/createTemperatureLookupMarlin.py +++ b/Marlin/scripts/createTemperatureLookupMarlin.py @@ -1,7 +1,7 @@ #!/usr/bin/python """Thermistor Value Lookup Table Generator -Generates lookup to temperature values for use in a microcontroller in C format based on: +Generates lookup to temperature values for use in a microcontroller in C format based on: http://en.wikipedia.org/wiki/Steinhart-Hart_equation The main use is for Arduino programs that read data from the circuit board described here: @@ -45,7 +45,7 @@ class Thermistor: c = (y - x) / ((l3 - l2) * (l1 + l2 + l3)) b = x - c * (l1**2 + l2**2 + l1*l2) a = y1 - (b + l1**2 *c)*l1 - + if c < 0: print "//////////////////////////////////////////////////////////////////////////////////////" print "// WARNING: negative coefficient 'c'! Something may be wrong with the measurements! //" @@ -73,13 +73,13 @@ class Thermistor: def temp(self, adc): "Convert ADC reading into a temperature in Celcius" l = log(self.resist(adc)) - Tinv = self.c1 + self.c2*l + self.c3* l**3) # inverse temperature + Tinv = self.c1 + self.c2*l + self.c3* l**3 # inverse temperature return (1/Tinv) - ZERO # temperature def adc(self, temp): "Convert temperature into a ADC reading" x = (self.c1 - (1.0 / (temp+ZERO))) / (2*self.c3) - y = sqrt((self.c2 / (3*self.c3)**3 + x**2) + y = sqrt((self.c2 / (3*self.c3))**3 + x**2) r = exp((y-x)**(1.0/3) - (y+x)**(1.0/3)) return (r / (self.rp + r)) * ARES @@ -93,7 +93,7 @@ def main(argv): r3 = 226.15 # resistance at high temperature (226.15 Ohm) rp = 4700; # pull-up resistor (4.7 kOhm) num_temps = 36; # number of entries for look-up table - + try: opts, args = getopt.getopt(argv, "h", ["help", "rp=", "t1=", "t2=", "t3=", "num-temps="]) except getopt.GetoptError as err: From a366697649c991a1b9f1c95f6318da90eb463ae1 Mon Sep 17 00:00:00 2001 From: esenapaj Date: Wed, 23 Dec 2015 08:29:51 +0900 Subject: [PATCH 09/12] Update Configuration.h --- Marlin/example_configurations/delta/biv2.5/Configuration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/example_configurations/delta/biv2.5/Configuration.h b/Marlin/example_configurations/delta/biv2.5/Configuration.h index ec78143c6..faa271dab 100644 --- a/Marlin/example_configurations/delta/biv2.5/Configuration.h +++ b/Marlin/example_configurations/delta/biv2.5/Configuration.h @@ -512,7 +512,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo // Non-linear bed leveling will be used. // Compensate by interpolating between the nearest four Z probe values for each point. // Useful for deltas where the print surface may appear like a bowl or dome shape. - // Works best with ACCURATE_BED_LEVELING_POINTS 5 or higher. + // Works best with AUTO_BED_LEVELING_GRID_POINTS 5 or higher. #define AUTO_BED_LEVELING_GRID_POINTS 9 #else // !AUTO_BED_LEVELING_GRID From df0d599c79074762f8a557009daad7a6c4da7782 Mon Sep 17 00:00:00 2001 From: esenapaj Date: Wed, 23 Dec 2015 08:31:28 +0900 Subject: [PATCH 10/12] Update Configuration.h --- Marlin/example_configurations/delta/generic/Configuration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index 78284a928..f48816333 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -513,7 +513,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo // Non-linear bed leveling will be used. // Compensate by interpolating between the nearest four Z probe values for each point. // Useful for deltas where the print surface may appear like a bowl or dome shape. - // Works best with ACCURATE_BED_LEVELING_POINTS 5 or higher. + // Works best with AUTO_BED_LEVELING_GRID_POINTS 5 or higher. #define AUTO_BED_LEVELING_GRID_POINTS 9 #else // !AUTO_BED_LEVELING_GRID From b8f0c8a4c76a587f4a967824972079407a853eff Mon Sep 17 00:00:00 2001 From: esenapaj Date: Wed, 23 Dec 2015 08:32:07 +0900 Subject: [PATCH 11/12] Update Configuration.h --- Marlin/example_configurations/delta/kossel_mini/Configuration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index 75e4d11ba..3a94ce2f5 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -513,7 +513,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Non-linear bed leveling will be used. // Compensate by interpolating between the nearest four Z probe values for each point. // Useful for deltas where the print surface may appear like a bowl or dome shape. - // Works best with ACCURATE_BED_LEVELING_POINTS 5 or higher. + // Works best with AUTO_BED_LEVELING_GRID_POINTS 5 or higher. #define AUTO_BED_LEVELING_GRID_POINTS 9 #else // !AUTO_BED_LEVELING_GRID From 59d345a3dd48f9dc02032699d539290fb22bf517 Mon Sep 17 00:00:00 2001 From: esenapaj Date: Wed, 23 Dec 2015 08:33:01 +0900 Subject: [PATCH 12/12] Update Configuration.h --- Marlin/example_configurations/delta/kossel_pro/Configuration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/example_configurations/delta/kossel_pro/Configuration.h b/Marlin/example_configurations/delta/kossel_pro/Configuration.h index 43fc9ae73..592471dd2 100644 --- a/Marlin/example_configurations/delta/kossel_pro/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_pro/Configuration.h @@ -500,7 +500,7 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l // Non-linear bed leveling will be used. // Compensate by interpolating between the nearest four Z probe values for each point. // Useful for deltas where the print surface may appear like a bowl or dome shape. - // Works best with ACCURATE_BED_LEVELING_POINTS 5 or higher. + // Works best with AUTO_BED_LEVELING_GRID_POINTS 5 or higher. #define AUTO_BED_LEVELING_GRID_POINTS 7 #else // !AUTO_BED_LEVELING_GRID