どの家族から学び始めるべきですか? (マイクロコントローラーでプログラミングを行ったことはありません)
今日、AVRとPICは、おそらく愛好家の間で最も一般的なマイクロコントローラーです。どちらにも非常に幅広いデバイスのバリエーションがあり、どちらを使用しても同様の結果を得ることができます。
初心者には、さまざまな理由からAVRをお勧めします。
AVRファミリー(小さなメガ)は一貫性があり、理解しやすいです。アーキテクチャは強力で最新のものであり、特にCコンパイラに適しています。もちろん、AVRもアセンブリでプログラムできます。
そのCフレンドリーなアーキテクチャにより、商用と無料の両方で利用できる高品質のCコンパイラがあります。ユビキタスGCCはAVRに移植され、 avr-gcc と呼ばれます。
開始するには、ほんの一握りの基本コンポーネント、AVRチップ自体、および ブレッドボード が必要です。 PCとAVR間のプログラミングケーブルでさえ、基本的に無料で構築できます(いわゆるウィグラー)。ただし、いくつかの商用開発キットが利用可能です。最も注目すべきは、Atmel独自の STK5 です。商用開発キットは、開始するにはより高価な方法ですが、電子機器に関する事前の知識を実際に必要としません。一部の開発キットには、たとえば LCDディスプレイ が含まれているため、興味深いことを簡単に実行できます。
豊富な 趣味のコミュニティ があります。
PICは、その独特のアーキテクチャで有名です。多くの人がPICを愛していて、嫌いな人もいます。 AVRの方がわかりやすく、極端な反対意見をそれほど引き起こさないようです。
AVRとPICの両方が、多くの本格的な商用アプリケーションで使用されています。ただし、もちろんこれらのオプションだけではありません。趣味と商業の両方で私のお気に入りのマイクロコントローラーは、Silicon LaboratoriesのC8051ファミリーです。最も注目すべきはC8051 F5 です。 [〜#〜] sdcc [〜#〜] と呼ばれるC8051ファミリ用の優れた無料のCコンパイラおよびアセンブラがあります。
要約:たくさんのオプションがありますが、それであなたを圧倒しないでください。 1つを選択して、それを使って学習を開始してください。マイクロコントローラーは、本当に始めたら、驚くほど簡単に習得できます。
私の上司は、AVRを使用して基本的な知識を1週間以内に習得しました。
AVRを提案します。一般的な趣味のプロジェクトに最適なマイクロコントローラープラットフォームとして、PICをはるかに上回っています。最も注目に値するのは、インターフェイスが簡単で人気のあるフォームファクターでハイエンドのAVRを提供するArduino(およびその他の* duino)プラットフォームを検討することです。
一部の人々は、PIC microの奇妙な(そしてCに不親切な)アーキテクチャについてコメントしました。これはより小さいPICにも当てはまりますが、16ビットチップ(PIC24F、dsPIC30など)は、Cで非常にうまく機能する非常に明確なアーキテクチャを備えています。
PIC24Fラインは、ピンをその場で機能(タイマー、A/D、シリアルI/O)に割り当てることができるため、設計が少し簡単になります。デバッグと開発のためのMPLAB環境はとても良いです。
私はいくつかのPICプログラミングを実行しました。これは、チップが1ドルか2ドルであるという考えが気に入ったからです。ただし、初心者にとって、価格だけで決定するのは時期尚早の最適化です。
アセンブラーでのプログラミングは経験です。 LEDを点滅させる前に、基本的に100の概念を学ぶ必要があります。 (ウォッチドッグタイマー、リセットピン、8ビットカウンター/オーバーフロー、遅延ループ、16進数、バイナリ、ビットマスキング、割り込み、割り込みサービスリクエスト、IOポートなど))すべて非常に教育的です-そして、マシンにとても近づく素晴らしい感覚-しかし、Cで何かをコーディングできることは、この複雑さの一部を隠して、結果に集中できるようにします。このため、私はAVRを使用すると言います(そして、価格はPICに近づいています。)
また、あなたが物事を成し遂げることに興味があるなら(そして〜$ 30を費やすことを気にしないなら) arduino をチェックしてください。私の地元の電気店でそれらを販売している男は、彼が美術の学生にそれらのトンを販売していると言っていました。 (これは、ProcessingプロジェクトのIDEを使用し、avr-gccでコードをコンパイルします。)
更新:Arduinoがインタープリターコードを実行するコメントを修正しました。 Arduinoのおおよその価格も更新しました。
私はPICよりもAVRを非常に好みます。PICのアーキテクチャは少し面倒です。これは私だけかもしれませんし、高級言語、おそらくCの方言(ある方言)で書くことができれば問題ありません。
マイクロコントローラーを初めて使用するので、パフォーマンスは問題にならないと思います。代わりに、開発ツールの入手可能性を探します。プロトタイピングボード、IDEおよびシミュレーション/デバッグツールです。個人的にはAVRが好きでした。スタジオ(Atmelの無料開発環境)はたくさんあります。
Jasonは、TIのMSP430について触れています。これは、特に非常に低電力のアプリケーションを使用している場合は、非常に優れたコントローラーです。しかし、設定が少し面倒なので、初心者にはお勧めしません。 (オシレーターの説明がユーザーマニュアルの20ページ以上をカバーしていたことを思い出します。)
私の投票は、PICの非常に多様なデバイスを利用できるようにすることです。しかし、私がPICを使い始めたとき、それらはほとんど何もなかったと言わなければなりません。多分今物事が変更されます。
PICを選択したのは、同じ価格で周辺ハードウェアが増えるためです。さらに重要なことに、同等のAVRを見つけることさえできません。ただし、レガシーの無料バージョンの1つを選択しました(PIC18以降、dspic33に移行)
IDEは無料ですが、(C)コンパイラは学生版では無料です(最初の月以降は最適化が無効になります)。初心者向けのプログラマもかなり安価です。割り込みが大量にある場合は、カウンターとタイマーは、最適化をまったく必要としない可能性があります。Microchipのプログラマーは$ 30です。
PIC12や16などのレガシーアーキテクチャに本当に取り組まない限り、HLL開発に対応するAVRに関する上記の説明は少し古いことに注意してください。
通常は、より最近のPIC18(8ビット)と16ビットアーキテクチャ(同じプリンシパルコアに基づく24F、30Fおよびdspic33)をCでプログラムします。16ビットはGCCも使用します。現在MIPSベースの32ビットも存在しますが、それらはオーディオ/ビデオ処理シーンでARMとさらに競合します。不思議なことに、現代のものはしばしば古いものより安価です。おそらくそれらはおそらく生産量が多い、より近代的なプロセスで生産されます。
もう1つの注意:一方、Microchip/PICはAtmel/AVRを購入しましたが、最初の数年間は製品ラインに大きな影響を与えないと思います。
私は本当にこの夏にリリースされる予定の60MIPsイーサネット対応16ビッターを楽しみにしています(10ユーロをわずかに超えるafaikストリートプライス)
TIの MSP4 シリーズに投票します。私はPICを幅広く(Atmelチップも少し)使用していますが、私にとって最も重要なことは、優れたデバッグIDEです。 TIはこれに関してかなり良い仕事をしており、彼らのC++コンパイラは本当にうまく機能しています。 IDE + USB-debuggerを含めて、100ドル未満で評価ボードを使用できます。PICにはより優れた、より多様なハードウェア周辺機器がありますが、MPLABはがらくたで唯一のC++ですIDEはIARによるもので、かなり高価です($ 2K以上))
MCUプログラミングとは何かを知りたいだけの場合は、Arduinoから開始することをお勧めします。初心者にやさしいIDE(Cと同様の構文を持つ処理プログラミング言語に基づいています)で、安価です。
しかし、ArduinoはAVRに基づいているため、これはあなたの疑問に答えませんでした。その最新のIDEの背後にAVR MCUがあるとは感じられません。 :)
マイクロコントローラーでの最初の経験は、 OOPic-R でした。コードをあまり気にすることなく、簡単なロボット実験を行うことができました。オブジェクト指向プログラミングフローにより、すべてが高速に動作し、プログラミングも簡単です。
最近、私は別の種類のPICを試してみました、汚れが安いです [〜#〜] picaxe [〜#〜] 。含まれているプログラミングインターフェイスは、簡単に操作できます。また、PICAXEを物理的に接続するには、プログラムするためのRS-232ポートとチップ上の2つのピンのみが必要です(レベルシフトを行う必要はありません)。私はPICAXEを非常に小さなコンテナー(SMDおよびDIPチップが利用可能)に組み込んでおり、非常にうまく機能しています。
アセンブリでのマイクロコントローラーのプログラミングの経験はありません。それを試してみたい場合は、ユーザーコミュニティが大きいため、AVRの方が適している可能性があります。
私の知る限り、ATMELのツールを使用してAVRをプログラミングする最も安い方法は、35 $のATMEL AVR ISP mkIIです。あなたは10-15 $のためのサードパーティのプログラマーを見つけることができます。
PICを使い始めたばかりの間に、はるかに成功しました。 Arduinoからシンプルなスターターキットを入手しようとしましたが、100ドルから200ドル以上のニッケルを費やして、セットアップを一緒に薄暗くしないと、良い基本キットを入手できませんでした。 PICから約$ 40の素晴らしい小さなスターターキットを手に入れました。IDE、プログラマー、デモやチュートリアル用の回路が組み込まれたスターターボードがすべて揃っています。 1回の購入。また、PIC環境のセットアップと動作は非常に簡単でした。私はそれを1時間以内に遊んでいました。
Cクロスコンパイラーの可用性に基づいて選択します。以前は、それがAVRの選択になりました。現在の状況はわかりません。
アセンブラーでPICをプログラミングしたのですが、あまり面白くありませんでした。 Cは多くの点ではるかに優れています。
私はAVRが大好きです。プログラムが簡単で、利用可能なリソース。 arduinoが動作するようなコミュニティはほとんどありません。
私は8051マイクロコントローラーを最も簡単に見つけたと思います、そしてAtmelは非常に多くの組み込み機能を備えたマイクロコントローラーを思いついたと思います...しかし、それでも人々はより好ましくはAVRを使用しています...私の手は8051ファミリーに上ります(快適であることが判明した場合)AVRの...
他のスタックオーバーフローでのAVRの優位性についての議論: http://embeddedgurus.com/stack-overflow/2009/04/pic-stack-overflow/
8ビットPICの人気は私を困惑させます。アーキテクチャがひどい–限られたコールスタックは、最初の恐ろしいものにすぎません。単一の割り込みベクトルと一緒にページングとバンキングの必要性を投げかけると、プログラミングモデルの悪夢があります。これが8ビットデバイスの標準であるとしたら、それは1つのことですが、そうではありません。 AVRアーキテクチャはPICを吹き飛ばしますが、HC05/HC08もPICの前の通りです。選択を考えると、PICよりも8051を選ぶと思います。コスト面の利点、パッケージングの利点(AtmelがSOT23-6 AVRをリリースしたばかりで、本質的には最大のデバイスと互換性のある命令セットです)またはペリフェラルセットの利点はありません。つまり、わかりません!ちなみに、これはマイクロチップの告発ではありません。彼らは素晴らしい会社であり、私は他の多くの製品、Webサイト、テクニカルサポートなどが本当に好きです(おそらく、PICが非常に広く使用されているのはこのためですか?)