马琳固件能够从串口里面取电吗同时使用两个串口么

马琳固件里的中断产生步进脉冲
WRITE()有懂得吗? - MakerLab创客实验室
MakerLab创客实验室 — Let's Make something.
已注册用户请
机器人/robot
网站建议/反馈
马琳固件里的中断产生步进脉冲
WRITE()有懂得吗?
fastio.h#define _WRITE_NC(IO, v)
do { if (v) {DIO ##
IO ## _WPORT |= MASK(DIO ## IO ## _PIN); } else {DIO ##
IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }; } while (0)#define WRITE_C(IO, v)
do { if (v) { \
CRITICAL_SECTION_START; \
IO ## _WPORT |= MASK(DIO ## IO ## _PIN); }\
CRITICAL_SECTION_END; \
CRITICALSECTION_START; \
IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }\
CRITICAL_SECTION_END; \
while (0)#define WRITE(IO, v)
if (&(DIO ##
IO ## RPORT) &= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)#define WRITE(IO, v)
_WRITE(IO, v)stepper.cppcounterx += current_block-&steps_x;
if (counter_x & 0) {
WRITE(XSTEP_PIN, !INVERT_X_STEP_PIN);
counter_x -= current_block-&step_event_
count_position[X_AXIS]+=count_direction[X_AXIS];
WRITE(X_STEP_PIN, INVERT_X_STEP_PIN);
}步进电机不是脉冲控制嘛,它两个WRITE()函数中间几乎没有时间间隔,是如何产生脉冲的?WRITE()函数不懂,请大神指点下
同问啊,这个也一直弄不明白啊,@
@ 没错是脉冲,但是严格来说是上升沿,也就是一个高电平,马上拉低就可以被识别。这里的WRITE就是一个改IO电平的函数而已,没什么神奇的,在脉冲中断函数中,WRITE(Pin,HIGH);然后又写了WRITE(Pin,LOW);所以就实现了脉冲
@ WRITE(Pin,HIGH);WRITE(Pin,LOW)这两个语句不会因为时间太短而不被识别吗?
还有就是 我把marlin的fastio.h和pins.h都加入到我的程序里了
我只要写WRITE();,程序就会报错呢
@ 会不会被识别要看步进电机驱动芯片的参数,大部分都可以识别。实在不行可能需要加些许延时。把错误信息发上来
@ Arduino:1.7.4 (Windows 7), 板:&Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)&In file included from sketch_aug07a_ISR.ino:2:0:
sketch_aug07a_ISR.ino: In function 'void __vector_17()':fastio.h:45:36: error: 'DIOPUL_RPORT' was not declared in this scope #define _WRITE(IO, v)
if (&(DIO ##
IO ## _RPORT) &= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
^fastio.h:68:23: note: in expansion of macro '_WRITE' #define WRITE(IO, v)
_WRITE(IO, v)
^sketch_aug07a_ISR.ino:73:3: note: in expansion of macro 'WRITE'fastio.h:33:42: error: 'CRITICAL_SECTION_START' was not declared in this scope
CRITICAL_SECTION_START; \
^fastio.h:45:80: note: in expansion of macro '_WRITE_C' #define _WRITE(IO, v)
if (&(DIO ##
IO ## _RPORT) &= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
^fastio.h:68:23: note: in expansion of macro '_WRITE' #define WRITE(IO, v)
_WRITE(IO, v)
^sketch_aug07a_ISR.ino:73:3: note: in expansion of macro 'WRITE'fastio.h:34:43: error: 'DIOPUL_WPORT' was not declared in this scope
IO ## _WPORT |= MASK(DIO ## IO ## _PIN); }\
^fastio.h:45:80: note: in expansion of macro '_WRITE_C' #define _WRITE(IO, v)
if (&(DIO ##
IO ## _RPORT) &= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
^fastio.h:68:23: note: in expansion of macro '_WRITE' #define WRITE(IO, v)
_WRITE(IO, v)
^sketch_aug07a_ISR.ino:73:3: note: in expansion of macro 'WRITE'In file included from sketch_aug07a_ISR.ino:2:0:fastio.h:34:72: error: 'DIOPUL_PIN' was not declared in this scope
IO ## _WPORT |= MASK(DIO ## IO ## _PIN); }\
^fastio.h:17:26: note: in definition of macro 'MASK' #define MASK(PIN)
(1 && PIN)
^fastio.h:45:80: note: in expansion of macro '_WRITE_C' #define _WRITE(IO, v)
if (&(DIO ##
IO ## _RPORT) &= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
^fastio.h:68:23: note: in expansion of macro '_WRITE' #define WRITE(IO, v)
_WRITE(IO, v)
^sketch_aug07a_ISR.ino:73:3: note: in expansion of macro 'WRITE'In file included from sketch_aug07a_ISR.ino:2:0:fastio.h:35:42: error: 'CRITICAL_SECTION_END' was not declared in this scope
CRITICAL_SECTION_END; \
^fastio.h:45:80: note: in expansion of macro '_WRITE_C' #define _WRITE(IO, v)
if (&(DIO ##
IO ## _RPORT) &= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
^fastio.h:68:23: note: in expansion of macro '_WRITE' #define WRITE(IO, v)
_WRITE(IO, v)
^sketch_aug07a_ISR.ino:73:3: note: in expansion of macro 'WRITE'fastio.h:38:42: error: 'CRITICAL_SECTION_START' was not declared in this scope
CRITICAL_SECTION_START; \
^fastio.h:45:80: note: in expansion of macro '_WRITE_C' #define _WRITE(IO, v)
if (&(DIO ##
IO ## _RPORT) &= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
^fastio.h:68:23: note: in expansion of macro '_WRITE' #define WRITE(IO, v)
_WRITE(IO, v)
^sketch_aug07a_ISR.ino:73:3: note: in expansion of macro 'WRITE'fastio.h:39:43: error: 'DIOPUL_WPORT' was not declared in this scope
IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }\
^fastio.h:45:80: note: in expansion of macro '_WRITE_C' #define _WRITE(IO, v)
if (&(DIO ##
IO ## _RPORT) &= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
^fastio.h:68:23: note: in expansion of macro '_WRITE' #define WRITE(IO, v)
_WRITE(IO, v)
^sketch_aug07a_ISR.ino:73:3: note: in expansion of macro 'WRITE'In file included from sketch_aug07a_ISR.ino:2:0:fastio.h:39:73: error: 'DIOPUL_PIN' was not declared in this scope
IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }\
^fastio.h:17:26: note: in definition of macro 'MASK' #define MASK(PIN)
(1 && PIN)
^fastio.h:45:80: note: in expansion of macro '_WRITE_C' #define _WRITE(IO, v)
if (&(DIO ##
IO ## _RPORT) &= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
^fastio.h:68:23: note: in expansion of macro '_WRITE' #define WRITE(IO, v)
_WRITE(IO, v)
^sketch_aug07a_ISR.ino:73:3: note: in expansion of macro 'WRITE'In file included from sketch_aug07a_ISR.ino:2:0:fastio.h:40:42: error: 'CRITICAL_SECTION_END' was not declared in this scope
CRITICAL_SECTION_END; \
^fastio.h:45:80: note: in expansion of macro '_WRITE_C' #define _WRITE(IO, v)
if (&(DIO ##
IO ## _RPORT) &= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
^fastio.h:68:23: note: in expansion of macro '_WRITE' #define WRITE(IO, v)
_WRITE(IO, v)
^sketch_aug07a_ISR.ino:73:3: note: in expansion of macro 'WRITE'In file included from sketch_aug07a_ISR.ino:2:0:fastio.h:30:40: error: 'DIOPUL_WPORT' was not declared in this scope #define _WRITE_NC(IO, v)
do { if (v) {DIO ##
IO ## _WPORT |= MASK(DIO ## IO ## _PIN); } else {DIO ##
IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }; } while (0)
^fastio.h:45:105: note: in expansion of macro '_WRITE_NC' #define _WRITE(IO, v)
if (&(DIO ##
IO ## _RPORT) &= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
^fastio.h:68:23: note: in expansion of macro '_WRITE' #define WRITE(IO, v)
_WRITE(IO, v)
^sketch_aug07a_ISR.ino:73:3: note: in expansion of macro 'WRITE'fastio.h:30:69: error: 'DIOPUL_PIN' was not declared in this scope #define _WRITE_NC(IO, v)
do { if (v) {DIO ##
IO ## _WPORT |= MASK(DIO ## IO ## _PIN); } else {DIO ##
IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }; } while (0)
^fastio.h:17:26: note: in definition of macro 'MASK' #define MASK(PIN)
(1 && PIN)
^fastio.h:45:105: note: in expansion of macro '_WRITE_NC' #define _WRITE(IO, v)
if (&(DIO ##
IO ## _RPORT) &= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
^fastio.h:68:23: note: in expansion of macro '_WRITE' #define WRITE(IO, v)
_WRITE(IO, v)
^sketch_aug07a_ISR.ino:73:3: note: in expansion of macro 'WRITE'fastio.h:30:97: error: 'DIOPUL_WPORT' was not declared in this scope #define _WRITE_NC(IO, v)
do { if (v) {DIO ##
IO ## _WPORT |= MASK(DIO ## IO ## _PIN); } else {DIO ##
IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }; } while (0)
^fastio.h:45:105: note: in expansion of macro '_WRITE_NC' #define _WRITE(IO, v)
if (&(DIO ##
IO ## _RPORT) &= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
^fastio.h:68:23: note: in expansion of macro '_WRITE' #define WRITE(IO, v)
_WRITE(IO, v)
^sketch_aug07a_ISR.ino:73:3: note: in expansion of macro 'WRITE'fastio.h:30:127: error: 'DIOPUL_PIN' was not declared in this scope #define _WRITE_NC(IO, v)
do { if (v) {DIO ##
IO ## _WPORT |= MASK(DIO ## IO ## _PIN); } else {DIO ##
IO ## _WPORT &= ~MASK(DIO ## IO ## _PIN); }; } while (0)
^fastio.h:17:26: note: in definition of macro 'MASK' #define MASK(PIN)
(1 && PIN)
^fastio.h:45:105: note: in expansion of macro '_WRITE_NC' #define _WRITE(IO, v)
if (&(DIO ##
IO ## _RPORT) &= (uint8_t *)0x100) {_WRITE_C(IO, v); } else {_WRITE_NC(IO, v); }; } while (0)
^fastio.h:68:23: note: in expansion of macro '_WRITE' #define WRITE(IO, v)
_WRITE(IO, v)
^sketch_aug07a_ISR.ino:73:3: note: in expansion of macro 'WRITE'编译有误。
报告将会包含更多的信息
&在编译时,输出详细信息&
在 文件&首选项 中启用
@ 我想把marlin里的步进电机控制
先移植出来控制一个步进电机,并且加上位置反馈,这样可行性大吗
@ 应该是少了一些依存文件吧,可以移植,但你需要先把各部分代码读懂才好
认真通读stepper.cpp比较好。需要熟悉AVR的时钟中断。
@,请问您的这个问题解决了吗?还有speed_lookuptable_fast是怎么算出来的,该怎么用呢?先谢谢了
Powered by
学习系统 基于Rabel我用马琳固件怎么改lcd2004才能正常显示啊? - MakerLab创客实验室
MakerLab创客实验室 — Let's Make something.
已注册用户请
机器人/robot
网站建议/反馈
我用马琳固件怎么改lcd2004才能正常显示啊?
只是lcd不显示内容,只有两根白条,但是插在lcd上的sd卡在联机状态下可以看见并选择打印
首先确定lcd2004的型号,然后在固件中打开相应型号的配置,接好线,上传固件,一般就可以显示了,如果不能显示,尝试按下旋钮,听一下有没有嘟嘟声,如果没有说明固件配置有错误,如果有声音但没有显示,可以尝试调节lcd对比度
兄弟,你的能用了吗?我的也是mega2560+lcd2004A,关键按照网上说的该的还是不显示,但温度和加热器能起作用
&&via Android
我也是不显示内容有声音有背光
Powered by
学习系统 基于Rabel3d打印机马琳固件步进电机细分最大支持设置多少细分_百度知道
3d打印机马琳固件步进电机细分最大支持设置多少细分
您的回答被采纳后将获得:
系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
我有更好的答案
理论上差不多0.01吧
雷赛DM556 驱动器256细分的也支持吗
我看过最大的是32
为您推荐:
其他类似问题
步进电机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。马琳固件【移植】——步进电机速度控制问题:加减速控制问题 - MakerLab创客实验室
MakerLab创客实验室 — Let's Make something.
已注册用户请
机器人/robot
网站建议/反馈
马琳固件【移植】——步进电机速度控制问题:加减速控制问题
在移植固件到Nios ii平台时遇到了问题:固件里面的速度控制采用的是梯形速度控制法,有加速,匀速和减速。在实际测试中发现,当feedrate在时,电机能正常运行,但当feedrate上7000甚至10000后,电机加速和匀速正常,但在减速时,电机一震一震的,但也在转动,感觉像是失步了,不知道这是什么问题,请教@。不知道是不是电源的功率不够,我用的电源是12V-3A的开关电源。
移植是没有动马琳固件速度控制的部分。是不是还需要设置什么呢?请教@ ,谢谢!
有一个计算速度的函数,里面的计算方式改了吧?还有一个planner.cpp文件用plan_buffer_line函数有一个地方是用了F_CPU这个宏,arduino都是16Mhz,如果你的这个宏定义不是16MHz,可能会出现加减速问题。我移植时也漏掉过这个地方,导致加减速有问题,修改后可以解决这个问题。可以看看我的移植commit:
@ 嗯,两个地方都改了。我的F_CPU用的是100M的。后来仔细检查了下,原来是变量的类型定义错了,导致了溢出。现在好了。但在调试的时候发现减速的步数有点长,是不是和加速度有关?还有就是打印机最大能给的feedrate能达到多大呢,我给到10000后,电机就失步了。但原机器是可以通过旋钮来调节速度的,貌似可以到100%,如果原来是3000的feedrate那么,实际能上到30000。是不是这样的呢?
lcd上面的旋钮调节?100%是乘1,你的意思是乘10了。marlin原版最快脉冲速度是40khz。10000mm/min的feedrate我好想试过,机械情况允许的情况下不会失步。你要排除机械原因导致的情况。
@ 嗯,是LCD上的旋钮调节,最高可以调到999%,近似是1000%,那不就是乘10了?如果G代码中有3000的feedrate,那不就是30000了。不过我之前在原版上试了,它的速度会有个极限,好像是到600%以后,速度的提升就不明显了。到了999%也是可以运行,是不是在固件里面有一个最大feedrate的限定?或许我用的不是原版的Marlin吧。
@ 示波器观察一下跟原版什么区别吧
@ 嗯,目前手头上没有示波器,看来得去借一个了。但现在还有一个问题,就是在步进电机减速时,它运动的时间有点长,人眼能看得到。每次连续G指令执行时,在两个G指令期间,都会有这样一个减速的过程。这个问题不知道是不是原版的就是这个样子,还是我在移植的时候,忘记改哪个参数了?请问您在移植的时候有没出现这样的情况呢?
@ 原版不明显,过度很平滑。你最好是接上原版,对比同一情况下的运动状态是否一样
@ 按照您的建议,我接上之后对比了下,确实原版的没有这个过程,很是平滑。但不知道 是什么原因,估计我是哪里改动了,准备再去好好检查下。现在又出现了一个新的问题:z轴电机本来是有两个的,但我在实际测试时发现 速度过快,两个 电机会只有一个转动,另一个感觉 是堵住了,但如果速度过小,比如feedrate为60左右,就可以两个同时转。我只用1个L298在驱动这两个电机,不知道是不是驱动电流不够,但原版的也只是用了一个A4982驱动的,不知道是个什么原因导致了。真的很感谢您的关注和耐心回答,谢谢啦!!
检查机械是不是一个的阻力太大,另外可以试试将电机串联,可以保证两个电机流过的电流是一样的。
@ z轴电机是串联着。我把电机上螺杆去掉,让它空转,也是这种情况。不知道是不是L298只能驱动一个电机,但并联也应该相当于一个电机的吧。
@ 不知道什么原因了。
@ 另外电机在空载转的时候一卡一卡的,这是不是叫失步了吧?
@ 确保电机相线都接正确。如果是空转,除非速度太快,一般不会失步吧
Powered by
学习系统 基于Rabel我用马琳固件怎么改lcd2004才能正常显示_百度知道
我用马琳固件怎么改lcd2004才能正常显示
我有更好的答案
如果您有还原软件或自带的还原,还原一下系统有效又省事。你想想出事前你是怎么操作的?故障不会无缘无故的出现吧?将出事前下载所有东西全部卸载,在不可以,还原系统或重装,如果是硬件的问题就修修去,有问题请你追问(先看看下面的方法)。电脑无声的解决方法:有修复系统和用软件安装声卡驱动的两种解决方法(首先看看小喇叭或在控制面板中看看是否设置了静音,在通过耳机检查是否有声音输出,如果有,则是音箱或喇叭和各连线的故障引起的,在有就是声卡驱动损坏引起的,如果是请您安装合适的声卡驱动,如果是硬件问题引起的,自己又解决不了,建议检修一下去,有问题请你追问我)1、开机按F8不动到高级选项出现在松手,选“最近一次的正确配置”回车修复(这个方法可以恢复原来的驱动,如果您的电脑是Win8,进不了系统是进不了安全模式的,只有重装了)。2、如果是因更新驱动引起的故障,右击我的电脑选属性,选设备管理器找到这个驱动右键选属性/上面的驱动程序选项/选下面返回驱动程序选项按确定(如果可以进入安全模式,也是开机按F8)。3、如果故障依旧,还原系统或重装。使用系统自带的系统还原的方法:系统自带的系统还原:“开始”/“程序”/“附件”/“系统工具”/“系统还原”,点选“恢复我的计算机到一个较早的时间”,按下一步,你会看到日期页面有深色的日期,那就是还原点,你选择后,点击下一步还原(Win78还原系统,右击计算机选属性,在右侧选系统保护,系统还原,按步骤做就是了。如果有还原软件,也可以还原修复)。
采纳率:87%
来自团队:
为您推荐:
其他类似问题
马琳的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 能够从串口里面取电吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信