注释
奇怪的。在 v0.6、v0.7 和 v0.8 之间,对串行协议进行了大量调整,但我有一个 Uno(不确定 rev 版本)并且一切正常。所以我认为这可能是某个地方的设置问题。您是否通过断开 USB 线以外的所有设备来消除任何外部影响?尝试过 Wiki 中概述的闪烁方法吗?有关您正在做什么以及如何帮助我们诊断您的问题的更多信息。 |
我正在使用 avrisp MK11。它在闪烁后读回闪光并说一切都很好。我尝试手动擦除 eeprom,然后重新刷新,但没有成功。有趣的是,无论我使用预编译的二进制文件还是自己构建,它都会在 0.6/0.7 版本拆分时中断。尝试使用屏蔽打开和关闭步进器连接和不连接。看起来它可能正在尝试从该引脚中取出一些东西?或者是 37Hz 的减慢方式? 要确定您的版本,请查看: 我只是有点不知所措 |
当您使用 AVRmkii 闪存 Arduino 时,您使用什么命令标志?您是否尝试过“-D”标志?或者将 Arduino 引导加载程序(通过 IDE 完成)闪存到 Arduino,然后改用 Arduino USB 编程器?这可能会解决它。 我不在家看 Uno,有空的时候会去看。我很确定它是 Rev 1 或 Rev 2,但它们之间几乎没有区别。 不确定 37Hz 脉冲是什么,但绝对不是步进脉冲。 |
尝试了引导加载程序的东西但没有成功。我试图进一步调试并注意到负脉冲 (630us) 的宽度取决于波特率。开始怀疑是否有办法让串行驱动程序变得无聊? |
进一步的调试显示串口变低可能是一个副作用,导致电路板以 37Hz 重置。我在 main 的第一行添加了一些微调,发现它正在重置。 对代码的进一步二进制搜索显示崩溃发生在执行通过“protocol_execute_startup”调用的“settings_read_startup_line”调用的“memcpy_from_eeprom_with_checksum”期间 |
有趣的。无法确定地告诉您 Arduino 发生了什么。“settings_read_startup_line”仅适用于 v0.8c+。您的 Arduino 的 EEPROM 或 EEPROM 代码似乎导致了崩溃。一般来说,EEPROM 设置的操作自 v0.6 以来没有太大变化。或者它可能是从特定事件序列中突然出现的一些模糊错误。很难说。我会环顾四周,看看能不能发现什么,但像这样的东西很难查明。 回到家,我确实有一个 rev1 Uno,所以我无法进行同类比较。但是,我有一种感觉,至少有几十个或更多的用户拥有一个rev2 Uno,并且没有任何这样的报道案例。这可能是一个孤立的问题。如果您发现任何新线索,请告诉我。我也会这样做。 |
我都用过,基本上没有问题。我看到了几个问题,主要是关于未枚举的设备。通常我会使用 ISP 重新刷新 arduino 引导加载程序,并通过 arduino 协议 avrdude 十六进制。 |
在带有 Win7 的 Arduino Nano 3.0 上也是如此。 |
我还看到了 AVRStudio4 和 AtmelStudio6 编译代码之间的行为变化(编译器和标准库差异)。有时编译器不会在其中一个或另一个中发出警告 – 然后就是整个’const’的东西。我发现在内存中乱写问题的地方是在 memsets 中。我先检查一下。 |
我已经用 edge 的代码试过了,但我明天会尝试 v0.6 和 v0.8。 |
我试过 grbl: 我使用过 avr-gcc: Grbl 0.51 和 0.6b 有 avr-gcc > 4.3.3 的编译错误,因为 delay.h….. 使用来自 AVR-Studio 6.0 的 avr-gcc 4.6.2,我重新启动了所有版本。 所有其他组合都可以。 |
太感谢了@sebbra. 看来 avr-gcc 4.6.2 肯定有一些东西。我会看看 memsets 作为@aldenhart建议。如果有人对此有任何其他想法,请告诉我。没有什么真的被完全排除了。 顺便问一下,我们页面上的预编译固件是怎么做的?特别是 v0.6b 到 v0.8c?不确定 v0.6b 是用什么编译的(可能是旧的 Arduino IDE avr-gcc 版本)。v0.7d+ 全部使用 Arduino IDE v1.0+ 和 avr-gcc 4.3.2(我认为)编译。 |
有趣的信息。我一直在用 4.7.0 编译。另外,我想我测试了您页面上的二进制文件并遇到了同样的问题。我今天可以再检查一次。我会尝试看看是否使用 arduino IDE gcc 修复了它。我很好奇为什么我们会在特定版本的 GCC 中看到这个问题。是否有补丁集可以修复/破坏某些东西? |
@mcclurem– 抱歉我上周工作很忙.. 它们并没有太大的不同,它们使用不同的寄存器,但是它们非常相似。 ; GNU C (AVR_8_bit_GNU_Toolchain_3.4.0_663) 版本 4.6.2 (avr) .section .text.memcpy_from_eeprom_with_checksum,”ax”,@progbits ; GNU C (GCC) 版本 4.7.2 (avr) .section .text.memcpy_from_eeprom_with_checksum,”ax”,@progbits |
我有一个运行 0.6 的 uno r2 没问题。升级到 0.7 或 0.8,串行端口流垃圾。确定范围后,它会以 37Hz 的频率周期性地发出 630us 的低脉冲。我不知道 wtf 在这里。