スポンサーサイト

.-- -- スポンサー広告 comment(-) trackback(-)
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PIC見直した

.25 2010 日記 comment(0) trackback(0)
昔16F84, 648Aあたりを良く使っていたのですが、そのあたりのデバイスは
  • 書き込みに高電圧が必要
  • レジスタマシンでない(アキュムレータマシン)
でした。後者の理由によりCのコンパイラはクソなのは当然でアセンブリで書いていましたが(命令セットは32命令なのでアセンブリ入門にはそれほど悪くはなかった)、AVRを使うようになってからは全く見向きもしなくなっていました。 しかし、秋月では最近でもPICを売っていて、しかも種類もAVRより多いので少し調べてみました。 すると意外な事実が…
PIC24系はヤバイ
何がヤバイか。
  • レジスタマシン(16bit汎用レジスタ(ワーキングレジスタ)16個)
    • 16個しかないじゃん…と思うかもしれませんが、PICの場合、大抵の処理はSRAM上の変数をレジスタに読み込まずに1命令(1サイクル)で操作できるので、汎用レジスタは16個で十分なのです
  • 上でネタバレしてますが16bitアーキテクチャです
    • PIC24の2ってのは2byte = 16bitアーキテクチャってことなのかな~と思っています
  • 命令セットが強力
    • 例えばaddなら次のようにいろいろなモードがあります。
      add ff += W0
      add f, WW0 += f
      add lit10, WnWn += lit10(10bit即値)
      add Ws1, Ws2, WdWd = Ws1 + Ws2
      add Ws, lit5, WdWd = Ws + lit5

      この表の4番目を見れば分かるとおり、3opcode形式の命令体系です。
    • こういうときについ「特徴的な命令」を探してしまうわけですが…
      ぱっと見た感じff1(find first 1)がありますね。しかも左から調べるのか右から調べるのかも指定できます。
    • あとはマイコンのクセにハードウェア除算器を持ってるのがにくいところですね(マイクロプログラムで実現しているだけかもしれませんが。)
    • それから16F時代にあったdecfszみたいな命令はなくなり(Cを使うことを意識した命令セットになっています)、AVRでいうところのlpm, spm(プログラムメモリの一部をEEPROMのように使う)命令が加わっています。
    • 他にもいろいろ面白いところがありますが、細かい比較は使う機会があったら書きます。
  • コンパイル後のコードサイズが小さい
    • 16F系とは違い、かなりCを意識したアーキテクチャであり、コンパイル後のコードサイズは他のマイコンと比べてもかなり小さくできるようです。
  • 低電圧でも高速, さらに5Vトレラント
    • 電源電圧は3.3Vですが、周波数は32MHzまでいけるようです。さらに5Vトレラントなので電源だけ3.3にすれば他の5Vデバイスとの間にレベルシフタをいれずに直結できます。
  • 価格比較@秋月
    • AVR Mega328(Flash32kB, SRAM2kB): \250
    • PIC 24FJ64GA002(Flash64kB, SRAM8kB): \350
    • というわけで値段的にもいい感じです。

というわけでまとめるとPIC24系は「Cに適したアーキテクチャで高速、かつコストパフォーマンスもよいデバイス」ということになります。

再びPICがAVRに代わって天下を取るかもしれないですね。

# REPEAT命令(次の1命令を指定回数繰り返す)って使うんだろうか…
# EEPROMがついていませんがFlashの方がアクセスも高速なので、なくて困ることはないですね。
# よくみたらboundary scanもできるっぽいです。PICも24シリーズになってから本格的なCPUになってきましたね。

関連記事

  • comment
  • secret
  • 管理者にだけ表示を許可する

trackbackURL:http://yuranos.blog11.fc2.com/tb.php/107-1e836e58
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。