Browse Source

Fix Fan Multiplexer init

pull/1/head
Scott Lahteine 7 years ago
parent
commit
79772219ae
  1. 4
      Marlin/src/Marlin.cpp
  2. 55
      Marlin/src/feature/fanmux.cpp
  3. 33
      Marlin/src/feature/fanmux.h
  4. 5
      Marlin/src/gcode/calibrate/G33.cpp
  5. 4
      Marlin/src/module/motion.cpp
  6. 28
      Marlin/src/module/tool_change.cpp

4
Marlin/src/Marlin.cpp

@ -138,6 +138,10 @@
#include "feature/caselight.h"
#endif
#if HAS_FANMUX
#include "feature/fanmux.h"
#endif
#if (ENABLED(SWITCHING_EXTRUDER) && !DONT_SWITCH) || ENABLED(SWITCHING_NOZZLE) || ENABLED(PARKING_EXTRUDER)
#include "module/tool_change.h"
#endif

55
Marlin/src/feature/fanmux.cpp

@ -0,0 +1,55 @@
/**
* Marlin 3D Printer Firmware
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/**
* feature/pause.cpp - Pause feature support functions
* This may be combined with related G-codes if features are consolidated.
*/
#include "../inc/MarlinConfig.h"
#if HAS_FANMUX
#include "fanmux.h"
void fanmux_switch(const uint8_t e) {
WRITE(FANMUX0_PIN, TEST(e, 0) ? HIGH : LOW);
#if PIN_EXISTS(FANMUX1)
WRITE(FANMUX1_PIN, TEST(e, 1) ? HIGH : LOW);
#if PIN_EXISTS(FANMUX2)
WRITE(FANMUX2, TEST(e, 2) ? HIGH : LOW);
#endif
#endif
}
void fanmux_init(void) {
SET_OUTPUT(FANMUX0_PIN);
#if PIN_EXISTS(FANMUX1)
SET_OUTPUT(FANMUX1_PIN);
#if PIN_EXISTS(FANMUX2)
SET_OUTPUT(FANMUX2_PIN);
#endif
#endif
fanmux_switch(0);
}
#endif // HAS_FANMUX

33
Marlin/src/feature/fanmux.h

@ -0,0 +1,33 @@
/**
* Marlin 3D Printer Firmware
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/**
* feature/fanmux.h - Cooling Fan Multiplexer support functions
*/
#ifndef _FANMUX_H_
#define _FANMUX_H_
extern void fanmux_switch(const uint8_t e);
extern void fanmux_init(void);
#endif // _FANMUX_H_

5
Marlin/src/gcode/calibrate/G33.cpp

@ -30,9 +30,12 @@
#include "../../module/motion.h"
#include "../../module/stepper.h"
#include "../../module/endstops.h"
#include "../../module/tool_change.h"
#include "../../lcd/ultralcd.h"
#if HOTENDS > 1
#include "../../module/tool_change.h"
#endif
#if HAS_LEVELING
#include "../../feature/bedlevel/bedlevel.h"
#endif

4
Marlin/src/module/motion.cpp

@ -39,10 +39,6 @@
#include "../lcd/ultralcd.h"
#endif
// #if ENABLED(DUAL_X_CARRIAGE)
// #include "tool_change.h"
// #endif
#if HAS_BED_PROBE
#include "probe.h"
#endif

28
Marlin/src/module/tool_change.cpp

@ -50,6 +50,10 @@
#include "../feature/bedlevel/bedlevel.h"
#endif
#if HAS_FANMUX
#include "../feature/fanmux.h"
#endif
#if ENABLED(SWITCHING_EXTRUDER)
#if EXTRUDERS > 3
@ -109,30 +113,6 @@
#endif // PARKING_EXTRUDER
#if HAS_FANMUX
void fanmux_switch(const uint8_t e) {
WRITE(FANMUX0_PIN, TEST(e, 0) ? HIGH : LOW);
#if PIN_EXISTS(FANMUX1)
WRITE(FANMUX1_PIN, TEST(e, 1) ? HIGH : LOW);
#if PIN_EXISTS(FANMUX2)
WRITE(FANMUX2, TEST(e, 2) ? HIGH : LOW);
#endif
#endif
}
FORCE_INLINE void fanmux_init(void){
SET_OUTPUT(FANMUX0_PIN);
#if PIN_EXISTS(FANMUX1)
SET_OUTPUT(FANMUX1_PIN);
#if PIN_EXISTS(FANMUX2)
SET_OUTPUT(FANMUX2_PIN);
#endif
#endif
fanmux_switch(0);
}
#endif // HAS_FANMUX
inline void invalid_extruder_error(const uint8_t e) {
SERIAL_ECHO_START();

Loading…
Cancel
Save