ATMega328Pをプログラムし、Arduinoボードなしで使用する


13

私のプロジェクトにATMega328Pを使用したいのですが、Arduinoボードを使用せずに使用したいと思っています。

Arduino IDEとArduinoボードを使用して、マイクロコントローラーをプログラムできることを知っています。しかし、Arduino IDE + Arduinoボードを使用してプログラムをプログラミングおよびデバッグした後、Arduinoボードからマイクロコントローラーを取り外し、ボードなしでATMega328Pを個別に使用することは可能ですか?

はいの場合、ブレッドボード上で正しく動作するためにATMega328Pを実行する必要がある追加の構成は何ですか?


Arduino UNOブートローダーでATMEGA328 P-PUを使用します。...ホビーストアやオンラインなどで見つけることができます☺–
アーサー

ベアチップを使用することは絶対に実行可能であり、何の問題もありません。
ダニーフ

これはあなたと同じ質問ではありませんが、そこからいくつかの情報を得るかもしれません。 arduino.stackexchange.com/questions/32970/...
コードゴリラ

回答:


7

ArduinoからATMEGAを取り外して独自のボードで使用できますが、通常のArduinoボードで使用すると、チップは(単純ではあるが精度が低い)内部クロックではなく、クロックソースとして外部クリスタルに融合されます。

現在チップが期待しているクロックソースが動作している場合を除き、ISPでクロックソースを変更することはできません。そのため、クロック選択を変更する場合は、Arduinoからチップを削除する前に変更する必要があります。

ただし、外部基板上にクロッククリスタルとその2つのコンデンサ(またはこれが組み込まれていることが多い代替の共振器)を提供することもできます。

通常、チップ(利便性のためにブートローダーで事前にフラッシュされたものでも)はボードよりも安価であるため、別のチップを使用するのではなく、同じチップをArduinoから移動する理由は不明です。とにかくUSB論理レベルのシリアルアダプターが必要になります。Arduinoで初期テストを行っても、ボード上のベアチップで開発を行うことができます。USBコンバーターがない場合は、ピンチでArduinoボードからチップを引き出してD1とD0からワイヤを実行するか、オンボードチップをリセット状態に保持して、シリアルラインを借りることができます干渉。


1
私の考えは、ボードなしでマイクロコントローラーのみを使用することです。Arduinoをプログラムするのは簡単なので、私はATMegaを選ぶかもしれないと思いました。だから、私はArduino unoを持っています、私のアイデアは1つのATMegaを購入し、unoボードを使用してそれをプログラムしデバッグすることです。ただし、ATMegaをArduinoから分離する場合、コンポーネント(水晶、抵抗を引き上げるなど)を追加する必要があることを再確認しました。投稿の最後の段落で何を意味するのか説明していただけますか?arduino IDEを使用せずにATMega(または他のマイクロコントローラー)を直接プログラムする簡単な方法はありますか?ありがとう。
ジョージ

IDEをスキップすることはできますが、IDEを使用するかしないかは、外部クロックの有無に関係なくIDEを使用できるかどうかにかかわらず、回路の複雑さに本質的に無関係です。USB-ターゲットボード、ケーブル、またはISPプログラマーでスケッチをプログラミングすることでシリアル化できます。チップをボードからヤンクすると、ブートローダー付きまたはチップなしでチップを購入して自分でロードするか、そのままのArduinoをISPプログラマーとして使用するか、ISPを使用してブートローダーなしでスケッチを直接ロードすることに比べて、何も得られません。
クリスストラットン

7

はい、ATMega328Parduinoボードなしで使用できます。私は常にarduinoなしでICを使用しています。それを行うには2つの方法があります。

  1. arduinoボードをICで使用できます。ICをプログラムしてから取り出し、回路で使用します。16MHZ Oscillatorコンデンサを使用する必要があります。
  2. arduinoボードを持っていない場合は、他のプログラマーを使用してをプログラミングできUSBaspますAtmega328p。この場合、ファイルメニューのプログラマオプションを使用してアップロードを使用する代わりに、直接アップロードボタンを使用しないでください。ボードとしてArduino Pro or Pro Mini (5v, 16mhz) With ATmega328、プログラマーとして選択することを忘れないでくださいUSBasp

Atmega328pピンマッピングを参照し、それに応じてデバイスをプログラムします。楽しい!


2

「Arduinoを構築する」を検索してください-それを行うためのハウツー記事がたくさんあります。プリント基板の接続をはんだ付けする必要があります(はんだなしのブレッドボードを使用したい場合でもそうではありません)が、それは本当に簡単です。最初にそれを構築し、FTDIケーブルを使用してPCB上でMCUをプログラムすることもできます。Arduinoボードとはんだなしブレッドボードを使用してなじみのない部品を実験しますが、通常、使用するすべてのコンポーネントに精通したら、すぐに手作りのボードに移動します。

Arduinoボードを使用してプロトタイプを作成すると、多数の部品をまとめてすばやく動作させることができます。Arduinoが最終ターゲット(f / ex、Mega 2650)よりも機能している場合、一時的にメモリとI / Oの制約を無視できます。小さいデバイスの。


0

スタンドアロンのArduinoチップを使用するのはかなり簡単です。公式ボードに使用されているチップの注意点の1つは、ボードに搭載されているより高速な(より正確な)外部オシレーターを使用するために融合されていることです。これはルーズチップを購入した場合でも適用されます。これは、Digikey製のものを除き、ほとんどが焼けたものを交換するためにArduinoボードにインストールする意図で再販されるためです。

警告:Arduinoはプロトタイピングボードとして設計されており、このタスクよりも優れた機能はほとんどありません。回路の設計とテストが完了するまで、チップをArduinoボードに残しておくことができます。その後、直接接続します。クロック回路が所定の場所にある場合、インプレースで使用できます。または、ヒューズを変更し(後述)、ISPアダプターと8mhzのクロック速度でArduinoを再プログラムできます(PlatformIOを使用する、 Arduinoスケッチのインポート)-Atmel AVRプラグインのドキュメントページを確認しますが、ベアチップに8mhzオプションを使用するようにボードファイルをArduinoに追加する方法に関する多くのガイドを参照することもできます)

別の回路で使用するためにチップを取り外す場合、そのクロック回路を再度追加するか、ヒューズを変更する必要があります(すぐに説明します)。また、いくつかの理由でプログラミングが難しいため、かなり安価なハードウェアを少し購入することをお勧めします。

スタンドアロンチップのプログラミング:ArduinoのCPUは、コンピューターと通信するようにネイティブに設計されていません。仲介者が必要です。Unoでは、これはUSB機能を備えた2つ目のAtmelチップと、メインチップ上のブートローダーを介して行われます。それは、USBチップがPCのメッセージをUART信号に変換する一方で、プログラムのアップロードにUARTを使用するということです。チップが単独である場合はブートローダーが多少苦痛になるため(UARTがうるさく、インストールするとチップが外部クロックを使用するように設定するため)、Arduino用のISPプログラマーを購入する必要があります(またはArduino-as-ISPのスケッチと指示に従って独自に作成します。これには、チップが搭載されたArduinoが必要であるため、プログラムするのに2秒必要です。

これらは、ブートローダーなしで、SPIを介してATMega 328を直接プログラムできます(インターネット上には多くの指示があります。たとえば、「裸のATMega 328PをUSBAspでプログラムする」を検索してください)。これにより、チップを取り出して元のArduinoボードに戻す以外に、プログラムの変更とデバッグが非常に簡単になります。また、外部クリスタルを使用したくない場合は、クロック設定を変更するために必要です。

チップをデバッグする場合は、FTDIアダプターまたはその他のUSB-UARTコンバーターも購入すると便利です。ただし、ボードのリセット回路部分がない場合(または、独自の回路を追加する場合)、ブートローダーを使用してもATMegaをプログラムすることはできません。そのためには、グランド、RX、およびTXピンをアダプターに接続します。VCCラインを接続する場合としない場合がありますが、チップに多くのものが接続されている場合や、独自の電源がある場合は接続しないことをお勧めします。RXとTXは、接続するときに交換する必要があることに注意してください。つまり、RXをTXに、TXをRXに-アダプタでTX(送信)しているものをRXに受信(受信)し、逆も同様です。

クロック回路を構築するのは難しくありませんが、必要ないコンポーネントがいくつか必要です。したがって、クロックソース変更するには、http: //www.engbedded.com/fusecalc/ にアクセスして、ATMega 328Pを選択します。デフォルトは良好ですが、EEPROMのキープオン消去を有効にし、8分周クロックを無効にするか、ブラウンアウト設定を調整することができます。他に手を触れないでください(リセットまたはSPIを無効にするか、DebugWireを有効にすると、HVプログラマが修正する必要がある「楽しい」結果になります)。完了したら、提供するコマンドをAVRDudeコマンドに貼り付けます。-cオプションを変更する必要があります(-pはすでにATMega 328Pに設定されていますが、非P 328では失敗します-それらを購入しないでください)。おそらく-Pオプション(ポート用)を追加します。小文字の-uオプションを省略しないでください。省略しないと、ヒューズの更新が拒否されます。

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

あなたがUSBASPを購入した場合(必ずそれがジャンパの3セットを持って作る!)ことを、すべての彼らは私の好きなプログラマであることを、彼らは-Bオプション(これはあなたがよおそらく必要性)をサポートする更新されたファームウェアをしていない可能性のために。つまり、Arduinoのブートローダーをプログラムするのとまったく同じ方法で、6ピンプログラミングポートを介してArduinoに接続する必要がありますが、Arduino-as-ISPスケッチを使用して新しいプログラマへのファームウェア(「arduino-as-ispを介してusbaspファームウェアを更新する」を検索)!参考までに、これは通常、ケーブルがボードの本体と反対側を向いていることを意味します。おそらく、スケッチを事前にプログラムする必要があります。ケーブルを接続します。また、USBASP(5V)のプログラマーからの電源ジャンパーと「自己プログラム」ジャンパーを有効にします。(電源およびプログラムジャンパー(JP2)の場所については、https://forum.arduino.cc/index.php?topic = 560719.0を参照してください)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.