对ATMega328P进行编程并在没有Arduino板的情况下使用


13

我想在我的项目中使用ATMega328P,但希望在没有Arduino板的情况下进行操作。

我知道我可以使用Arduino IDE和Arduino开发板对微控制器进行编程。但是,一旦我使用Arduino IDE + Arduino板对程序进行了编程和调试,是否有可能从Arduino板上拆下微控制器并单独使用ATMega328P,而无需使用该板?

如果是,我应该对ATMega328P做哪些其他配置才能在面包板上正常工作?


结合使用ATMEGA328 P-PU和Arduino UNO引导程序....您可以在业余爱好商店以及在线商店和东西中找到它
Arthur,

使用裸芯片绝对是可行的,没有任何问题。
dannyf '17

这与您的问题不同,但是您可能会从中获得一些信息。 arduino.stackexchange.com/questions/32970/...
代码大猩猩

Answers:


7

您可以从Arduino上卸下ATMEGA,然后在自己的板上使用它,但是当在典型的Arduino板上使用时,该芯片将融合为外部晶体作为时钟源,而不是(简单但准确度较低的)内部时钟。

除非芯片当前期望的时钟源可以运行,否则您无法通过ISP更改时钟源,因此,如果要更改时钟选择,则需要在从Arduino上移除芯片之前进行选择。

但是,您也可以在外部板上提供一个时钟晶体及其两个电容器(或通常内置有此电容器的替代谐振器)。

通常情况下,芯片(甚至是为了方便使用引导加载程序预先刷新的芯片)比主板便宜,因此目前尚不清楚为什么要从Arduino移出同一芯片而不是使用另一芯片。无论如何,您都将需要USB逻辑级别的串行适配器,并且一旦有了它,就可以在板上的裸芯片上进行开发,即使您在Arduino上进行了初始测试也是如此。如果没有USB转换器,您可以在短时间内将芯片从Arduino板中拉出并从其D1和D0布线,或者将板载芯片复位以使您可以借用这些串行线而无需干扰。


1
我的想法是只使用没有板的微控制器。由于对Arduino进行编程很容易,所以我认为我可以选择ATMega。因此,我有一个Arduino uno,我的想法是只购买一个ATMega,并使用uno板对其进行编程和调试。但是,我只是安慰一下,如果我将ATMega与Arduino分开,则需要添加组件(晶体,上拉电阻..)。您能否在帖子的最后一段中解释您的意思?有没有一种简单的方法可以直接对ATMega(或任何其他微控制器)进行编程而无需使用arduino IDE?谢谢。
乔治

尽管可以跳过IDE,但使用或不使用它与电路的复杂性无关,因为可以将IDE与没有外部时钟的电路一起使用或不使用USB-在目标板上串行,通过电缆或通过ISP编程器对草图进行编程。与仅购买带有自举程序的芯片或没有自举程序的芯片,或者使用完整的Arduino作为ISP程序员,或者使用ISP无需自举程序直接加载您的草图相比,将芯片从板上放下将不会给您带来任何好处。
克里斯·斯特拉顿

7

是的,您ATMega328P无需使用arduino板就可以使用。我总是使用没有arduino的IC。有两种方法。

  1. 您可以将arduino板与IC一起使用。对IC进行编程,然后取出并在电路中使用。您将不得不使用16MHZ Oscillator电容器。
  2. 如果您没有arduino开发板,则可以使用其他编程器USBasp来对进行编程Atmega328p。在这种情况下,请勿使用直接上传按钮,而应使用文件菜单中的使用编程器选项进行上传。不要忘了选择开发板为Arduino Pro or Pro Mini (5v, 16mhz) With ATmega328,选择程序员为USBasp

注意:请参考Atmega328p引脚映射并相应地对设备进行编程。请享用!


2

搜索“构建Arduino” -您将找到大量有关如何做到这一点的how-to文章。您需要能够在印刷电路板上焊接连接(如果您想使用无焊面包板,则不需要焊接),但这确实很简单。您甚至可以先构建它,然后使用FTDI电缆在板上编程MCU。我使用Arduino开发板和无焊面包板来试验陌生的零件,但是一旦我熟悉了将要使用的所有组件,我通常会立即转到手工制作的板上。

借助Arduino开发板进行原型制作,您可以将一堆零件放在一起并快速工作,如果Arduino比最终目标更强大-f / ex,Mega 2650-您可以暂时忽略内存和I / O限制较小的设备。


0

使用独立的Arduino芯片相当容易。关于用于官方主板的芯片的一件棘手的事情是,它们融合在一起使用了安装在主板上的更快(更准确)的外部振荡器。即使购买散装的芯片也是如此,因为大多数芯片都是转售的,目的是为了安装在Arduino板上以替换烧坏的芯片,也许Digikey除外。

注意事项:Arduino被设计为原型板,在此任务上,没有什么比它做得更好。您可能需要将芯片留在Arduino板上,直到完成设计和测试电路为止。只有这样,您才可以直接连接它。如果有时钟电路,则可以就地使用它;也可以更换保险丝(请参阅下文),并使用ISP适配器和8mhz的时钟速度对Arduino进行重新编程(PlatformIO允许您这样做(允许直接进口的Arduino草图)-检查其文档页面以获取Atmel AVR插件,但您也可以查阅一些指南,了解如何向Arduino添加板文件以告诉它使用裸芯片的8mhz选项。

如果您卸下芯片以用于其他电路,则它要么需要重新添加时钟电路,要么要更换其保险丝(我将在稍后介绍)。由于多种原因,这也很难编程,因此您将需要购买一些相当便宜的硬件:

对独立芯片进行编程:Arduino的CPU本身不是设计用于与计算机对话的。您需要中介。在Uno上,这是通过具有USB功能的第二个Atmel芯片和主芯片上的引导程序完成的。这样做是因为它使用UART来上传程序,而USB芯片将PC的消息转换为UART信号。由于当芯片单独使用时,引导加载程序会有些痛苦(因为UART很挑剔,并且安装它会将芯片设置为使用外部时钟),因此,您需要为Arduino购买ISP编程器(或按照Arduino-ISP的草图和说明进行操作,这需要一个带芯片的Arduino,所以您需要花一秒钟时间进行编程。

它们可以直接通过SPI对ATMega 328进行编程,而无需引导加载程序(Internet上有很多指令;例如,搜索“使用USBAsp对裸ATMega 328P进行编程”)。这使更改和调试程序变得更加容易,而无需弹出芯片,然后再将其放回原始的Arduino板上。如果您不想使用外部晶振,则还需要更改时钟设置。

如果要调试芯片,则还可以购买FTDI适配器或其他USB-to-UART转换器,这很有用。请注意,如果没有开发板的复位电路部分(或再次添加您自己的部分),即使使用引导加载程序,也仍然无法对ATMega进行编程。为此,将接地,RX和TX引脚连接到适配器。您可能会或可能不想连接VCC线,但是如果有很多东西连接到芯片和/或它有自己的电源,建议不要这样做。请注意,在连接RX和TX时,它们需要互换。也就是RX to TX和TX to RX-您希望芯片RX(接收)适配器正在TX(发送)的内容,反之亦然。

时钟电路并不难构建,但是它需要一些您可能没有的组件。因此,要更改时钟源,请访问http://www.engbedded.com/fusecalc/并选择ATMega 328P。默认值是好的,但是您可能需要启用EEPROM保持擦除状态并禁用8分频时钟或调整掉电设置。请勿触摸其他任何东西(禁用复位或SPI或启用DebugWire会导致“乐趣”,这需要HV程序员进行修复)。完成后,将其提供的命令粘贴到AVRDude命令。您将需要更改-c选项(-p已经设置为ATMega 328P,但是对于非P 328则失败-不要购买),并可能添加-P选项(用于Port)。不要忽略小写的-u选项,否则它将拒绝更新保险丝。

avrdude -p m328p -v -c usbasp -B 100 -u [add extras here: (-P <PORT>) <fuse set command here>]

请注意,如果您购买USBASP(确保它具有三套跳线!),尽管它们都是我最喜欢的编程器,但它们可能没有支持-B选项的更新固件(您可能需要)。这意味着您需要通过六针编程端口将其连接到Arduino,使用与编程Arduino的Bootloader完全相同的方式,然后使用Arduino-ISP草图对新的固件给程序员(搜索“通过arduino-as-isp更新usbasp固件”)!作为参考,这通常意味着电缆面临来自董事会的身上移开,你可能不得不草图编程之前连接电缆。还启用USBASP(5V)上的编程器电源跳线和“自编程”跳线。(有关电源和程序跳线(JP2)的位置,请参阅https://forum.arduino.cc/index.php?topic=560719.0)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.