どのファミリーから学び始めるべきですか? (マイクロコントローラでプログラミングをしたことはありません)
20 に答える
今日、AVR と PIC は、おそらく愛好家の間で最も一般的なマイクロコントローラーです。どちらも非常に幅広いデバイスのバリエーションがあり、どちらを使用しても同様の結果を得ることができます。
初心者には、さまざまな理由から AVR をお勧めします。
AVR ファミリ (タイニー、メガ) は一貫性があり、理解しやすいものです。アーキテクチャは強力で最新のもので、特に C コンパイラに適しています。もちろん、AVR はアセンブリでプログラムすることもできます。
C に適したアーキテクチャであるため、高品質の C コンパイラが商用および無料で利用できます。どこにでもある GCC は AVR に移植され、avr-gccと呼ばれます。
始めるために本当に必要なのは、いくつかの基本コンポーネント、AVR チップ自体、およびブレッドボードだけです。PC と AVR の間のプログラミング ケーブルでさえ、基本的に無料で作成できます (いわゆるウィグラー)。ただし、いくつかの商用開発キットが利用可能で、最も顕著なのは Atmel 独自のSTK500です。商用開発キットは、開始するためのより高価な方法ですが、エレクトロニクスに関する予備知識はほとんど必要ありません。一部の開発キットには、たとえばLCD ディスプレイが含まれているため、興味深い作業を簡単に行うことができます。
豊富な愛好家コミュニティがあります。
PIC は、その独特のアーキテクチャで有名です。多くの人はこの点で PIC を好みますが、嫌いな人もいます。AVR はより単純で、極端で極論的な意見をあまり引き起こさないようです。
AVR と PIC は両方とも、多くの本格的な商用アプリケーションで使用されています。ただし、もちろん、それらが唯一のオプションではありません。趣味と商用の両方で個人的に気に入っているマイクロコントローラは、Silicon Laboratories の C8051 ファミリで、最も有名なのは C8051 F530です。SDCCと呼ばれる C8051 ファミリ用の無料の優れた C コンパイラおよびアセンブラがあります。
まとめ: 選択肢はたくさんありますが、それに圧倒されないようにしてください。1 つ選んで学習を開始してください。マイクロコントローラは、実際に始めようと決めたら、驚くほど簡単に習得できます。
私の上司は、事前の経験がなくても、AVR を使用して 1 週間以内に基本を習得しました。
AVRをお勧めします。一般的な愛好家のプロジェクトに最適なマイクロコントローラ プラットフォームとして、PIC をはるかに上回っています。最も注目すべきは、Arduino (およびその他の *duino) プラットフォームを考えてみてください。これは、インターフェースが簡単で一般的なフォーム ファクターでハイエンドの AVR を提供します。
私はいくつかのPICプログラミングを行いました-主に私はチップがたった1ドルか2ドルであるという考えが好きだったからです。ただし、初心者にとって、価格だけで決定を下すのは時期尚早の最適化です。
アセンブラでのプログラミングは経験です。LEDを点滅させる前に、基本的に100の概念について学ぶ必要があります。(ウォッチドッグタイマー、リセットピン、8ビットカウンター/オーバーフロー、遅延ループ、16進、バイナリ、ビットマスキング、割り込み、割り込みサービス要求、IOポートなど)これはすべて非常に教育的であり、非常に接近するのは素晴らしい気分です。マシンに-しかし、Cで何かをコーディングできると、この複雑さの一部が隠されるので、結果に集中できます。このため、私はAVRを使用すると言います。(そして、価格は現在PICに近いと思います。)
また:物事を成し遂げることに興味があるなら(そして30ドルを費やしてもかまわない)、arduinoをチェックしてください。私の地元の電気店でそれらを売っている人は、彼が芸術の学生にそれらをたくさん売っていると言っていました。(ProcessingプロジェクトのIDEを使用し、avr-gccを使用してコードをコンパイルします。)
更新:Arduinoがインタプリタコードを実行するというコメントを修正しました。また、Arduinoのおおよその価格を更新しました。
arduinoの大したことはわかりません。実際に何が起こっているのかを理解するチャンスが台無しになります。私は定期的に AVR と PIC でプログラムしていますが、基本的に大きな違いはありません。しかし、初心者が arduino から遠ざかるのは簡単かもしれませんが、それが落とし穴です。ハードウェア アーキテクチャの概念が得られず、舞台裏で何が起こっているのかわかりません。初心者が効果的なプログラマーになるために学ぶ必要があることです。私が初心者だったとき、ATmega32、20 ドルの USBasp プログラマー、AVR Studio (無料)、および AVRDude (WinAVR に付属) から始め、AVR Freaks の入門チュートリアルに従いました。それはあなたが必要とするすべてです、完了!!!
PSマイクロのプログラミング方法を本当に学びたいのであれば、マイクロのアセンブラを学ぶ時間があれば、arduinoを使い始めた人の20倍のCプログラマーになります。
一部の人々は、PIC micro の奇妙な (そして C に優しくない) アーキテクチャについてコメントしました。これは小型の PIC にも当てはまりますが、16 ビット チップ (PIC24F、dsPIC30 など) には、C で非常にうまく機能する非常に明確なアーキテクチャがあります。
PIC24F シリーズには、機能 (タイマー、A/D、シリアル I/O) にピンをオンザフライで割り当てる機能があり、設計が少し簡単になります。デバッグと開発のための MPLAB 環境は非常に優れています。
私は PIC よりも AVR を非常に好みます。PIC のアーキテクチャは少し面倒です。これは私だけかもしれませんが、高級言語、おそらく C の方言で書くことができれば問題ありません。
あなたはマイクロコントローラーを初めて使用するので、パフォーマンスが問題になることはないと思います。代わりに、プロトタイピング ボード、IDE、シミュレーション/デバッグ ツールなどの開発ツールが利用できるかどうかを調べます。個人的には AVR Studio (Atmel の無料開発環境) がとても気に入りました。
Jason は、TI の MSP430 について言及しています。これは、特に非常に低電力のアプリケーションを使用している場合に、非常に優れたコントローラーです。ただし、設定が少し面倒なので、初心者にはお勧めしません。(オシレーターの説明は、ユーザーマニュアルの20ページ以上に及んだことを思い出します。)
私は TI のMSP430シリーズに投票します。私は PIC を広範囲に使用してきました (Atmel チップも少し使用しました)。私にとって最も重要なことは、優れたデバッグ IDE です。TI はこれに関して非常に優れた仕事をしており、TI の C++ コンパイラは非常にうまく機能します。IDE + USB デバッガーを含めて、100 ドル未満で評価ボードを使用できます。PICにはより優れた多様なハードウェア周辺機器がありますが、MPLABはがらくたであり、PIC用の唯一のC++ IDEはかなり高価なIARによるものです。(2,000 ドル以上)
利用可能なデバイスの多様性が非常に高い PIC に投票します。しかし、私が PIC を使い始めたとき、PIC はそれ以外の何物でもなかったと言わざるを得ません。たぶん今は状況が変わっています。
私/私たちが PIC を選んだ主な理由は、同じ価格でより多くの周辺ハードウェアがあるためです。さらに重要なことに、同等の AVR を見つけることさえできません。ただし、従来の無料バージョンの1つを選択しました(PIC18で始まり、dspic33に移行)
IDE は無料で、(C) コンパイラは学生版では無料です (最初の 1 か月後に最適化が無効になります)。エントリーレベルのプログラマーもかなり安いです。割り込み、カウンター、タイマーがたくさんある場合は、最適化がまったく必要ない可能性があります。Microchip 社のプログラマは 30 ドルです。
PIC12 や 16 のようなレガシー アーキテクチャを実際に使用しない限り、HLL 開発に対応する AVR に関する上記のコメントは少し古くなっていることに注意してください。
通常、最新の PIC18 (8 ビット) と 16 ビット アーキテクチャ (同じ主要コアに基づく 24F、30F、および dspic33) を C でプログラムします。16 ビットは GCC も使用します。現在、MIPS ベースの 32-bitter もありますが、オーディオ/ビデオ処理シーンでは ARM に匹敵します。不思議なことに、最近のものは古いものよりも安いことがよくあります。おそらくそれらは、歩留まりの高い、より近代的なプロセスで生産されています。
別のメモ: 一方、Microchip/PIC は Atmel/AVR を買収しましたが、最初の数年間は製品ラインに大きな影響はないと思います。
今年の夏にリリースされる 60MIPs イーサネット対応の 16-bitter を本当に楽しみにしています (私の知る限り、実売価格は 10 ユーロをわずかに上回っています)。
マイクロコントローラーでの私の最初の経験は、OOPic-Rでした。コードについてあまり心配することなく、簡単なロボット実験を行うことができました。オブジェクト指向プログラミング フローにより、すべてが高速に動作し、プログラミングが容易になります。
最近、私は別の種類の PIC を試しました。付属のプログラミング インターフェイスは、簡単に操作できます。また、PICAXE を物理的に接続するには、プログラムするための RS-232 ポートと、チップ上の 2 つのピンのみが必要です (レベルシフトを行う必要はありません)。私は PICAXE を非常に小さなコンテナ (SMD と DIP チップが利用可能) に埋め込んでおり、非常にうまく機能しています。
アセンブリでマイクロコントローラをプログラミングした経験はありません。それを試してみたい場合は、ユーザー コミュニティが大きい AVR の方が適しているかもしれません。
私の知る限り、ATMEL のツールを使用して AVR をプログラムする最も安価な方法は、35 ドルの ATMEL AVR ISP mkII です。10 ~ 15 ドルでサードパーティのプログラマーを見つけることができます。
MCUプログラミングとは何かを知りたいだけなら、Arduinoから始めるのが良いでしょう。安価で、初心者に優しい IDE (C と同様の構文を持つプロセッシング プログラミング言語に基づく) を備えています。
しかし、これはあなたの質問に答えませんでした。なぜなら、Arduino は AVR に基づいているため、最新の IDE の背後に AVR MCU があるとは感じられないからです。:)
Cクロスコンパイラが利用できるかどうかに基づいて選択します。これまでは、AVR が選択されていました。今はどういう状態かわかりません。
アセンブラで PIC をプログラムしましたが、あまり楽しくありませんでした。Cは多くの点ではるかに優れています。
AVRが大好きです。プログラミングが簡単で、リソースを利用できます。arduinoがそれで動作するようなコミュニティはほとんどありません。
私は 8051 マイクロコントローラーを見つけるのが最も簡単で、Atmel は非常に多くの組み込み機能を備えたマイクロコントローラーを考え出しました....しかし、それでも人々は AVR を使用することをより好んでいます...私は 8051 ファミリーに手を伸ばすでしょう (快適であることがわかった場合)そうでない場合は、AVRの...
AVR の最高の機能の 1 つは、www.avrfreaks.net のフォーラムのコミュニティです。経験豊富な電子工学エンジニアが集まって、初心者が始めるのを喜んで手伝ってくれます。
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 をリリースしたばかりです) または周辺機器セットの利点は見当たりません。要するに、私はそれを理解していません!ちなみに、
私は Motorola M68HC11 から始めましたが、それは十分に簡単でした。どの 8Bit コントローラーでもほぼ同じ体験が得られると思います。