//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相关推荐

  1. linux内核中链表代码分析---list.h头文件分析(一)

    linux内核中链表代码分析---list.h头文件分析(一) 16年2月27日17:13:14 在学习数据结构时,有一个重要的知识点就是链表.对于链表的一些基本操作,它的最好学习资料就是内核中的li ...

  2. linux内核中链表代码分析---list.h头文件分析(二)【转】

    转自:http://blog.chinaunix.net/uid-30254565-id-5637598.html linux内核中链表代码分析---list.h头文件分析(二) 16年2月28日16 ...

  3. H.264码率控制算法研究及JM相应代码分析(二)

    在前一篇文章的基础上,现在先看一下MPEG4 编码标准中应用的码率控制算法,总结起来,各大算法都是在解决两个问题:RD 率失真的优化以及避免缓冲区的上溢下溢. MPEG-4 VM8 码率控制算法 在这 ...

  4. 飞腾CPU虚拟化相关代码分析(一)

    飞腾CPU虚拟化相关代码分析(一)-- 函数el2_setup 函数el2_setup是ARM64体系结构下Linux内核运行的第一个和虚拟化相关的函数. 相关概念 ARM64支持两种虚拟方式:Hyp ...

  5. 模块加载过程代码分析1

    一.概述 模块是作为ELF对象文件存放在文件系统中的,并通过执行insmod程序链接到内核中.对于每个模块,系统都要分配一个包含以下数据结构的内存区. 一个module对象,表示模块名的一个以null ...

  6. GraphSAGE NIPS 2017 代码分析(Tensorflow版)

    文章目录 数据集 ppi数据集信息 toy-ppi-G.json 图的信息 toy-ppi-class_map.json toy-ppi-id_map.json toy-ppi-walks.txt t ...

  7. Linux GIC代码分析

    一.前言 GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器,其architecture specification目前有四个版本,V1-V4(V ...

  8. arm linux kernel 从入口到start_kernel 的代码分析

    Linux系统启动过程分析(主要是加载内核前的动作) 经过对Linux系统有了一定了解和熟悉后,想对其更深层次的东西做进一步探究.这当中就包括系统的启动流程.文件系统的组成结构.基于动态库和静态库的程 ...

  9. SRS 代码分析【HLS切片】

    转载:http://blog.csdn.net/ManagerUser/article/details/76087151 一.前言         SRS流媒体服务器支持rtmp协议,但是rtmp协议 ...

最新文章

  1. 一个Java程序员的面试心得,最终入职阿里
  2. delphi memo 查找字符 下行插入_Vim高手,从来不用鼠标2——替换、撤销、缩进、查找
  3. JNDI 和JDBC的区别
  4. 《数据结构》双链循环线性表
  5. 如何做好一个技术 TL
  6. 在php里怎么安装composer,怎么安装composer
  7. 天堂2芙蕾雅单机版mysql闪退_【图片】天堂2单机版-芙蕾雅。算是我这个老人对天堂2吧友的最后贡献吧!_天堂2吧_百度贴吧...
  8. 学习DSP28335--CCS软件打开例程时一直报错问题以及编译问题解决
  9. C语言程序设计 课程设计报告
  10. java 传智播客 毕向东_传智播客,毕向东Java详细基础教程下载
  11. 宿舍的呼噜神,快看过来,我这里有药!!!
  12. Android Studio控件属性大全
  13. 为什么HashMap的长度一定是2的次幂?
  14. 2022-2028年全球与中国护眼台灯行业深度分析
  15. android4.4.4linux内核下载,Android 4.4源码下载
  16. 如何解决win10网络出现叹号,但是能连网问题
  17. 【重磅】阿里巴巴创新中心一周内迎两位省委书记视察指导
  18. 微信终端开发团队:新年新语言,WCDB Swift
  19. PWN lotto [pwnable.kr]CTF writeup题解系列10
  20. 十年游戏建模师的酸甜苦辣!让你深入了解3D游戏建模最真实的一面

热门文章

  1. insert插入语句
  2. [BZOJ2121]-字符串游戏-字符串dp
  3. 《七周七并发模型》笔记
  4. 读书笔记软件调试之道 :从大局看调试-零容忍策略
  5. A2021-A2022年度项目总结(二)
  6. 软件-DiskSpeekUp:DiskSpeekUp(磁盘整理工具)
  7. 基于PHP在线点餐外卖系统设计与实现 开题报告
  8. 【Apache Spark 】第 6 章Spark SQL 和数据集
  9. 路由器VRF多个虚拟路由器测试
  10. 解决VMware内存占用过高问题