From bd131184182ce6c9c4b15d78de6e3a3d85856d29 Mon Sep 17 00:00:00 2001 From: Bob Cousins Date: Sun, 8 Dec 2013 22:55:40 +0000 Subject: [PATCH] Add support for inverted heater control pins --- src/ArduinoDUE/Repetier/Commands.cpp | 6 +++--- src/ArduinoDUE/Repetier/HAL.cpp | 28 ++++++++++++++-------------- src/ArduinoDUE/Repetier/HAL.h | 8 ++++++++ src/ArduinoDUE/Repetier/Printer.cpp | 12 ++++++------ src/ArduinoDUE/Repetier/pins.h | 3 +++ src/ArduinoDUE/Repetier/ui.cpp | 6 +++--- 6 files changed, 37 insertions(+), 26 deletions(-) diff --git a/src/ArduinoDUE/Repetier/Commands.cpp b/src/ArduinoDUE/Repetier/Commands.cpp index 5cd721ced..7e1e70e41 100644 --- a/src/ArduinoDUE/Repetier/Commands.cpp +++ b/src/ArduinoDUE/Repetier/Commands.cpp @@ -1328,13 +1328,13 @@ void Commands::emergencyStop() for(uint8_t i=0; i-1 - WRITE(EXT0_HEATER_PIN,0); + HEATER_OFF(EXT0_HEATER_PIN); #endif #if defined(EXT1_HEATER_PIN) && EXT1_HEATER_PIN>-1 && NUM_EXTRUDER>1 - WRITE(EXT1_HEATER_PIN,0); + HEATER_OFF(EXT1_HEATER_PIN); #endif #if defined(EXT2_HEATER_PIN) && EXT2_HEATER_PIN>-1 && NUM_EXTRUDER>2 - WRITE(EXT2_HEATER_PIN,0); + HEATER_OFF(EXT2_HEATER_PIN); #endif #if FAN_PIN>-1 WRITE(FAN_PIN,0); diff --git a/src/ArduinoDUE/Repetier/HAL.cpp b/src/ArduinoDUE/Repetier/HAL.cpp index c06cdf422..a5e0efc7d 100644 --- a/src/ArduinoDUE/Repetier/HAL.cpp +++ b/src/ArduinoDUE/Repetier/HAL.cpp @@ -623,37 +623,37 @@ void PWM_TIMER_VECTOR () if(pwm_count==0) { #if EXT0_HEATER_PIN>-1 - if((pwm_pos_set[0] = pwm_pos[0])>0) WRITE(EXT0_HEATER_PIN,1); + if((pwm_pos_set[0] = pwm_pos[0])>0) HEATER_ON(EXT0_HEATER_PIN); #if EXT0_EXTRUDER_COOLER_PIN>-1 if((pwm_cooler_pos_set[0] = extruder[0].coolerPWM)>0) WRITE(EXT0_EXTRUDER_COOLER_PIN,1); #endif #endif #if defined(EXT1_HEATER_PIN) && EXT1_HEATER_PIN>-1 && NUM_EXTRUDER>1 - if((pwm_pos_set[1] = pwm_pos[1])>0) WRITE(EXT1_HEATER_PIN,1); + if((pwm_pos_set[1] = pwm_pos[1])>0) HEATER_ON(EXT1_HEATER_PIN); #if EXT1_EXTRUDER_COOLER_PIN>-1 if((pwm_cooler_pos_set[1] = extruder[1].coolerPWM)>0) WRITE(EXT1_EXTRUDER_COOLER_PIN,1); #endif #endif #if defined(EXT2_HEATER_PIN) && EXT2_HEATER_PIN>-1 && NUM_EXTRUDER>2 - if((pwm_pos_set[2] = pwm_pos[2])>0) WRITE(EXT2_HEATER_PIN,1); + if((pwm_pos_set[2] = pwm_pos[2])>0) HEATER_ON(EXT2_HEATER_PIN); #if EXT2_EXTRUDER_COOLER_PIN>-1 if((pwm_cooler_pos_set[2] = extruder[2].coolerPWM)>0) WRITE(EXT2_EXTRUDER_COOLER_PIN,1); #endif #endif #if defined(EXT3_HEATER_PIN) && EXT3_HEATER_PIN>-1 && NUM_EXTRUDER>3 - if((pwm_pos_set[3] = pwm_pos[3])>0) WRITE(EXT3_HEATER_PIN,1); + if((pwm_pos_set[3] = pwm_pos[3])>0) HEATER_ON(EXT3_HEATER_PIN); #if EXT3_EXTRUDER_COOLER_PIN>-1 if((pwm_cooler_pos_set[3] = extruder[3].coolerPWM)>0) WRITE(EXT3_EXTRUDER_COOLER_PIN,1); #endif #endif #if defined(EXT4_HEATER_PIN) && EXT4_HEATER_PIN>-1 && NUM_EXTRUDER>4 - if((pwm_pos_set[4] = pwm_pos[4])>0) WRITE(EXT4_HEATER_PIN,1); + if((pwm_pos_set[4] = pwm_pos[4])>0) HEATER_ON(EXT4_HEATER_PIN); #if EXT4_EXTRUDER_COOLER_PIN>-1 if((pwm_cooler_pos_set[4] = pwm_pos[4].coolerPWM)>0) WRITE(EXT4_EXTRUDER_COOLER_PIN,1); #endif #endif #if defined(EXT5_HEATER_PIN) && EXT5_HEATER_PIN>-1 && NUM_EXTRUDER>5 - if((pwm_pos_set[5] = pwm_pos[5])>0) WRITE(EXT5_HEATER_PIN,1); + if((pwm_pos_set[5] = pwm_pos[5])>0) HEATER_ON(EXT5_HEATER_PIN); #if EXT5_EXTRUDER_COOLER_PIN>-1 if((pwm_cooler_pos_set[5] = extruder[5].coolerPWM)>0) WRITE(EXT5_EXTRUDER_COOLER_PIN,1); #endif @@ -665,41 +665,41 @@ void PWM_TIMER_VECTOR () if((pwm_pos_set[NUM_EXTRUDER+2] = pwm_pos[NUM_EXTRUDER+2])>0) WRITE(FAN_PIN,1); #endif #if HEATED_BED_HEATER_PIN>-1 && HAVE_HEATED_BED - if((pwm_pos_set[NUM_EXTRUDER] = pwm_pos[NUM_EXTRUDER])>0) WRITE(HEATED_BED_HEATER_PIN,1); + if((pwm_pos_set[NUM_EXTRUDER] = pwm_pos[NUM_EXTRUDER])>0) HEATER_ON(HEATED_BED_HEATER_PIN); #endif } #if EXT0_HEATER_PIN>-1 - if(pwm_pos_set[0] == pwm_count && pwm_pos_set[0]!=255) WRITE(EXT0_HEATER_PIN,0); + if(pwm_pos_set[0] == pwm_count && pwm_pos_set[0]!=255) HEATER_OFF(EXT0_HEATER_PIN); #if EXT0_EXTRUDER_COOLER_PIN>-1 if(pwm_cooler_pos_set[0] == pwm_count && pwm_cooler_pos_set[0]!=255) WRITE(EXT0_EXTRUDER_COOLER_PIN,0); #endif #endif #if defined(EXT1_HEATER_PIN) && EXT1_HEATER_PIN>-1 && NUM_EXTRUDER>1 - if(pwm_pos_set[1] == pwm_count && pwm_pos_set[1]!=255) WRITE(EXT1_HEATER_PIN,0); + if(pwm_pos_set[1] == pwm_count && pwm_pos_set[1]!=255) HEATER_OFF(EXT1_HEATER_PIN); #if EXT1_EXTRUDER_COOLER_PIN>-1 if(pwm_cooler_pos_set[1] == pwm_count && pwm_cooler_pos_set[1]!=255) WRITE(EXT1_EXTRUDER_COOLER_PIN,0); #endif #endif #if defined(EXT2_HEATER_PIN) && EXT2_HEATER_PIN>-1 && NUM_EXTRUDER>2 - if(pwm_pos_set[2] == pwm_count && pwm_pos_set[2]!=255) WRITE(EXT2_HEATER_PIN,0); + if(pwm_pos_set[2] == pwm_count && pwm_pos_set[2]!=255) HEATER_OFF(EXT2_HEATER_PIN); #if EXT2_EXTRUDER_COOLER_PIN>-1 if(pwm_cooler_pos_set[2] == pwm_count && pwm_cooler_pos_set[2]!=255) WRITE(EXT2_EXTRUDER_COOLER_PIN,0); #endif #endif #if defined(EXT3_HEATER_PIN) && EXT3_HEATER_PIN>-1 && NUM_EXTRUDER>3 - if(pwm_pos_set[3] == pwm_count && pwm_pos_set[3]!=255) WRITE(EXT3_HEATER_PIN,0); + if(pwm_pos_set[3] == pwm_count && pwm_pos_set[3]!=255) HEATER_OFF(EXT3_HEATER_PIN); #if EXT3_EXTRUDER_COOLER_PIN>-1 if(pwm_cooler_pos_set[3] == pwm_count && pwm_cooler_pos_set[3]!=255) WRITE(EXT3_EXTRUDER_COOLER_PIN,0); #endif #endif #if defined(EXT4_HEATER_PIN) && EXT4_HEATER_PIN>-1 && NUM_EXTRUDER>4 - if(pwm_pos_set[4] == pwm_count && pwm_pos_set[4]!=255) WRITE(EXT4_HEATER_PIN,0); + if(pwm_pos_set[4] == pwm_count && pwm_pos_set[4]!=255) HEATER_OFF(EXT4_HEATER_PIN); #if EXT4_EXTRUDER_COOLER_PIN>-1 if(pwm_cooler_pos_set[4] == pwm_count && pwm_cooler_pos_set[4]!=255) WRITE(EXT4_EXTRUDER_COOLER_PIN,0); #endif #endif #if defined(EXT5_HEATER_PIN) && EXT5_HEATER_PIN>-1 && NUM_EXTRUDER>5 - if(pwm_pos_set[5] == pwm_count && pwm_pos_set[5]!=255) WRITE(EXT5_HEATER_PIN,0); + if(pwm_pos_set[5] == pwm_count && pwm_pos_set[5]!=255) HEATER_OFF(EXT5_HEATER_PIN); #if EXT5_EXTRUDER_COOLER_PIN>-1 if(pwm_cooler_pos_set[5] == pwm_count && pwm_cooler_pos_set[5]!=255) WRITE(EXT5_EXTRUDER_COOLER_PIN,0); #endif @@ -711,7 +711,7 @@ void PWM_TIMER_VECTOR () if(pwm_pos_set[NUM_EXTRUDER+2] == pwm_count && pwm_pos_set[NUM_EXTRUDER+2]!=255) WRITE(FAN_PIN,0); #endif #if HEATED_BED_HEATER_PIN>-1 && HAVE_HEATED_BED - if(pwm_pos_set[NUM_EXTRUDER] == pwm_count && pwm_pos_set[NUM_EXTRUDER]!=255) WRITE(HEATED_BED_HEATER_PIN,0); + if(pwm_pos_set[NUM_EXTRUDER] == pwm_count && pwm_pos_set[NUM_EXTRUDER]!=255) HEATER_OFF(HEATED_BED_HEATER_PIN); #endif HAL::allowInterrupts(); counter_periodical++; // Appxoimate a 100ms timer diff --git a/src/ArduinoDUE/Repetier/HAL.h b/src/ArduinoDUE/Repetier/HAL.h index 3d2ed981d..d0080674c 100644 --- a/src/ArduinoDUE/Repetier/HAL.h +++ b/src/ArduinoDUE/Repetier/HAL.h @@ -148,6 +148,14 @@ typedef char prog_char; #define LOW 0 #define HIGH 1 +#ifdef HEATER_PINS_INVERTED +#define HEATER_ON(pin) WRITE(pin,0) +#define HEATER_OFF(pin) WRITE(pin,1) +#else +#define HEATER_ON(pin) WRITE(pin,1) +#define HEATER_OFF(pin) WRITE(pin,0) +#endif + #define BEGIN_INTERRUPT_PROTECTED noInterrupts(); #define END_INTERRUPT_PROTECTED interrupts(); #define ESCAPE_INTERRUPT_PROTECTED interrupts(); diff --git a/src/ArduinoDUE/Repetier/Printer.cpp b/src/ArduinoDUE/Repetier/Printer.cpp index 707547721..772784f2b 100644 --- a/src/ArduinoDUE/Repetier/Printer.cpp +++ b/src/ArduinoDUE/Repetier/Printer.cpp @@ -622,27 +622,27 @@ void Printer::setup() #endif #if EXT0_HEATER_PIN>-1 SET_OUTPUT(EXT0_HEATER_PIN); - WRITE(EXT0_HEATER_PIN,LOW); + HEATER_OFF(EXT0_HEATER_PIN); #endif #if defined(EXT1_HEATER_PIN) && EXT1_HEATER_PIN>-1 && NUM_EXTRUDER>1 SET_OUTPUT(EXT1_HEATER_PIN); - WRITE(EXT1_HEATER_PIN,LOW); + HEATER_OFF(EXT1_HEATER_PIN); #endif #if defined(EXT2_HEATER_PIN) && EXT2_HEATER_PIN>-1 && NUM_EXTRUDER>2 SET_OUTPUT(EXT2_HEATER_PIN); - WRITE(EXT2_HEATER_PIN,LOW); + HEATER_OFF(EXT2_HEATER_PIN); #endif #if defined(EXT3_HEATER_PIN) && EXT3_HEATER_PIN>-1 && NUM_EXTRUDER>3 SET_OUTPUT(EXT3_HEATER_PIN); - WRITE(EXT3_HEATER_PIN,LOW); + HEATER_OFF(EXT3_HEATER_PIN); #endif #if defined(EXT4_HEATER_PIN) && EXT4_HEATER_PIN>-1 && NUM_EXTRUDER>4 SET_OUTPUT(EXT4_HEATER_PIN); - WRITE(EXT4_HEATER_PIN,LOW); + HEATER_OFF(EXT4_HEATER_PIN); #endif #if defined(EXT5_HEATER_PIN) && EXT5_HEATER_PIN>-1 && NUM_EXTRUDER>5 SET_OUTPUT(EXT5_HEATER_PIN); - WRITE(EXT5_HEATER_PIN,LOW); + HEATER_OFF(EXT5_HEATER_PIN); #endif #if EXT0_EXTRUDER_COOLER_PIN>-1 SET_OUTPUT(EXT0_EXTRUDER_COOLER_PIN); diff --git a/src/ArduinoDUE/Repetier/pins.h b/src/ArduinoDUE/Repetier/pins.h index 8f9a5f804..53c38d187 100644 --- a/src/ArduinoDUE/Repetier/pins.h +++ b/src/ArduinoDUE/Repetier/pins.h @@ -194,6 +194,9 @@ STEPPER_CURRENT_CONTROL #define KNOWN_BOARD #define CPU_ARCH ARCH_ARM + +#define HEATER_PINS_INVERTED + /***************************************************************** * Arduino Due Pin Assignments ******************************************************************/ diff --git a/src/ArduinoDUE/Repetier/ui.cpp b/src/ArduinoDUE/Repetier/ui.cpp index eba888a49..25dc23277 100644 --- a/src/ArduinoDUE/Repetier/ui.cpp +++ b/src/ArduinoDUE/Repetier/ui.cpp @@ -2388,13 +2388,13 @@ void UIDisplay::executeAction(int action) Extruder::manageTemperatures(); pwm_pos[0] = pwm_pos[1] = pwm_pos[2] = pwm_pos[3]=0; #if EXT0_HEATER_PIN>-1 - WRITE(EXT0_HEATER_PIN,0); + HEATER_OFF(EXT0_HEATER_PIN); #endif #if defined(EXT1_HEATER_PIN) && EXT1_HEATER_PIN>-1 && NUM_EXTRUDER>1 - WRITE(EXT1_HEATER_PIN,0); + HEATER_OFF(EXT1_HEATER_PIN); #endif #if defined(EXT2_HEATER_PIN) && EXT2_HEATER_PIN>-1 && NUM_EXTRUDER>2 - WRITE(EXT2_HEATER_PIN,0); + HEATER_OFF(EXT2_HEATER_PIN); #endif #if FAN_PIN>-1 WRITE(FAN_PIN,0);