MPLAB X IDEでアセンブラを使う

FC-102(Rainbow LED)をPICで動かそうと、データシート(WS2811)を確認したらタイミングが凄くシビア。
0.5μSとか1.2μSとか。xc8の__delay_us()だって整数しか渡せない。
「他の人はどうしてるの?」とググったらアセンブラで書いていた。
32MHzで動かせば、1命令当たり4サイクルで動くから1命令0.125μS。0.5μSは4命令(0.5μS)くらいまで大丈夫そうだ。

で、PICのアセンブラなんて書いた事ないから、とりあえずCでLチカを書いて、それをアセンブラに書き換えてみようと.asmファイルを書いたら、mpasmx(アセンブラのコマンドだと思う)の実行で”Bad CPU type in executable”とか出てきた。調べると、macOS Catalina以降では32ビットのアプリは動かないそうで、mpasmxというコマンドは32ビットのアプリらしく、動かないという事のようだ。

しょうがないという事で、「じゃあ、XC8のインラインアセンブラで書けばいいや」とXC8のインラインアセンブラのディレクティブ #asm, #endasm で囲って書いたけど、#asm, #endasm を認識しない…という問題が。

調べたら、プロジェクのPropertiesのXC8 Global Optionsの”C standard”を”C 90″に設定して、XC8 Compilerの”Preprocessing and messages”の”Use CCI syntax”をONに設定すれば使える事がわかった。

XC8 Global Options
XC8 Compiler

追記:
WikipediaのPICの命令

カテゴリー: PIC, ソフトウェア タグ: , , , , , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA