Arduinoを卒業してマイクロコントローラを直接使用する方法は?


19

私はArduinoプロジェクトに取り組んできました。Arduinoを使用してすべてが機能するようになったら、Arduinoを使用しないソリューションに移行したいと思います。つまり、Arduinoボードを使用せずにマイクロコントローラーを使用したいと思います。これにより、シールドなしの単一ボードが可能になります。

ブレッドボードで自分のArduinoを作成する方法があることは知っていますが、それは私がやろうとしていることではありません。

私はこれをどのように行うのか本当によくわかりません。

より良い選択肢がない限り、私はArduinoが使用するATmega328を使用することに傾倒しています。開発ツールは無料で入手できるか、少なくともそれほど高価ではないことを理解しています。

この質問の目的のために、私の回路に+ 5Vを供給できると仮定します。

最初の質問は、MCUのプログラミング方法です。私は2つのオプションがあると信じています:

  1. プログラマを購入し、MCUをプログラムしてから、チップを回路に配置します。
  2. インサーキットプログラミングのサポートを含めるように回路を設計します。

オプション#1を選択すると、プログラムされたチップを回路に挿入するのと同じくらい簡単だと思います。他に何もいらない もちろん、ソフトウェアを変更するのは不便です。

しかし、オプション#2については、必要なものがわかりません。少し読んだところから、プログラミングケーブルとボード上のコネクタが必要だと思います(どのタイプですか?)。次に、(適切に)コネクタをATmegaの特定のピンに配線していると思います。

いずれにしても、Atmelスタジオが必要です。

第二に、電源以外に、Arduinoには絶対に必要なものがありますか?多分リセットスイッチでしょうか?


2
Arduinoを使用してAVRをプログラムできます。個人的には、IDEではなくコマンドラインツールとメイクファイルを使用します。
ジッピー14

1
この質問は、Arduino Stack Exchangeにより適している可能性があります。arduino.stackexchange.com パブリックベータになりました
akellyirl 14

4
しかし、私の目標は、arduinoのないデザインです。
リック14

「私が絶対に必要なものはarduinoにありますか?」UART(別名シリアルポート)ピンが必要になると思いますが、デバッグには便利です。
vvy 14

Atmelスタジオは絶対に必要ではありません。チップをコマンドライン(およびテキストエディター)からプログラムします。大規模なプロジェクトには許可されていますが、Atmelスタジオは間違いなく簡単になります
クリスラプランテ14

回答:


10

Atmelの素晴らしい世界へようこそ。私の趣味とプロの経験に基づいて、あなたの質問に対するいくつかの答えを提供します。

何も気にしないでください、しかし、インサーキットプログラミング。あなたが完璧なコーダーでなければ、プログラムするたびにチップを取り外すのは悪夢です。AVRISPmkIIをエントリーレベルのプログラミングツールとしてお勧めします。欠点は、サポートされているハードウェアデバッグがないことです。代替手段はドラゴンですが、私はその経験がありません。JTAGICEmk3は優れたデバッグツールと言えます。

Atmelスタジオはプログラミングに適しています。実際、私のお気に入りの組み込み開発環境です。AVRDUDEやAVR-GCCなどのCLIツールを使用できますが、IDEが自動的に処理します。

要約すれば:

プログラミングのみ(簡単、プラグアンドプレイ)またはドラゴン(アドバイスを提供できません)のためにAVRISPを購入します。

ボード上で、ICSPピンを6ピンデュアル行0.100 "ヘッダーに引き出します。接続はこのデータシートに記載されています。

リセットスイッチは必要ありません。


1
EvUSBaspで優れた結果が得られました。
イグナシオバスケス-エイブラムス14

ボードのICSPピンを取り出したら、インサーキットプログラミング専用にする必要がありますか、それともGPIOピンとして使用できますか?
リカルド14

2
これらはSPIと機能を共有するため、GPIOとして使用できます。プログラマは、チップをリセット状態にしてから通信します。
HL-SDK 14

1
マイクロコントローラプログラミングの開始に関する関連チュートリアルシリーズ。彼らはAVRMegaを使用し、ISPとLEDを点滅させる豪華なCコードを配線するプロセスを通過します。
MDMoore313 14

1
@ HL-SDKは、RESETピンのみをICSP専用にする必要があるのは正しいことですが、他のピンにも同様に注意が必要です。つまり、おそらく入力ピンではなく出力ピンとして使用する必要があります。 ICSPモードでは外部回路に邪魔されません)、それらに接続されているものはすべて、プログラミングトラフィックが送信するランダムな信号の組み合わせに悪影響を与えないように設計する必要があります。
マイクロテリオン14年

10

一度に「卒業」する必要はありません。変換方法は次のとおりです。

はじめに、Arduinoを使用し続けましたが、Arduinoライブラリへの呼び出しを一度に1行ずつレジスタ読み取りと書き込みに変換し、プログラムがまだ機能するかどうかを確認しました。このように、レジスターの使用に慣れ、レジスターがArduinoのやり方と根本的に不連続ではないことを知りました。digitalWrite()のようなArduino関数は、単にレジスタを操作するだけです。スケッチで直接読み書きできます。

次のステップは、ATTiny 85をブレッドボードに入れ、ArduinoをISPとしてプログラムすることです(http://highlowtech.org/?p=1695)。ブレッドボード電源を購入し、ATTinyの内部発振器を使用する場合、これには笑うほどの少ない配線が必要です。Arduino IDEを使用してコンパイルしましたが、できる限りレジスタを使用し続けました。

次に、無料のCrosspackコマンドラインツールチェーンをインストールし、点滅するプログラムをコンパイルしました。さらに試行錯誤を重ねた結果、私はattinyをavrdudeのみでプログラミングし、Arudinoエコシステムの外に完全に留まりました。

コマンドラインツールのみで瞬きを達成したら、Arduinoから解放されます。さまざまな周辺機器とそのレジスターを調べてみると、すぐに完全に自然になります。

このすべての後、私は頻繁にArduinoを使用していることに気づきます。レジスターの説明を熟読するのはちょっと残念だとわかりました。あなたがする必要がない場合、それを行う意味がありません。ただし、その方法を知っておくと便利です。


8

上記のHL-DSKのコメントに同意します。余分なお金を使って、デバッグ機能を備えたプログラマーを獲得したいと思います。デジキーで約110ドルのJTAGICE3を使用しています。

ISPプログラミングについてはこちらをご覧ください。SPI接続を引き出す方法を示します。チップ上のSPI接続はATmegaデータシートに記載されています。MISO / MOSI / SCK / RESETピンについては2ページをご覧ください。プログラマは、リセットラインを制御できる必要があります。プログラマが切断された後にチップが実行されるように、リセットラインでプルアップ抵抗を使用することを忘れないでください。

ここで 2x3ヘッダーを取得します。または、分離ヘッダーを使用して独自のヘッダーを作成します。


2
次に、デバッグをサポートするプログラマーを取得します。今月の初め、私はPIC32プロジェクトの深い終わりに追い込まれました。他の誰かが最低レベルのビットバンギング機能を記述している場合でも、内部で見なければならないのが単一の赤/緑のLEDである場合、問題がどこにあるのかを理解するのがどれほど難しいかは考えたくさえありません。
ダンニーリー14

これは、プロのツールを手に入れれば、後戻りはできません。
マットヤング14年

7

ArduinoとベアATmega328の違いは2つだけです。Arduino Bootloader、およびArduinoライブラリ。ライブラリを使用せずに、裸のCまたはC ++でArduinoをコーディングできます。代わりにアセンブリを使用することもできます。ブートローダーを使用すると、(わずかに)より複雑なインサーキットシリアルプログラミング(基本的にSPI)を実行することなく、シリアルを介して新しいコードをロードできます。

標準プログラミングライブラリとavr-gccは、ほぼすべてのIDEで使用できます。他の人が言うかもしれないこととは反対に、Arduinoのコーディングは基本的に裸のマイクロコントローラーのコーディングに似ていますが、パフォーマンスを犠牲にして利便性をいくつか追加しています。


4
ただし、裸のATmega328でArduinoブートローダーとライブラリを使用することもできます。
イグナシオバスケス-アブラムス14年

@ IgnacioVazquez-Abramsは、それを裸の骨のアルドゥイノ、ナッチに変えます。
通行人14年

5

事前にブートされたAtmega328Pチップを購入し、FTDIケーブルとavrdude でインサーキットでプログラムします。これは、Arduinoをプログラムする方法と同じです。Eclipse IDEは好きですが、Atmel Studio、Arduino IDE、emacs、またはコマンドラインでの裸足など、好みの環境を使用できます。

このボードは、プログラミング、電源、およびターミナル用のケーブルを使用して、Helloプログラムでテストするのに十分に完成した時点で建設中です。-それはまだその電源が必要になりますLM2936私の場合には、超低quiescient現在の電圧レギュレータとバッテリコネクタを-とプロジェクトが必要になります他のものは何でもオンボードのコンポーネントおよびオフボードの接続:

NotDuino

Arduinoを持っているので、Arduinoを使用してブートローダーをインストールすることで、少しのお金を節約し、プログラムされていないチップを使用できます。素敵な青いピン配列のラベルは、私の失業率を抑えるのに役立ちます!私は16MHzの水晶を使用していますが、内部発振器で動作できる場合、部品数は3減ります(xtalと2個のコンデンサ)。


2

ハードウェアが提供され、ソフトウェアがC言語オーバーレイであるArduinoから移行するには、いくつかの提案をしたいと思います。人々がいくつかの有用な答えを投稿しているように見えますが、私はあなたがいる場所にいたので、少し違うことをします。

  1. デバッガーを選択します。デバッガーは、マイクロコントローラーをプログラムする機能と、「ステップバイステップ」処理、特定のコード行でプログラムを一時停止してコードの状態を確認できる「ブレークポイント」を含むデバッグ機能を提供します。ISP(In-Circuit Programming)はシリアルインターフェイスであり、3つのピンを使用しますが、初心者でも十分な機能は提供しません。JTAGインターフェースは4つのピンを使用し、ブレークポイントなどの使用に関して基本的に完全な機能を提供します。人々は通常、「比較的」設定が簡単であるため、ISPに傾いていますが、JTAGを設定するのは難しくありませんが、個人的な好みにもなります。そして、デバッグワイヤがあります デバッグワイヤではなくISPを使用するため、この説明ではスキップしたいインターフェイスです。
  2. ISPとJTAGの両方の機能を備えたデバッガを購入します。あなたは一度購入すると思いますが、デザインを変更したい場合は将来的にあなたを助ける良いものを購入すると思います。AVR DragonまたはJTAGICEをお勧めします。どちらもUSB経由でPCに接続し、どちらもISPとJTAGを提供します。JTAGICEはAVR Dragonより少し高価ですが、AVR Dragonをお勧めします。
  3. ほとんどのAtmelマイクロコントローラーはISP機能を備えていますが、JTAGを備えているものは多くありません。AT90S2313やATTINYシリーズなどの小型マイクロコントローラーは、サイズが小さいためISPシリーズを使用します。しかし、いくつかのLEDを点滅させるだけでなく、LCD画面やキーパッドなどとインターフェースを取りたい場合は、少し大きいマイクロコントローラーを使用することをお勧めします。5V電源を使用している場合、ATMega8またはATMega16またはATMega128(私のお気に入り)をお勧めします。ATMega16およびATMega128には、ISPおよびJTAGインターフェイスがあります。
  4. IDEに関する限り、以前はコードビジョンとAVR Studioを使用していましたが、すべてのニーズを満たすAtmel Studio 6.0以降を使用することをお勧めします。

マイクロにきれいでスムーズなインターフェイスを提供するために、私が独力で学んだ概略図のアイデアがいくつかあります。ヘルプが必要な場合はお知らせください。


1

正直なアドバイス

Arduinoは初心者向けです。ここから2つの方法があります

方法1:マイクロコントローラー/プロセッサーの仕組みを理解する(望ましいアプローチ)

Atmel 8051

それによって、マイクロp / cのアーキテクチャとアセンブリコード(またはベアメタル)を学習することを意味します。このための出発点が必要な場合は、最も単純なアーキテクチャとアセンブリ命令セットを備えた8ビットマイクロコントローラーであるAtmel 8051をお勧めします。他の最新の32ビットまたは64ビットプロセッサには、それから派生したアーキテクチャがあります。このマイクロコントローラーは、良い出発点であり、多くの文献が入手できるため、私の大学院課程の一部としてまだ使用されています。

ISPボードを作成するためのキットが販売されています(Processoの完全に組み立てられたキット、ボードキットにコンポーネントをはんだ付けし、開発ボードを自分で構築するには、わずか数個のICとRS-232ケーブル/ソケットが必要です)

ローテクなので、すべてのコンポーネントが安価になります。

方法2:ハードウェアとソフトウェアのアプローチにジャンプする(あまり好ましくない)

ラズベリーパイ ビーグルボーンブラック

これは、ほんの少しのアセンブリに浸り、「タップアウト」された、またはハードウェアよりもソフトウェアに移行したい人々のためのアプローチです。ARMプロセッサを搭載したRaspberry PiやBeagleBoneBlackのような別の趣味ボードに移行して、創造性のあるプロジェクトを開始することをお勧めします。


0

Arduinoボードを使用できます。サンドボックスライブラリと環境を使用せずに、すべてを直接プログラムできます。シリアル/ uartを介してブートローダーを使用してプログラムする場合は、正常に機能します。しかし、ほとんど/すべてのavrパーツは別の方法でプログラムすることもできます。パーツはリセット状態に保持されるため、ブリック可能ではありません。arduinoや他のマイクロコントローラーから、またはftdiが何らかのフレーバーから抜け出して、簡単にspiを噛むことができます。sparkfunには、spiヘッダーが明らかなarduinoボードと非arduinoボード(たとえば32u)があります。また、ftdiのライブラリまたはLinuxに付属のftdiライブラリを使用して簡単にbitbangできるftdiブレイクアウトボード。

各パーツのドキュメントには、起動オプションとフラッシュプログラミングオプションが記載されています。はい、いくつかの部品を購入して独自のブレイクアウトボードを作成することは難しくありません。既存のブレイクアウトまたは単純な評価ボードを使用し、必要に応じてクローンを作成するまで、それを行いません。理想的には、内部rc発振器、基本的には電源、グランド、プログラミングピンを備えた部品から始めます...

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