Grbl代码分析 cpu-map.h
//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
Grbl代码分析 cpu-map.h相关推荐
- linux内核中链表代码分析---list.h头文件分析(一)
linux内核中链表代码分析---list.h头文件分析(一) 16年2月27日17:13:14 在学习数据结构时,有一个重要的知识点就是链表.对于链表的一些基本操作,它的最好学习资料就是内核中的li ...
- linux内核中链表代码分析---list.h头文件分析(二)【转】
转自:http://blog.chinaunix.net/uid-30254565-id-5637598.html linux内核中链表代码分析---list.h头文件分析(二) 16年2月28日16 ...
- H.264码率控制算法研究及JM相应代码分析(二)
在前一篇文章的基础上,现在先看一下MPEG4 编码标准中应用的码率控制算法,总结起来,各大算法都是在解决两个问题:RD 率失真的优化以及避免缓冲区的上溢下溢. MPEG-4 VM8 码率控制算法 在这 ...
- 飞腾CPU虚拟化相关代码分析(一)
飞腾CPU虚拟化相关代码分析(一)-- 函数el2_setup 函数el2_setup是ARM64体系结构下Linux内核运行的第一个和虚拟化相关的函数. 相关概念 ARM64支持两种虚拟方式:Hyp ...
- 模块加载过程代码分析1
一.概述 模块是作为ELF对象文件存放在文件系统中的,并通过执行insmod程序链接到内核中.对于每个模块,系统都要分配一个包含以下数据结构的内存区. 一个module对象,表示模块名的一个以null ...
- GraphSAGE NIPS 2017 代码分析(Tensorflow版)
文章目录 数据集 ppi数据集信息 toy-ppi-G.json 图的信息 toy-ppi-class_map.json toy-ppi-id_map.json toy-ppi-walks.txt t ...
- Linux GIC代码分析
一.前言 GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器,其architecture specification目前有四个版本,V1-V4(V ...
- arm linux kernel 从入口到start_kernel 的代码分析
Linux系统启动过程分析(主要是加载内核前的动作) 经过对Linux系统有了一定了解和熟悉后,想对其更深层次的东西做进一步探究.这当中就包括系统的启动流程.文件系统的组成结构.基于动态库和静态库的程 ...
- SRS 代码分析【HLS切片】
转载:http://blog.csdn.net/ManagerUser/article/details/76087151 一.前言 SRS流媒体服务器支持rtmp协议,但是rtmp协议 ...
最新文章
- 一个Java程序员的面试心得,最终入职阿里
- delphi memo 查找字符 下行插入_Vim高手,从来不用鼠标2——替换、撤销、缩进、查找
- JNDI 和JDBC的区别
- 《数据结构》双链循环线性表
- 如何做好一个技术 TL
- 在php里怎么安装composer,怎么安装composer
- 天堂2芙蕾雅单机版mysql闪退_【图片】天堂2单机版-芙蕾雅。算是我这个老人对天堂2吧友的最后贡献吧!_天堂2吧_百度贴吧...
- 学习DSP28335--CCS软件打开例程时一直报错问题以及编译问题解决
- C语言程序设计 课程设计报告
- java 传智播客 毕向东_传智播客,毕向东Java详细基础教程下载
- 宿舍的呼噜神,快看过来,我这里有药!!!
- Android Studio控件属性大全
- 为什么HashMap的长度一定是2的次幂?
- 2022-2028年全球与中国护眼台灯行业深度分析
- android4.4.4linux内核下载,Android 4.4源码下载
- 如何解决win10网络出现叹号,但是能连网问题
- 【重磅】阿里巴巴创新中心一周内迎两位省委书记视察指导
- 微信终端开发团队:新年新语言,WCDB Swift
- PWN lotto [pwnable.kr]CTF writeup题解系列10
- 十年游戏建模师的酸甜苦辣!让你深入了解3D游戏建模最真实的一面