好吧,我已经玩够了 Arduino,我觉得它很舒服。现在所做的任何事情都比它的 Arduino 方面更多地学习电子产品。
我学习的下一步是什么?Arduino是一个组合的程序员/控制器,所以大概我需要打破这个链接并开始使用与控制器分开的控制器芯片,我猜?有人可以指出我正确的方向吗?
好吧,我已经玩够了 Arduino,我觉得它很舒服。现在所做的任何事情都比它的 Arduino 方面更多地学习电子产品。
我学习的下一步是什么?Arduino是一个组合的程序员/控制器,所以大概我需要打破这个链接并开始使用与控制器分开的控制器芯片,我猜?有人可以指出我正确的方向吗?
我同意 Joby 的观点——Arduino 很棒,但我总是被他们围绕在我身边的框架所扼杀。我将继续在您的 Arduino 上使用直接 C 并构建他们从头开始提供的许多库功能。我通常更喜欢深度而不是广度——不要只是从另一个微控制器系列开始,使用更多提供的框架。了解更多关于如何自己实现其中一些功能的信息。
从一个工作程序开始,用您自己的版本一次一个函数替换 Arduino 库调用。如果您还没有,您将学到很多关于控制寄存器、时序、位操作等的知识。深入阅读 ATMega328 数据表 - 您需要的一切都在其中。
尝试不同的 IDE,例如 AVR Studio 或 Code::Blocks。学习 GCC 工具链。尝试更高级的编码技术 - 单元测试、覆盖率、分析、lint/splint 检查。在 Arduino 上安装 RTOS。
组合的程序员/控制器并不是弱点 - 它只是一种设计选择。唯一可能来自它的“弱点”是缺乏在线调试。买一个 AVR Dragon,你就可以花 50 美元吃掉它。
以下是使用 AVR 和 C 的一些技巧。
我认为接下来要学习什么取决于您想做什么而 Arduino 无法做到。也就是说,我认为编写类似的芯片来做同样的事情没有多大意义,但方法更难。
以下是一些 Arduino 的弱点:
我可以想象两个方向:
如果您评论哪个方向更有吸引力,我可以添加更多细节。(第二个肯定更便宜。)
学习 I2C、SPI、1wire 并尝试用这些接口连接传感器。阅读大量此类传感器的数据表,并尝试了解其中的所有内容。卡住时问问题。学习 MODBUS (RTU/ASCII/TCP) 或类似的协议,一旦您将设备嵌入到设备中,它就可以向世界开放。学习通用电子学并尝试连接继电器、三端双向可控硅开关,什么是上拉和下拉,什么是源和下沉,如何绘制原理图并将基本驱动程序连接到您的 MCU。