哈喽朋友们,欢迎来和我一起进行Grbl的学习✊
笔者将首先Grbl的学习分为了两个模块,如下
我们先来进行Grbl框架的学习
对于Grbl框架来说,其最鲜明的特征就是自行封装,本文将围绕这一点进行分析学习
Grbl自行封装的原因
Grbl并没有使用Arduino架构,最主要的原因有两点:资源限制和性能
1.Arduino的芯片atmega328p资源有限
2.Arduino框架的功能不能满足Grbl的需求 Arduino框架中的analogWrite()函数用于生成PWM(脉冲宽度调制)(脉冲宽度指的是一个脉冲在高电平状态持续的时间长度)信号,它可以控制模拟设备的功率。在Arduino Uno上,这个函数通常使用3个定时器(Timer 0、Timer 1和Timer 2)来实现,每个定时器控制特定的引脚。
Timer 0 -> 5, 6 以980 Hz
Timer 1 -> 9, 10 以490 Hz
Timer 2 -> 3, 11 以980 Hz 的频率生成 PWM
尽管可以通过分频器获得任意的频率,但Grbl需要精确和动态地控制步进电机,就需要可以控制加速度和减速度。这通常需要可变的PWM频率,而analogWrite()在Arduino Uno上提供的PWM频率是固定的,这限制了其在Grbl中的应用
3.Arduino框架占用了某些资源 Arduino框架的各个组件之间存在相互依赖,这意味着只用一部分功能,也得把大部分Arduino文件引入。把Arduino框架包含进来,再去实现CNC的功能,固件大小会超出Atmega328p的32KB限制
于是Grbl的代码都是直接封装,通过操作寄存器来实现的,这样代码更灵活,性能好,编译出来的固件占用空间也会小一些
以下是Grbl架构图,笔者将重要的部分进行了备注说明,下一篇将详细介绍Grbl关键部分的组成和功能
以上便是本篇的全部内容啦!
欢迎大家一起交流学习!