上一篇我们分享了Grbl的系统命令部分,在上位机发来的数据流,除了系统命令($开头),其余的就是G代码了,在protocol.c中调用gc_execute_line()这个函...
上一篇我们分享了Grbl的系统命令部分,在上位机发来的数据流,除了系统命令($开头),其余的就是G代码了,在protocol.c中调用gc_execute_line()这个函...
上一篇我们分析了system.c,它除了执行系统命令外,还处理了其他功能例如:安全门,重置,暂停,恢复等功能,这就涉及到对IO引脚的操作了,Grbl中直接使用寄存器操作IO引...
上一篇我们分享了Grbl主循环把串口发来的数据解析,分发到不同的执行机构,其中最重要的两个使system_execute_line()和gc_execute_line();我...
主循环这块算是Grbl中最复杂的内容了,里面掺杂了很多模块调用,我们抽丝剥茧,顺着脉络一点点进行。先主要分析main.c和protocol.c 首先在主入口中我们了解过,Ar...
上篇我们分享了Grbl通过串口中断的方式处理收发数据的例子,并使用一个简单的结构储存数据。这篇我们分享Grbl中一个重要的数据结构:环形队列。通过环形队列做缓冲,协调单片机和...
上篇我们分享了通过串口寄存器实现单片机与电脑的通信,这篇继续通过中断的方式实现,这样能使主循环和串口互不干扰的独立运行。 首先我们开启在UCSR0B中的RXCIE0开关,它的...
上一篇我们分享了Grbl串口的serial.c源码,接下来我们将通过动手编写几个例子来深入了解Arduino底层关于串口寄存器的用法。 开始之前介绍一下与串口相关的寄存器: ...
串口通过UART接口通过USB与上位机通信,配置成中断接收和中断发送模式,并创建了串口接收环形队列和串口发送环形队列,中断接收的数据存放在串口接收环形队列里,串口需要发送的数...
注释详尽,设计严谨,有专业、优雅、神作之称。模块交互,相得益彰。其中串口通信、中断定时,如外星之技。废寝忘食,仍怡然自乐。 前面我们分享了Grbl的真正入口和Grbl为什么没...
自云先世受内存限,只2KB如此绝境,入不敷出焉,遂与闭门造车。 上回我们说到,Grbl并没有使用Arduino框架,这是为什么呢? 原来Grbl并没有使用Arduino框架,...
编译上传,便遇大山。初探入口,仿佛若有戏。便舍身,从口入,精读数十行,豁然开朗。 初读Grbl,你可能也被它的简洁吓到了,它没用setup,也没用loop,甚至连ma...
共和年间,河北人码字为生。搞嵌入,忘编程之深浅。偶遇Grbl,左右数千行,中无杂碎,注释完善,性能极致,码农甚异之。遂前往,一探究竟…… Grbl是一款开源高性能,此成本的,...