他のマイクロコントローラーよりもATmega32を使用する利点は何ですか?PIC、ARM、8051よりも優れていますか?
6 に答える
利点
- 引き続き5Vで動作するため、従来の5Vスタッフインターフェイスはよりクリーンになります
- 5 Vに対応していますが、新しい部品は1.8Vまで動作します。この広い範囲は非常にまれです。
- 優れた命令セット、他のプロセッサ(HCS08、PIC12 / 16/18)と比較して非常に優れた命令スループット。
- 高品質のGCCポート(プロプライエタリなくだらないコンパイラはありません!)
- 「PA」バリアントは、マイクロアンペア単位で優れたスリープモード機能を備えています。
- 丸みのある周辺機器セット
- QTouch機能
短所
- まだ8ビット。ARMは16/32ビットの主力製品であり、8ビットよりもはるかに高いクロック速度で大量のデータをプッシュします。
- 費用。HCS08または他のお買い得な8ビットプロセッサと比較して高価になる可能性があります。
- GCCツールチェーンには、分割メモリモデルや制限された16ビットポインタなどの癖があります。
- Atmelは地球上で最高のサプライヤーではありません(少なくとも彼らはマキシムではありません...)
要するに、それらは非常にクリーンで、8ビットマイクロコントローラーでの作業が簡単です。
8051はレガシーです。ツールは無難で、アーキテクチャは奇妙です(idata?xdata?ほとんどのコンパイラの非再入可能関数はデフォルトで?)。
PIC24より前のPICも奇妙で(レジスタバンキング)、クロック->命令スループットが低くなっています。ファーストクラスのオープンソースCコンパイラもありません。
PIC32は、適応されたMIPSコアに基づいてARM7TDMIおよびARM Cortex-M3と競合しており、GCCポート(メインラインではありません)を備えています。
AVR32はCortex-M3と競合しており、特に低電力領域でかなり良い値を提供します。
MSP430は、超低電力デバイスの王様であり、通過可能なGCCポートを備えています(430Xをターゲットにしていない場合)。
HCS08は非常に安価ですが、命令スループットが低くなります。周辺機器はかなり異なります。
ARMは以前はより高コストのエントリポイントでしたが、Cortex-M3アーキテクチャの導入により、価格は8ビットに比べて下がっています。たとえば、LPC13xxシリーズは多くの点でATmega32に匹敵します。Luminary(TI)には、非常に印象的な周辺機器セットがあります。
状況によって異なります。まず、マイクロプロセッサに何を求めているかを知る必要があります。
一般に:
PIC:
- 古いアーキテクチャ。これは、それが高価または遅いことを意味します
- ローエンド市場のみを対象(<数Mhz)
- そのために書かれたコードはたくさんあります
腕
- スケーラブル
- 速い/安い
Atmegaはその中間にあります
PICファミリ(MIPSバージョンより前)には、すべての中で最も苦痛な命令セットがあることがわかりました。つまり、スペースの節約、パフォーマンスの向上、制御などを行う場合は、アセンブラが最適な言語です。
8051は少し苦痛が少なく、より多くのレジスタがありますが、それでも有用なことを行うためにいくつかの命令が必要です(つまり、MHzの観点からこれらを他のチップと比較することはできません)。私は多くの点でAVRが好きです。彼らは自作と開発者のコミュニティを受け入れています。あるいは、直接ではないにしても、競合他社と比較してはるかに優れた開発者の家族がいます。私は命令セットが好きではありませんが、PICと8051よりも数十年進んでいます。MSP430命令セットはかなり好きです。これはアセンブラを教えるための最高の命令セットの1つですが、TIは開発者に優しいものではありません。それは闘争になる可能性があります。eZ430は正しい方向に進んでいましたが、他のすべてのカーネルバージョンで動作しなくなることがないため、goodfetの方が優れています。
MSP430とARMには、私が知る限り、優れたアセンブラツールと優れたコンパイラツールの両方につながる最高の命令セットがあります。上記のすべて、そして確かに8051、MSP430、およびARMフリーツール用の商用ツールを見つけることができます(MSP430およびARMはGCCを使用できますが、8051は使用できません。SDCCを探してください)。今のところ、mspgcc4.sf.netとCodeSourceryは、MSP430とARM用のGCCベースのツールの場所です。 LLVMは両方をサポートします。dhrystoneテストでLLVM27を最新のGCCに打ち負かすことができましたが、これは1つのテストであり、LLVMはパフォーマンスに遅れをとっていますが、改善されています。
無料のクロスコンパイラを見つけて作成する限り、LLVMはすでに入手して使用するのが最も簡単であると考えており、今後はさらに良くなることを願っています。悲しいことに、LLVM用のMSP430ポートは、午後のPowerPointプレゼンテーションでできることであり、深刻なポートではありませんでした。
私の答えは、それはあなたが何をしているかによるということです、そして私はあなたがそれらすべてを試すことを勧めます。最近の評価委員会は50米ドル未満の範囲にあり、一部は30米ドル未満の範囲にあります。ARMファミリ(ST、Atmel、Stellaris、LPCなど)内でも、試してみた場合にのみ見つかるさまざまな機能や癖があります。LPCexpresso、mbed2、およびSTM32プライマーは避けてください。一般的にLPCを避け、ARM7で歯を切るまでは一般的にCortex-M3を避けてください。Olimexやその他のボードについてはSparkFunをご覧ください。おそらくLPCですが、ARMmitePROとArduinoPro良い選択です。eZ430はMSP430の良いスタートです。誰が8051のものを作っているのか覚えていません、Renasys(sp?)、8051はすべて同じように作成されているわけではなく、レジスタスペースはそれぞれ異なり、そのための準備が必要です。あなたが8051で遊びたいなら、私はおそらく8051シミュレータを探すでしょう。
AVTと間違いなくARMが引き続き優位に立っていると思いますが、MSP430が超低電力以外の用途にも使用されることを望んでいます。ARM、AVR、およびMSP430を使用すると、現在および将来のGCCツールを使用して慣れることができます。これには、GCCが世界で最高のコンパイラでなくても、サポートされているコンパイラの中で群を抜いて多くの利点があります。プロプライエタリなコンパイラやツールは避けたいと思います。フィールドプログラマブルの非プロプライエタリプログラミングインターフェイスを備えたデバイスを探します。JTAGは優れていますが、たとえば、Cortex-M3の新しいSWDJTAGは不良です。TI MSPはこれによって傷つきましたが、少なくとも今のところ、いくつかのハッキングによってこれが解決されています。私は本当にPICについて言うのはあまり良いことではなく、試みません。探すべき重要なことはグルーロジックです、パーツまたはファミリはSPIを持っていますか?I2Cまたは使用したいバスは、内部プルアップまたは有線または入力が必要ですか?
一部のチップにはそのオプションがなく、外部ハードウェアを追加する必要があります。コンディショニングで割り込みが必要ですか?ARMは多くの人が使用するコアであるため、これに勝つ傾向があります。各ARMベンダーは、独自のI / Oを用意しているため、ARMの世界に住み、多くの選択肢があります。AVRとMSPは、比較。ARMを使用すると、ツールは最先端になり、ARMは現在最も使用されているプロセッサです。AVRとMSPは特別なプロジェクトアドオンであり、あまり広くサポートされておらず、壊れやすいものです。ARMはSBCのIntelに比べて低電力ですがまたはコンピュータプラットフォームでは、AVRやMSPほど低電力ではない可能性があります。あなたは本当にあなたのプロジェクトを見て、その仕事に適したプロセッサーを選ぶ必要があります。私は自分自身を1つの家族に限定しません。評価ボードは安価で、ほとんどすべてが無料のツールを使用できます。それぞれを学ぶために、数泊または週末を費やすだけです。複数のAVRを学び、複数のマイクロプロセッサを学ぶことをお勧めします。
スペクトルのこの終わりでは、大きな違いを生むのは実際には2つの要因だけです。まず、少量の場合、重要なのは、どのアーキテクチャが開発ニーズに最も適しているかということだけです。あなたがすでにPICに精通しているなら、avrを学ぶことにはあまり意味がありません。逆もまた同様です。好みのアーキテクチャを選択し、そのアーキテクチャのオプションを並べ替えて、特定のニーズに合ったモデルを確認します。
数量(たとえば、20ユニット以上)では、デバイスのニーズに正確に一致する適切なプラットフォームを選択して、コストを可能な限り低く抑えることでメリットが得られる場合があります。
一般に、Picおよびavrプラットフォームは、シンプルな単一機能デバイスに適しています。一方、TCPやOSサービスを使用したリアルタイムなどのQNXやLinuxなどの完全なOSスタックが必要な場合はarmが使用されます。
周辺機器、パフォーマンス、価格、ソフトウェアとツールのサポート、およびサプライヤの幅広い選択肢が必要な場合は、ARMCortex-M3ベースの部品に勝るものはありません。
しかし、あなたの質問に直接答えるには、AVRの全範囲に一貫したアーキテクチャと、TinyからMegaまでの共通の周辺機器セットがあります(AVR32ではありませんが、まったく異なります)。これはPICとの大きな違いであり、範囲を上げると(PIC10、12、16、18、24、32)、さまざまな周辺機器の設計、さまざまな命令セットが得られ、さまざまなコンパイラとデバッグハードウェアに投資する必要があります。
AVRの命令セットは、効率的なCコードコンパイルのために設計されました(これもPICとは異なります)。
8051は、元々Intelによって数十年前に導入されたアーキテクチャですが、現在、多くのベンダーの8ビットデバイスのコアとして使用されています。8つの複製レジスタバンクを介した効率的なマルチタスクコンテキストスイッチやビットアドレス指定可能なメモリのブロックなど、いくつかの巧妙なトリックがありますが、風変わりなメモリアーキテクチャと制限されたアドレス範囲(ほとんどの8ビットデバイスのように)があります。ターゲットを絞った小型のデバイスには最適ですが、真の汎用ではありません。
ARM Cortex-M3は、基本的にARM7TDMIに置き換わるものであり、よく考えられたアーキテクチャを備えたよりクリーンな設計です。最小限のアセンブラ起動コードが必要であり、ISRやベクターテーブルでさえ、奇妙なコンパイラ拡張やアセンブラの開始/終了コードなしで直接Cでコーディングできます。そのビットバンディング技術により、すべてのメモリと周辺機器をアトミックにビットアドレス指定可能にすることができます。これは、高速I/Oと安全なマルチスレッドに役立ちます。基本的に、非標準のコンパイラ拡張なしでシステムレベルでCまたはC++コードを許可するように設計されています。もちろん32ビットアーキテクチャであるため、8ビットデバイスのようなリソースや算術の制限はありません。ローエンド部品の価格は、より高性能な8ビットデバイスと競合し、ほとんどの16ビットデバイスを水から吹き飛ばします(16ビットはほとんど時代遅れになります)。
覚えておくべきもう1つの重要なことは、PICとAVRは単一のベンダーからのものであり、8051とARMはライセンスされたコアであるということです。各ライセンシーは独自の周辺機器セットを追加するため、周辺機器のベンダー間で共通点はありません。そのため、ベンダーを切り替えるときにデバイスドライバーコードを移植する必要があり、パーツに必要な周辺機器が含まれていることを確認する必要があります。デバイスレイヤーを適切に設計する場合、これが問題になることはめったにありません。
まあ、答えるのは簡単ではありません。それは主にあなたが以前に使用したものに依存します。すでにAVRユーザーである場合は、それを使用することをお勧めします。一方、同様の機能を備えたPICを見つけることができるので、それはほとんど個人的な好みだと思います。ほとんどのARMはatmega32シリーズよりも能力が高いと思います。良いアドバイスが必要な場合は、それを何に使用する予定かを教えてください。
AVRにはフラットメモリモデルがあり、無料の開発ツールがあり、安価な開発ハードウェアを利用できます。
コメントするのに8051について十分に知りません。
ああ、あなたがオリジナルのatmega32について考えているなら、それは悪い考えだと思います。間もなく廃止される予定なので、atmega32シリーズの新しいモデルを検討することをお勧めします。