//Arduino Mega328p.
#ifdef CPU_MAP_ATMEGA328P // (Arduino Uno)
//串口中断向量
#define SERIAL_RX USART_RX_vect
#define SERIAL_UDRE USART_UDRE_vect
// 步进电机脉冲端口,所有步进端口必须在一个通道里.
#define STEP_DDR DDRD
#define STEP_PORT PORTD
#define X_STEP_BIT 2 // Uno Digital Pin 2
#define Y_STEP_BIT 3 // Uno Digital Pin 3
#define Z_STEP_BIT 4 // Uno Digital Pin 4
#define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // 掩码
//步进电机方向端口. 所有步进端口必须在一个通道里.
#define DIRECTION_DDR DDRD
#define DIRECTION_PORT PORTD
#define X_DIRECTION_BIT 5 // Uno Digital Pin 5
#define Y_DIRECTION_BIT 6 // Uno Digital Pin 6
#define Z_DIRECTION_BIT 7 // Uno Digital Pin 7
#define DIRECTION_MASK ((1<<X_DIRECTION_BIT)|(1<<Y_DIRECTION_BIT)|(1<<Z_DIRECTION_BIT)) // 掩码
// 步进电机使能端口(一个端口控制所有电机)
#define STEPPERS_DISABLE_DDR DDRB
#define STEPPERS_DISABLE_PORT PORTB
#define STEPPERS_DISABLE_BIT 0 // Uno Digital Pin 8
#define STEPPERS_DISABLE_MASK (1<<STEPPERS_DISABLE_BIT)
/*硬限位端口和中断向量,所有端口必须在一个通道,但和其他输入端口可不再一个通//道内.*/
#define LIMIT_DDR DDRB
#define LIMIT_PIN PINB
#define LIMIT_PORT PORTB
#define X_LIMIT_BIT 1 // Uno Digital Pin 9
#define Y_LIMIT_BIT 2 // Uno Digital Pin 10
#ifdef VARIABLE_SPINDLE // 因为变主轴转速用到PWM,所以需要Z 轴限位放到Pin 12.
#define Z_LIMIT_BIT 4 // Uno Digital Pin 12
#else
#define Z_LIMIT_BIT 3 // Uno Digital Pin 11
#endif
#if !defined(ENABLE_DUAL_AXIS)//如果没到双轴定义(龙门结构)
#define LIMIT_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)) //掩码
#endif
#define LIMIT_INT PCIE0 // 中断使能(见AVR章节)
#define LIMIT_INT_vect PCINT0_vect // 中断向量
#define LIMIT_PCMSK PCMSK0 //端口中断定义(指定那些端口变化中断)
// 定义用户系统操作端口(循环启动,复位,进给保持,所有端口必须在一个通道,但和其他输入端口可不再一个通//道内.*/
#define CONTROL_DDR DDRC
#define CONTROL_PIN PINC
#define CONTROL_PORT PORTC
#define CONTROL_RESET_BIT 0 // Uno Analog Pin 0(复位)
#define CONTROL_FEED_HOLD_BIT 1 // Uno Analog Pin 1(进给保持)
#define CONTROL_CYCLE_START_BIT 2 // Uno Analog Pin 2(循环启动)
#define CONTROL_SAFETY_DOOR_BIT 1 // Uno Analog Pin 1 (门和进给保持分享一个端
口,通过config.h文件定义).
#define CONTROL_INT PCIE1 // 中断使能
#define CONTROL_INT_vect PCINT1_vect //中断向量
#define CONTROL_PCMSK PCMSK1 // 端口中断定义
#define CONTROL_MASK ((1<<CONTROL_RESET_BIT)|(1<<CONTROL_FEED_HOLD_BIT)|(1<<CONTROL_CYCLE_START_BIT)|(1<<CONTROL_SAFETY_DOOR_BIT)) //掩码
#define CONTROL_INVERT_MASK CONTROL_MASK // 反置掩码(低电平有效)
// 探头端口定义.
#define PROBE_DDR DDRC
#define PROBE_PIN PINC
#define PROBE_PORT PORTC
#define PROBE_BIT 5 // Uno Analog Pin 5
#define PROBE_MASK (1<<PROBE_BIT)
#if !defined(ENABLE_DUAL_AXIS) //如果没有定义了双轴使能,流动冷却和雾化端口定义
#define COOLANT_FLOOD_DDR DDRC
#define COOLANT_FLOOD_PORT PORTC
#define COOLANT_FLOOD_BIT 3 // Uno Analog Pin 3(冷却)
#define COOLANT_MIST_DDR DDRC
#define COOLANT_MIST_PORT PORTC
#define COOLANT_MIST_BIT 4 // Uno Analog Pin 4(雾化)
// 主轴使能和转速端口定义.
#define SPINDLE_ENABLE_DDR DDRB
#define SPINDLE_ENABLE_PORT PORTB
#ifdef VARIABLE_SPINDLE
#ifdef USE_SPINDLE_DIR_AS_ENABLE_PIN
// 如果启用,主轴方向引脚现在用作主轴使能,而PWM仍在D11上。
#define SPINDLE_ENABLE_BIT 5 // Uno Digital Pin 13
#else
#define SPINDLE_ENABLE_BIT 3 // Uno Digital Pin 11
#endif
#else
#define SPINDLE_ENABLE_BIT 4 // Uno Digital Pin 12
#endif
#ifndef USE_SPINDLE_DIR_AS_ENABLE_PIN //如果没有定义主轴转动方向
#define SPINDLE_DIRECTION_DDR DDRB
#define SPINDLE_DIRECTION_PORT PORTB
#define SPINDLE_DIRECTION_BIT 5 // Uno Digital Pin 13
#endif
// 变主轴转速定义,
#define SPINDLE_PWM_MAX_VALUE 255 // 328p f最大 PWM 最大值为 255.
#ifndef SPINDLE_PWM_MIN_VALUE
#define SPINDLE_PWM_MIN_VALUE 1 // 最小值必须大于0.
#endif
#define SPINDLE_PWM_OFF_VALUE 0 //关闭
#define SPINDLE_PWM_RANGE (SPINDLE_PWM_MAX_VALUE-SPINDLE_PWM_MIN_VALUE)
#define SPINDLE_TCCRA_REGISTER TCCR2A // 计数寄存器
#define SPINDLE_TCCRB_REGISTER TCCR2B
#define SPINDLE_OCR_REGISTER OCR2A // 输出比较寄存器
#define SPINDLE_COMB_BIT COM2A1 //7
// 预置, 8-bit 快速 PWM模式.
#define SPINDLE_TCCRA_INIT_MASK ((1<<WGM20) | (1<<WGM21)) // 快速 PWM.
#define SPINDLE_TCCRB_INIT_MASK (1<<CS22) // 预置 0.98kHz
// 主轴PWM端口定义.
#define SPINDLE_PWM_DDR DDRB
#define SPINDLE_PWM_PORT PORTB
#define SPINDLE_PWM_BIT 3 // Uno Digital Pin 11
#else
// 双轴功能定义(需要一个独立的步进脉冲引脚来操作)
#ifdef DUAL_AXIS_CONFIG_PROTONEER_V3_51 //采用PROTONEER_V3_51 CNC Shield
//定义脉冲端口
#define STEP_DDR_DUAL DDRC
#define STEP_PORT_DUAL PORTC
#define DUAL_STEP_BIT 4 // Uno Analog Pin 4
#define STEP_MASK_DUAL ((1<<DUAL_STEP_BIT))
//定义方向端口
#define DIRECTION_DDR_DUAL DDRC
#define DIRECTION_PORT_DUAL PORTC
#define DUAL_DIRECTION_BIT 3 // Uno Analog Pin 3
#define DIRECTION_MASK_DUAL ((1<<DUAL_DIRECTION_BIT))
// 缺省定义和Z轴限位共享一个(根据需求自己改变)
#define DUAL_LIMIT_BIT Z_LIMIT_BIT
#define LIMIT_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)|(1<<DUAL_LIMIT_BIT))
// 定义冷却,雾化不支持双轴。由于端口改变,后面设置重新定义
#define COOLANT_FLOOD_DDR DDRB
#define COOLANT_FLOOD_PORT PORTB
#define COOLANT_FLOOD_BIT 5 // Uno Digital Pin 13
// 主轴定义
#define SPINDLE_ENABLE_DDR DDRB
#define SPINDLE_ENABLE_PORT PORTB
#ifdef VARIABLE_SPINDLE
#define SPINDLE_ENABLE_BIT 3 // Uno Digital Pin 11
#else
#define SPINDLE_ENABLE_BIT 4 // Uno Digital Pin 12
#endif
#define SPINDLE_PWM_MAX_VALUE 255
#ifndef SPINDLE_PWM_MIN_VALUE
#define SPINDLE_PWM_MIN_VALUE 1
#endif
#define SPINDLE_PWM_OFF_VALUE 0
#define SPINDLE_PWM_RANGE (SPINDLE_PWM_MAX_VALUE-SPINDLE_PWM_MIN_VALUE)
#define SPINDLE_TCCRA_REGISTER TCCR2A
#define SPINDLE_TCCRB_REGISTER TCCR2B
#define SPINDLE_OCR_REGISTER OCR2A
#define SPINDLE_COMB_BIT COM2A1
#define SPINDLE_TCCRA_INIT_MASK ((1<<WGM20) | (1<<WGM21)) // Configures fast PWM mode.
#define SPINDLE_TCCRB_INIT_MASK (1<<CS22)
#define SPINDLE_PWM_DDR DDRB
#define SPINDLE_PWM_PORT PORTB
#define SPINDLE_PWM_BIT 3 // Uno Digital Pin 11
#endif
// 如果采用的是CNC Shield Clone (Originally Protoneer v3.0).
#ifdef DUAL_AXIS_CONFIG_CNC_SHIELD_CLONE
// 重新定义双轴
#define STEP_DDR_DUAL DDRB
#define STEP_PORT_DUAL PORTB
#define DUAL_STEP_BIT 4 // Uno Digital Pin 12
#define STEP_MASK_DUAL ((1<<DUAL_STEP_BIT))
#define DIRECTION_DDR_DUAL DDRB
#define DIRECTION_PORT_DUAL PORTB
#define DUAL_DIRECTION_BIT 5 // Uno Digital Pin 13
#define DIRECTION_MASK_DUAL ((1<<DUAL_DIRECTION_BIT))
#define DUAL_LIMIT_BIT Z_LIMIT_BIT
#define LIMIT_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)|(1<<DUAL_LIMIT_BIT))
#define COOLANT_FLOOD_DDR DDRC
#define COOLANT_FLOOD_PORT PORTC
#define COOLANT_FLOOD_BIT 4 // Uno Analog Pin 4
#define SPINDLE_ENABLE_DDR DDRC
#define SPINDLE_ENABLE_PORT PORTC
#define SPINDLE_ENABLE_BIT 3 // Uno Analog Pin 3
#endif
#endif
#endif
#ifdef CPU_MAP_CUSTOM_PROC
/*对于自定义针脚地图或不同的处理器,复制并编辑一个可用的cpu map文件,并根据你的需要修改。确保定义的名称在config.h文件中也被改变。*/.
#endif
#endif
版权声明:本文为CSDN博主「syheu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/syheu/article/details/122642156
//Arduino Mega328p.
#ifdef CPU_MAP_ATMEGA328P // (Arduino Uno)
//串口中断向量
#define SERIAL_RX USART_RX_vect
#define SERIAL_UDRE USART_UDRE_vect
// 步进电机脉冲端口,所有步进端口必须在一个通道里.
#define STEP_DDR DDRD
#define STEP_PORT PORTD
#define X_STEP_BIT 2 // Uno Digital Pin 2
#define Y_STEP_BIT 3 // Uno Digital Pin 3
#define Z_STEP_BIT 4 // Uno Digital Pin 4
#define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // 掩码
//步进电机方向端口. 所有步进端口必须在一个通道里.
#define DIRECTION_DDR DDRD
#define DIRECTION_PORT PORTD
#define X_DIRECTION_BIT 5 // Uno Digital Pin 5
#define Y_DIRECTION_BIT 6 // Uno Digital Pin 6
#define Z_DIRECTION_BIT 7 // Uno Digital Pin 7
#define DIRECTION_MASK ((1<<X_DIRECTION_BIT)|(1<<Y_DIRECTION_BIT)|(1<<Z_DIRECTION_BIT)) // 掩码
// 步进电机使能端口(一个端口控制所有电机)
#define STEPPERS_DISABLE_DDR DDRB
#define STEPPERS_DISABLE_PORT PORTB
#define STEPPERS_DISABLE_BIT 0 // Uno Digital Pin 8
#define STEPPERS_DISABLE_MASK (1<<STEPPERS_DISABLE_BIT)
/*硬限位端口和中断向量,所有端口必须在一个通道,但和其他输入端口可不再一个通//道内.*/
#define LIMIT_DDR DDRB
#define LIMIT_PIN PINB
#define LIMIT_PORT PORTB
#define X_LIMIT_BIT 1 // Uno Digital Pin 9
#define Y_LIMIT_BIT 2 // Uno Digital Pin 10
#ifdef VARIABLE_SPINDLE // 因为变主轴转速用到PWM,所以需要Z 轴限位放到Pin 12.
#define Z_LIMIT_BIT 4 // Uno Digital Pin 12
#else
#define Z_LIMIT_BIT 3 // Uno Digital Pin 11
#endif
#if !defined(ENABLE_DUAL_AXIS)//如果没到双轴定义(龙门结构)
#define LIMIT_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)) //掩码
#endif
#define LIMIT_INT PCIE0 // 中断使能(见AVR章节)
#define LIMIT_INT_vect PCINT0_vect // 中断向量
#define LIMIT_PCMSK PCMSK0 //端口中断定义(指定那些端口变化中断)
// 定义用户系统操作端口(循环启动,复位,进给保持,所有端口必须在一个通道,但和其他输入端口可不再一个通//道内.*/
#define CONTROL_DDR DDRC
#define CONTROL_PIN PINC
#define CONTROL_PORT PORTC
#define CONTROL_RESET_BIT 0 // Uno Analog Pin 0(复位)
#define CONTROL_FEED_HOLD_BIT 1 // Uno Analog Pin 1(进给保持)
#define CONTROL_CYCLE_START_BIT 2 // Uno Analog Pin 2(循环启动)
#define CONTROL_SAFETY_DOOR_BIT 1 // Uno Analog Pin 1 (门和进给保持分享一个端
口,通过config.h文件定义).
#define CONTROL_INT PCIE1 // 中断使能
#define CONTROL_INT_vect PCINT1_vect //中断向量
#define CONTROL_PCMSK PCMSK1 // 端口中断定义
#define CONTROL_MASK ((1<<CONTROL_RESET_BIT)|(1<<CONTROL_FEED_HOLD_BIT)|(1<<CONTROL_CYCLE_START_BIT)|(1<<CONTROL_SAFETY_DOOR_BIT)) //掩码
#define CONTROL_INVERT_MASK CONTROL_MASK // 反置掩码(低电平有效)
// 探头端口定义.
#define PROBE_DDR DDRC
#define PROBE_PIN PINC
#define PROBE_PORT PORTC
#define PROBE_BIT 5 // Uno Analog Pin 5
#define PROBE_MASK (1<<PROBE_BIT)
#if !defined(ENABLE_DUAL_AXIS) //如果没有定义了双轴使能,流动冷却和雾化端口定义
#define COOLANT_FLOOD_DDR DDRC
#define COOLANT_FLOOD_PORT PORTC
#define COOLANT_FLOOD_BIT 3 // Uno Analog Pin 3(冷却)
#define COOLANT_MIST_DDR DDRC
#define COOLANT_MIST_PORT PORTC
#define COOLANT_MIST_BIT 4 // Uno Analog Pin 4(雾化)
// 主轴使能和转速端口定义.
#define SPINDLE_ENABLE_DDR DDRB
#define SPINDLE_ENABLE_PORT PORTB
#ifdef VARIABLE_SPINDLE
#ifdef USE_SPINDLE_DIR_AS_ENABLE_PIN
// 如果启用,主轴方向引脚现在用作主轴使能,而PWM仍在D11上。
#define SPINDLE_ENABLE_BIT 5 // Uno Digital Pin 13
#else
#define SPINDLE_ENABLE_BIT 3 // Uno Digital Pin 11
#endif
#else
#define SPINDLE_ENABLE_BIT 4 // Uno Digital Pin 12
#endif
#ifndef USE_SPINDLE_DIR_AS_ENABLE_PIN //如果没有定义主轴转动方向
#define SPINDLE_DIRECTION_DDR DDRB
#define SPINDLE_DIRECTION_PORT PORTB
#define SPINDLE_DIRECTION_BIT 5 // Uno Digital Pin 13
#endif
// 变主轴转速定义,
#define SPINDLE_PWM_MAX_VALUE 255 // 328p f最大 PWM 最大值为 255.
#ifndef SPINDLE_PWM_MIN_VALUE
#define SPINDLE_PWM_MIN_VALUE 1 // 最小值必须大于0.
#endif
#define SPINDLE_PWM_OFF_VALUE 0 //关闭
#define SPINDLE_PWM_RANGE (SPINDLE_PWM_MAX_VALUE-SPINDLE_PWM_MIN_VALUE)
#define SPINDLE_TCCRA_REGISTER TCCR2A // 计数寄存器
#define SPINDLE_TCCRB_REGISTER TCCR2B
#define SPINDLE_OCR_REGISTER OCR2A // 输出比较寄存器
#define SPINDLE_COMB_BIT COM2A1 //7
// 预置, 8-bit 快速 PWM模式.
#define SPINDLE_TCCRA_INIT_MASK ((1<<WGM20) | (1<<WGM21)) // 快速 PWM.
#define SPINDLE_TCCRB_INIT_MASK (1<<CS22) // 预置 0.98kHz
// 主轴PWM端口定义.
#define SPINDLE_PWM_DDR DDRB
#define SPINDLE_PWM_PORT PORTB
#define SPINDLE_PWM_BIT 3 // Uno Digital Pin 11
#else
// 双轴功能定义(需要一个独立的步进脉冲引脚来操作)
#ifdef DUAL_AXIS_CONFIG_PROTONEER_V3_51 //采用PROTONEER_V3_51 CNC Shield
//定义脉冲端口
#define STEP_DDR_DUAL DDRC
#define STEP_PORT_DUAL PORTC
#define DUAL_STEP_BIT 4 // Uno Analog Pin 4
#define STEP_MASK_DUAL ((1<<DUAL_STEP_BIT))
//定义方向端口
#define DIRECTION_DDR_DUAL DDRC
#define DIRECTION_PORT_DUAL PORTC
#define DUAL_DIRECTION_BIT 3 // Uno Analog Pin 3
#define DIRECTION_MASK_DUAL ((1<<DUAL_DIRECTION_BIT))
// 缺省定义和Z轴限位共享一个(根据需求自己改变)
#define DUAL_LIMIT_BIT Z_LIMIT_BIT
#define LIMIT_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)|(1<<DUAL_LIMIT_BIT))
// 定义冷却,雾化不支持双轴。由于端口改变,后面设置重新定义
#define COOLANT_FLOOD_DDR DDRB
#define COOLANT_FLOOD_PORT PORTB
#define COOLANT_FLOOD_BIT 5 // Uno Digital Pin 13
// 主轴定义
#define SPINDLE_ENABLE_DDR DDRB
#define SPINDLE_ENABLE_PORT PORTB
#ifdef VARIABLE_SPINDLE
#define SPINDLE_ENABLE_BIT 3 // Uno Digital Pin 11
#else
#define SPINDLE_ENABLE_BIT 4 // Uno Digital Pin 12
#endif
#define SPINDLE_PWM_MAX_VALUE 255
#ifndef SPINDLE_PWM_MIN_VALUE
#define SPINDLE_PWM_MIN_VALUE 1
#endif
#define SPINDLE_PWM_OFF_VALUE 0
#define SPINDLE_PWM_RANGE (SPINDLE_PWM_MAX_VALUE-SPINDLE_PWM_MIN_VALUE)
#define SPINDLE_TCCRA_REGISTER TCCR2A
#define SPINDLE_TCCRB_REGISTER TCCR2B
#define SPINDLE_OCR_REGISTER OCR2A
#define SPINDLE_COMB_BIT COM2A1
#define SPINDLE_TCCRA_INIT_MASK ((1<<WGM20) | (1<<WGM21)) // Configures fast PWM mode.
#define SPINDLE_TCCRB_INIT_MASK (1<<CS22)
#define SPINDLE_PWM_DDR DDRB
#define SPINDLE_PWM_PORT PORTB
#define SPINDLE_PWM_BIT 3 // Uno Digital Pin 11
#endif
// 如果采用的是CNC Shield Clone (Originally Protoneer v3.0).
#ifdef DUAL_AXIS_CONFIG_CNC_SHIELD_CLONE
// 重新定义双轴
#define STEP_DDR_DUAL DDRB
#define STEP_PORT_DUAL PORTB
#define DUAL_STEP_BIT 4 // Uno Digital Pin 12
#define STEP_MASK_DUAL ((1<<DUAL_STEP_BIT))
#define DIRECTION_DDR_DUAL DDRB
#define DIRECTION_PORT_DUAL PORTB
#define DUAL_DIRECTION_BIT 5 // Uno Digital Pin 13
#define DIRECTION_MASK_DUAL ((1<<DUAL_DIRECTION_BIT))
#define DUAL_LIMIT_BIT Z_LIMIT_BIT
#define LIMIT_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)|(1<<DUAL_LIMIT_BIT))
#define COOLANT_FLOOD_DDR DDRC
#define COOLANT_FLOOD_PORT PORTC
#define COOLANT_FLOOD_BIT 4 // Uno Analog Pin 4
#define SPINDLE_ENABLE_DDR DDRC
#define SPINDLE_ENABLE_PORT PORTC
#define SPINDLE_ENABLE_BIT 3 // Uno Analog Pin 3
#endif
#endif
#endif
#ifdef CPU_MAP_CUSTOM_PROC
/*对于自定义针脚地图或不同的处理器,复制并编辑一个可用的cpu map文件,并根据你的需要修改。确保定义的名称在config.h文件中也被改变。*/.
#endif
#endif
版权声明:本文为CSDN博主「syheu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/syheu/article/details/122642156
暂无评论