commit
						8ebcc9dc3a
					
				| @ -52,6 +52,7 @@ | ||||
| // 65 = Azteeg X1
 | ||||
| // 66 = Melzi with ATmega1284 (MaKr3d version)
 | ||||
| // 67 = Azteeg X3
 | ||||
| // 68 = Azteeg X3 Pro
 | ||||
| // 7  = Ultimaker
 | ||||
| // 71 = Ultimaker (Older electronics. Pre 1.5.4. This is rare)
 | ||||
| // 77 = 3Drag Controller
 | ||||
|  | ||||
| @ -268,6 +268,12 @@ | ||||
| // Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards)
 | ||||
| #define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
 | ||||
| 
 | ||||
| // uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
 | ||||
| //#define DIGIPOT_I2C
 | ||||
| // Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8
 | ||||
| #define DIGIPOT_I2C_NUM_CHANNELS 8 | ||||
| // actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
 | ||||
| #define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} | ||||
| 
 | ||||
| //===========================================================================
 | ||||
| //=============================Additional Features===========================
 | ||||
|  | ||||
| @ -55,7 +55,10 @@ UPLOAD_PORT        ?= /dev/arduino | ||||
| BUILD_DIR          ?= applet | ||||
| 
 | ||||
| # This defines whether Liquid_TWI2 support will be built
 | ||||
| LIQUID_TWI2 ?= 0 | ||||
| LIQUID_TWI2        ?= 0 | ||||
| 
 | ||||
| # this defines if Wire is needed
 | ||||
| WIRE               ?= 0 | ||||
| 
 | ||||
| ############################################################################
 | ||||
| # Below here nothing should be changed...
 | ||||
| @ -174,6 +177,14 @@ else ifeq  ($(HARDWARE_MOTHERBOARD),301) | ||||
| HARDWARE_VARIANT ?= arduino | ||||
| MCU              ?= atmega2560 | ||||
| 
 | ||||
| # Azteeg
 | ||||
| else ifeq  ($(HARDWARE_MOTHERBOARD),67) | ||||
| HARDWARE_VARIANT ?= arduino | ||||
| MCU              ?= atmega2560 | ||||
| else ifeq  ($(HARDWARE_MOTHERBOARD),68) | ||||
| HARDWARE_VARIANT ?= arduino | ||||
| MCU              ?= atmega2560 | ||||
| 
 | ||||
| endif | ||||
| 
 | ||||
| # Be sure to regenerate speed_lookuptable.h with create_speed_lookuptable.py
 | ||||
| @ -213,6 +224,10 @@ VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire | ||||
| VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire/utility | ||||
| VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidTWI2 | ||||
| endif | ||||
| ifeq ($(WIRE), 1) | ||||
| VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire | ||||
| VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire/utility | ||||
| endif | ||||
| else | ||||
| VPATH += $(HARDWARE_DIR)/libraries/LiquidCrystal | ||||
| VPATH += $(HARDWARE_DIR)/libraries/SPI | ||||
| @ -221,6 +236,10 @@ VPATH += $(HARDWARE_DIR)/libraries/Wire | ||||
| VPATH += $(HARDWARE_DIR)/libraries/Wire/utility | ||||
| VPATH += $(HARDWARE_DIR)/libraries/LiquidTWI2 | ||||
| endif | ||||
| ifeq ($(WIRE, 1) | ||||
| VPATH += $(HARDWARE_DIR)/libraries/Wire | ||||
| VPATH += $(HARDWARE_DIR)/libraries/Wire/utility | ||||
| endif | ||||
| endif | ||||
| ifeq ($(HARDWARE_VARIANT), arduino) | ||||
| HARDWARE_SUB_VARIANT ?= mega | ||||
| @ -241,7 +260,7 @@ CXXSRC = WMath.cpp WString.cpp Print.cpp Marlin_main.cpp	\ | ||||
| 	MarlinSerial.cpp Sd2Card.cpp SdBaseFile.cpp SdFatUtil.cpp	\
 | ||||
| 	SdFile.cpp SdVolume.cpp motion_control.cpp planner.cpp		\
 | ||||
| 	stepper.cpp temperature.cpp cardreader.cpp ConfigurationStore.cpp \
 | ||||
| 	watchdog.cpp SPI.cpp Servo.cpp Tone.cpp ultralcd.cpp | ||||
| 	watchdog.cpp SPI.cpp Servo.cpp Tone.cpp ultralcd.cpp digipot_mcp4451.cpp | ||||
| ifeq ($(LIQUID_TWI2), 0) | ||||
| CXXSRC += LiquidCrystal.cpp | ||||
| else | ||||
| @ -249,6 +268,11 @@ SRC += twi.c | ||||
| CXXSRC += Wire.cpp LiquidTWI2.cpp | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(WIRE), 1) | ||||
| SRC += twi.c | ||||
| CXXSRC += Wire.cpp | ||||
| endif | ||||
| 
 | ||||
| #Check for Arduino 1.0.0 or higher and use the correct sourcefiles for that version
 | ||||
| ifeq ($(shell [ $(ARDUINO_VERSION) -ge 100 ] && echo true), true) | ||||
| CXXSRC += main.cpp | ||||
|  | ||||
| @ -235,4 +235,9 @@ extern unsigned long stoptime; | ||||
| // Handling multiple extruders pins
 | ||||
| extern uint8_t active_extruder; | ||||
| 
 | ||||
| #ifdef DIGIPOT_I2C | ||||
| extern void digipot_i2c_set_current( int channel, float current ); | ||||
| extern void digipot_i2c_init(); | ||||
| #endif | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -50,3 +50,7 @@ | ||||
| #if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1 | ||||
| #include <SPI.h> | ||||
| #endif | ||||
| 
 | ||||
| #if defined(DIGIPOT_I2C) | ||||
|   #include <Wire.h> | ||||
| #endif | ||||
|  | ||||
| @ -50,3 +50,7 @@ | ||||
| #if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1 | ||||
| #include <SPI.h> | ||||
| #endif | ||||
| 
 | ||||
| #if defined(DIGIPOT_I2C) | ||||
|   #include <Wire.h> | ||||
| #endif | ||||
|  | ||||
| @ -492,6 +492,10 @@ void setup() | ||||
|   #if defined(CONTROLLERFAN_PIN) && CONTROLLERFAN_PIN > -1 | ||||
|     SET_OUTPUT(CONTROLLERFAN_PIN); //Set pin used for driver cooling fan
 | ||||
|   #endif | ||||
| 
 | ||||
|   #ifdef DIGIPOT_I2C | ||||
|     digipot_i2c_init(); | ||||
|   #endif | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @ -2841,6 +2845,12 @@ void process_commands() | ||||
|       #ifdef MOTOR_CURRENT_PWM_E_PIN | ||||
|         if(code_seen('E')) digipot_current(2, code_value()); | ||||
|       #endif | ||||
|       #ifdef DIGIPOT_I2C | ||||
|         // this one uses actual amps in floating point
 | ||||
|         for(int i=0;i<NUM_AXIS;i++) if(code_seen(axis_codes[i])) digipot_i2c_set_current(i, code_value()); | ||||
|         // for each additional extruder (named B,C,D,E..., channels 4,5,6,7...)
 | ||||
|         for(int i=NUM_AXIS;i<DIGIPOT_I2C_NUM_CHANNELS;i++) if(code_seen('B'+i-NUM_AXIS)) digipot_i2c_set_current(i, code_value()); | ||||
|       #endif | ||||
|     } | ||||
|     break; | ||||
|     case 908: // M908 Control digital trimpot directly.
 | ||||
|  | ||||
							
								
								
									
										54
									
								
								Marlin/digipot_mcp4451.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								Marlin/digipot_mcp4451.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,54 @@ | ||||
| #include "Configuration.h" | ||||
| 
 | ||||
| #ifdef DIGIPOT_I2C | ||||
| #include "Stream.h" | ||||
| #include "utility/twi.h" | ||||
| #include "Wire.h" | ||||
| 
 | ||||
| // Settings for the I2C based DIGIPOT (MCP4451) on Azteeg X3 Pro
 | ||||
| #define DIGIPOT_I2C_FACTOR 106.7 | ||||
| #define DIGIPOT_I2C_MAX_CURRENT 2.5 | ||||
| 
 | ||||
| static byte current_to_wiper( float current ){ | ||||
|     return byte(ceil(float((DIGIPOT_I2C_FACTOR*current)))); | ||||
| } | ||||
| 
 | ||||
| static void i2c_send(byte addr, byte a, byte b) | ||||
| { | ||||
| 	Wire.beginTransmission(addr); | ||||
|     Wire.write(a); | ||||
|     Wire.write(b); | ||||
|     Wire.endTransmission(); | ||||
| } | ||||
| 
 | ||||
| // This is for the MCP4451 I2C based digipot
 | ||||
| void digipot_i2c_set_current( int channel, float current ) | ||||
| { | ||||
|     current = min( (float) max( current, 0.0f ), DIGIPOT_I2C_MAX_CURRENT); | ||||
|     // these addresses are specific to Azteeg X3 Pro, can be set to others,
 | ||||
|     // In this case first digipot is at address A0=0, A1= 0, second one is at A0=0, A1= 1
 | ||||
|     byte addr= 0x2C; // channel 0-3
 | ||||
|     if(channel >= 4) { | ||||
|     	addr= 0x2E; // channel 4-7
 | ||||
|     	channel-= 4; | ||||
|     } | ||||
| 
 | ||||
|     // Initial setup
 | ||||
|     i2c_send( addr, 0x40, 0xff ); | ||||
|     i2c_send( addr, 0xA0, 0xff ); | ||||
| 
 | ||||
|     // Set actual wiper value
 | ||||
|     byte addresses[4] = { 0x00, 0x10, 0x60, 0x70 }; | ||||
|     i2c_send( addr, addresses[channel], current_to_wiper(current) ); | ||||
| } | ||||
| 
 | ||||
| void digipot_i2c_init() | ||||
| { | ||||
|     const float digipot_motor_current[] = DIGIPOT_I2C_MOTOR_CURRENTS; | ||||
|     Wire.begin(); | ||||
|     // setup initial currents as defined in Configuration_adv.h
 | ||||
|     for(int i=0;i<=sizeof(digipot_motor_current)/sizeof(float);i++) { | ||||
|         digipot_i2c_set_current(i, digipot_motor_current[i]); | ||||
|     } | ||||
| } | ||||
| #endif | ||||
| @ -375,7 +375,7 @@ | ||||
| * Arduino Mega pin assignment | ||||
| * | ||||
| ****************************************************************************************/ | ||||
| #if MOTHERBOARD == 3 || MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 35 || MOTHERBOARD == 77 || MOTHERBOARD == 67 | ||||
| #if MOTHERBOARD == 3 || MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 35 || MOTHERBOARD == 77 || MOTHERBOARD == 67 || MOTHERBOARD == 68 | ||||
| #define KNOWN_BOARD 1 | ||||
| 
 | ||||
| //////////////////FIX THIS//////////////
 | ||||
| @ -391,7 +391,7 @@ | ||||
| // #define RAMPS_V_1_0
 | ||||
| 
 | ||||
| 
 | ||||
| #if MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 35 || MOTHERBOARD == 77 || MOTHERBOARD == 67 | ||||
| #if MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 35 || MOTHERBOARD == 77 || MOTHERBOARD == 67 || MOTHERBOARD == 68 | ||||
| 
 | ||||
|   #define LARGE_FLASH true | ||||
| 
 | ||||
| @ -472,12 +472,26 @@ | ||||
|     #define E1_DIR_PIN         34 | ||||
|     #define E1_ENABLE_PIN      30 | ||||
| 
 | ||||
|     #if MOTHERBOARD == 68 | ||||
|       #define E2_STEP_PIN        23 | ||||
|       #define E2_DIR_PIN         25 | ||||
|       #define E2_ENABLE_PIN      40 | ||||
| 
 | ||||
|       #define E3_STEP_PIN        27 | ||||
|       #define E3_DIR_PIN         29 | ||||
|       #define E3_ENABLE_PIN      41 | ||||
| 
 | ||||
|       #define E4_STEP_PIN        43 | ||||
|       #define E4_DIR_PIN         37 | ||||
|       #define E4_ENABLE_PIN      42 | ||||
|     #endif | ||||
| 
 | ||||
|     #define SDPOWER            -1 | ||||
|     #define SDSS               53 | ||||
|     #define LED_PIN            13 | ||||
|   #endif | ||||
| 
 | ||||
|   #if MOTHERBOARD == 33 || MOTHERBOARD == 35 || MOTHERBOARD == 67 | ||||
|   #if MOTHERBOARD == 33 || MOTHERBOARD == 35 || MOTHERBOARD == 67 || MOTHERBOARD == 68 | ||||
|     #define FAN_PIN            9 // (Sprinter config)
 | ||||
|   #else | ||||
|     #define FAN_PIN            4 // IO pin. Buffer needed
 | ||||
| @ -511,17 +525,33 @@ | ||||
|     #define HEATER_1_PIN       9    // EXTRUDER 2 (FAN On Sprinter)
 | ||||
|   #endif | ||||
| 
 | ||||
|   #define HEATER_2_PIN       -1  | ||||
| 
 | ||||
|   #if MOTHERBOARD == 77 | ||||
|     #define HEATER_0_PIN       10 | ||||
|     #define HEATER_1_PIN       12 | ||||
|     #define HEATER_2_PIN       6 | ||||
|   #elif MOTHERBOARD == 68 | ||||
|     #define HEATER_2_PIN       16 | ||||
|     #define HEATER_3_PIN       17 | ||||
|     #define HEATER_4_PIN       4 | ||||
|     #define HEATER_5_PIN       5 | ||||
|     #define HEATER_6_PIN       6 | ||||
|     #define HEATER_7_PIN       11 | ||||
|   #else | ||||
|     #define HEATER_2_PIN       -1 | ||||
|   #endif | ||||
| 
 | ||||
|   #define TEMP_0_PIN         13   // ANALOG NUMBERING
 | ||||
|   #define TEMP_1_PIN         15   // ANALOG NUMBERING
 | ||||
|   #define TEMP_2_PIN         -1   // ANALOG NUMBERING
 | ||||
|   #if MOTHERBOARD == 68 | ||||
|     #define TEMP_2_PIN         12   // ANALOG NUMBERING
 | ||||
|     #define TEMP_3_PIN         11   // ANALOG NUMBERING
 | ||||
|     #define TEMP_4_PIN         10   // ANALOG NUMBERING
 | ||||
|     #define TC1                4    // ANALOG NUMBERING Thermo couple on Azteeg X3Pro
 | ||||
|     #define TC2                5    // ANALOG NUMBERING Thermo couple on Azteeg X3Pro
 | ||||
|   #else | ||||
|     #define TEMP_2_PIN         -1   // ANALOG NUMBERING
 | ||||
|   #endif | ||||
| 
 | ||||
|   #if MOTHERBOARD == 35 | ||||
|     #define HEATER_BED_PIN     -1    // NO BED
 | ||||
| @ -532,10 +562,9 @@ | ||||
|       #define HEATER_BED_PIN     8    // BED
 | ||||
|     #endif | ||||
|   #endif | ||||
| 
 | ||||
|   #define TEMP_BED_PIN       14   // ANALOG NUMBERING
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|   #ifdef NUM_SERVOS | ||||
|     #define SERVO0_PIN         11 | ||||
| 
 | ||||
| @ -552,6 +581,10 @@ | ||||
|     #endif | ||||
|   #endif | ||||
| 
 | ||||
|   #if MOTHERBOARD == 68 | ||||
|     #define BEEPER 33 | ||||
|   #endif | ||||
| 
 | ||||
|   #ifdef TEMP_STAT_LEDS | ||||
|     #if MOTHERBOARD == 67 | ||||
|       #define STAT_LED_RED       6 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user