マイクロコントローラの選択に関しては、同じ仕様のさまざまなマイクロコントローラが市場に出回っているため、非常に紛らわしい作業です。したがって、マイクロコントローラの選択に関しては、すべてのパラメータが重要になります。ここでは、最も一般的に使用されている2つのマイクロコントローラーであるPICマイクロコントローラーとAVRマイクロコントローラーを比較しています。ここでは、プロジェクトのマイクロコントローラーを選択するのに役立つさまざまなレベルで比較されます。
プロジェクト要件から始める
マイクロコントローラーの選択を開始する前に、開始するプロジェクトに関するすべての情報を収集します。適切なマイクロコントローラを選択する上で重要な役割を果たすため、情報を可能な限り収集することが非常に重要です。
- プロジェクトのサイズなどのプロジェクトの情報を収集します
- 使用された周辺機器とセンサーの数
- 電力要件
- プロジェクトの予算
- インターフェイス要件(USB、SPI、I2C、UARTなど)、
- 基本的なハードウェアブロック図を作成します、)
- 必要なGPIOの数をリストアップします
- アナログ-デジタル入力(ADC)
- PWM
- 必要な適切なアーキテクチャを選択します(8ビット、16ビット、32ビット)
- プロジェクト(RAM、フラッシュなど)のメモリ要件を認識する
注目のパラメータを見てください
すべての情報が収集されたら、マイクロコントローラーを選択するのが適切な時期です。この記事では、競合する2つのマイクロコントローラーブランドPICとAVRをさまざまなパラメーターで比較します。2つを比較するプロジェクトの必要性に応じて、次のようなパラメータを確認してください。
- 周波数:マイクロコントローラーが動作する速度
- I / Oピンの数:必要なポートとピン
- RAM:ほとんどのMCUで宣言されたすべての変数と配列(DATA)
- フラッシュメモリ:あなたが書いたどんなコードもコンパイル後にここに行きます
- 高度なインターフェース: USB、CAN、イーサネットなどの高度なインターフェース。
- 動作電圧: 5V、3.3V、低電圧などのMCUの動作電圧。
- ターゲットコネクタ:回路設計とサイズを容易にするためのコネクタ。
ほとんどのパラメーターはPICとAVRの両方で類似していますが、比較すると確かに異なるパラメーターがいくつかあります。
動作電圧
より多くのバッテリー駆動製品により、PICとAVRは低電圧動作を改善することに成功しました。AVRは、PIC16FやPIC18Fなどの古いPICシリーズよりも低電圧動作でよく知られています。これらのPICシリーズは、動作に少なくとも4.5Vを必要とするチップ消去方式を使用しており、4.5V未満のPICプログラマは行消去アルゴリズムを使用する必要があるためです。ロックされたデバイスを消去することはできません。ただし、これはAVRには当てはまりません。
AVRは、ATmega328Pなどの非常に低電力の最新のP(ピコパワー)バリアントを改良して発売しました。また、現在のATtiny1634は改善されており、電圧低下が使用された場合の消費電力を削減するスリープモードが付属しています。これは、バッテリ駆動のデバイスで非常に役立ちます。
結論として、AVRは以前は低電圧に重点を置いていましたが、PICは現在、低電圧動作用に変換され、 picPowerに基づくいくつかの製品を発売しています。
ターゲットコネクタ
ターゲットコネクタは、設計と開発に関して非常に重要です。AVRは6ウェイおよび10ウェイのISPインターフェイスを定義しており、PICにはないのに使いやすくなっています。そのため、PICプログラマーには、回路に取り付けるのが難しいフライングリードまたはRJ11ソケットが付属しています。
結論として、AVRはターゲットコネクタを使用した回路設計と開発の点でシンプルになりましたが、PICはこれを修正する必要があります。
高度なインターフェイス
高度なインターフェイスに関しては、PICは確かにオプションです。AVRにはないUSB、CAN、イーサネットなどの高度な機能を備えているからです。ただし、FTDI USB toシリアルチップ、Microchipイーサネットコントローラー、PhilipsCANチップなどの外部チップを使用できます。
結論として、PICは確かにAVRよりも高度なインターフェイスを備えています。
開発環境
これ以外に、両方のマイクロコントローラを互いに異なるものにする重要な機能があります。開発環境のしやすさは非常に重要です。以下は、開発環境の容易さを説明するいくつかの重要なパラメーターです。
- 開発IDE
- Cコンパイラ
- アセンブラ
開発IDE:
PICとAVRの両方に独自の開発IDEが付属しています。PICの開発はMPLABXで行われます。MPLABXは、750MBの大きなサイズで少し不格好でアドオン機能が多いAVRのAtmel Studio7と比較して、安定したシンプルなIDEであることが知られており、初心者の電子愛好家にとっては困難で複雑です。 。
PICは、マイクロチップツールのPicKit3およびMPLABXを介してプログラムできます。AVRは、JTAGICEやAtmelStudio7などのツールを使用してプログラムされます。ただし、ユーザーは、サービスパック3を備えた4.18などの古いバージョンのAVR Studioに切り替えています。これは、はるかに高速に実行され、開発用の基本機能を備えているためです。
結論として、PIC MPLABXはAtmelStudio7よりも少し高速でユーザーフレンドリーです。
Cコンパイラ:
PICとAVRの両方に、それぞれXC8とWINAVRCコンパイラが付属しています。PICはHi-techを買収し、独自のコンパイラXC8をリリースしました。これはMPLABXに完全に統合されており、うまく機能します。しかし、WINAVRはGCCコンパイラに基づくANSI Cであり、コードの移植と標準ライブラリの使用を容易にします。IAR Cコンパイラの無料の4KB限定バージョンは、多くの費用がかかるプロのコンパイラのフレーバーを提供します。AVRは最初はC用に設計されているため、コード出力は小さく高速です。
PICには、AVRと比較して優れた機能が多数ありますが、PICの構造により、コードが大きくなります。有料版はより最適化された状態で利用できますが、無料版は十分に最適化されていません。
結論として、WINAVRは、PICXC8よりもコンパイラーの点で優れていて高速です。
アセンブラー:
アドレッシングとワード操作を簡素化する3つの16ビットポインタレジスタを備えたAVRアセンブリ言語は、多くの命令と32個のレジスタすべてをアキュムレータとして使用する機能を備えた非常に簡単です。PICアセンブラは、すべてがアキュムレータを介して動作することを余儀なくされているため、それほどうまくいきませんが、すべての特殊機能レジスタにアクセスするために、常にバンク切り替えを使用する必要があります。MPLABにはバンク切り替えを簡素化するマクロが含まれていますが、面倒で時間がかかります。
また、分岐命令がないため、スキップしてGOTOを実行すると、複雑な構造と少し紛らわしいコードになります。PICシリーズには、はるかに高速なマイクロコントローラシリーズがいくつかありますが、ここでも1つのアキュムレータに制限されています。
結論として、一部のPICマイクロコントローラーは高速ですが、アセンブラーの観点からはAVRの方が優れています。
価格と在庫状況
価格の観点から言えば、PICとAVRはどちらも非常に似ています。どちらもほぼ同じ価格で入手できます。マイクロチップは常にリードタイムを短くするという方針を持っていたため、可用性に関しては、PICはAVRと比較して規定の時間で製品を納品することができました。Atmelは、製品範囲が広いためAVRがビジネスの一部であるため、生産能力に関して他の市場がAVRよりも優先される可能性があるため、いくつかの困難な時期がありました。そのため、配信スケジュールの観点からPICを使用することをお勧めしますが、AVRは本番環境にとって重要な場合があります。マイクロチップ部品は、特に少量で入手しやすい傾向があります。
その他の機能
PICとAVRの両方がさまざまなパッケージで利用可能です。PICはAVRよりも多くのバージョンを公開しています。このバージョンのロールアウトには、アプリケーションに応じて長所と短所があります。たとえば、バージョンが増えると、適切なモデルを選択する際に混乱が生じますが、同時に柔軟性が向上します。PICとAVRの両方の最新バージョンは非常に低電力で、さまざまな電圧範囲で動作します。PICクロックとタイマーはより正確ですが、速度に関してはPICとAVRはほとんど同じです。
Atmel Studio 7は、EEPROM、フラッシュ、ヒューズのデータを1つのファイルに含むプロダクションELFファイルを追加しました。AVRはヒューズデータを16進ファイル形式に統合しているため、ヒューズをコードで設定できます。これにより、PICはプロジェクトを本番環境に簡単に転送できます。
結論
PICとAVRはどちらも優れた低コストのデバイスであり、業界で使用されるだけでなく、学生や愛好家の間でも人気があります。どちらも広く使用されており、アクティブなオンラインプレゼンスを備えた優れたネットワーク(フォーラム、コード例)があります。どちらもコミュニティへのリーチとサポートが良好で、コアに依存しない周辺機器を備えた幅広いサイズとフォームファクタで利用できます。マイクロチップはAtmelを引き継ぎ、現在はAVRとPICの両方を処理しています。最後に、マイクロコントローラーの学習はプログラミング言語の学習に似ていることはよく理解されています。マイクロコントローラーを学習すると、別の言語を学習するのがはるかに簡単になるからです。
誰が勝ったかは言うまでもありませんが、エンジニアリングのほとんどすべての分野で、「最高」などの言葉はありませんが、「アプリケーションに最も適した」という言葉が適しています。それはすべて、特定の製品の要件、開発方法、および製造プロセスに依存します。したがって、プロジェクトに応じて、PICとAVRから適切なマイクロコントローラーを選択できます。