PIC24F

REPEAT命令

PIC24FのREPEAT命令でバグ作ってしまった。リテラル指定した繰り返し回数が1つ多かったのだ。 この命令は、リテラル(即値)でもレジスタでも、指定ループ回数+1だけループする。 そのため直後のmov命令を3回繰り返すとき repeat #3 mov w1, [w0++]と書く…

PIC24Fにおける割込禁止/許可方法

PIC24Fにおける割込禁止/許可方法を挙げておく。 方法 具体的な操作 影響範囲 DISI命令 DISI命令を実行。禁止クロック数を定数で指定するため、見積もれないと使いにくい。 レベル6以下の全割込 割込有効化制御レジスタ IECレジスタの該当ビットをクリア。 …

PIC24FのCPSGT命令とCPSLT命令 こんな命令セット誰が考えた?!(その2)

その1では、CPSGT命令とCPSLT命令について「スキップ条件ではなく実行条件で書かせろ」的な話をした。次命令のスキップ条件と実行条件は論理的に反転しているので、マクロで疑似命令を作成すれば解決できそうにも思える。しかしC言語等の高級言語と異なり、…

PIC24FのCPSGT命令とCPSLT命令 こんな命令セット誰が考えた?!(その1)

PIC24FのCompare&Skip系(CPS〜)命令の中で、CPSGT命令は「Wb-Wn, Skip if Wb > Wn」(レジスタWbからWnを引くことにより、もしWb>Wnが成り立つなら次の命令をスキップ)。一方、CPSLT命令は「Wb-Wn, Skip if Wb レジスタWbからWnを引くことにより、もしWb しか…

データ・コンテキスト内の実行シンボル(その2)

昨日の続き。 「MPLAB ASM30/LINK30 and Utilities User’s Guide」の「5.8 USING EXECUTABLE SYMBOLS IN A DATA CONTEXT」に該当する話が書いてある。一度目を通したはずだが、理解せずに忘れてしまったようだ。 要は、プログラム・アドレスは24bitで、デー…

データ・コンテキスト内の実行シンボル(その1)

私の言う「データ・コンテキスト内の実行シンボル」とは .section .str_area, code TEXT1: .string "Hello world!\n" .text .global _main _main: mov #TEXT1, w1 TBLRDL.b [w1], w0における「TEXT1」のこと。ちなみに上の記述はエラーになる。 ???.s: Assem…

オフセットの書き方がとても変

このアセンブラ(ASM30)のオフセット記述はとても変だ。 例えばC言語的に書くと func(short w1, short* w0) { w0[5] = w1; }ということをやりたいとき mov w1, [w0 + 5]のように記述すると、以下のようにエラーである。 Error: Word operations expect even o…

なぜTADの設定が可能なのか?(無駄話)

下らない思い違いで半日つぶしてしまった。 A/D Converterの制御レジスタにADCON3というのがあり、ADCON3つまりSAMC4:SAMC0でTADのサイクル時間を設定できる(と思いこんでしまった)。しかしTADはA/D変換のクロック周期で、12周期でA/D変換が完了する。この…

命令一覧表

オリジナルはPIC24FJ64GA004 Data SheetのTABLE 25-1と25-2です。違いは以下の通り。 SYMBOLへのリンクがある。 オペコードに{.B}と{W}を追加している。 並び順をdsPIC30F/33F Programmer’s Reference Manual掲載順に変更している。 "dsPIC30F/33F Programme…

32bitタイマ(その1)

PIC24Fには32bitタイマそのものは無いが、16bitタイマ2つを連携して32bit動作させることが可能である。 リファレンスマニュアルによると、タイマにはタイプA、タイプB、タイプCの3種類があり、タイプBとCを組み合わせる。タイプB(クロック同期回路有り)がL…

CN機能無効でもプルアップだけ利用できるか?

PIC24FJ64GA002を使用して、PIC24Fの機能確認用テスト・ボードを作成している。正確には製作途中だが、ユニバーサル基板に半田付けしていることもあり、すべて実装する前に少しずつ動作確認している。機能は、 3端子レギュレータで電源電圧調整(BOR(Brown O…

手元よりWEBのデータシートが古い?!

「PIC24FJ64GA004 Family Data Sheet」の誤記を見つけたので、メールしようとした。 一応、リビジョンを確認(Revision C (January 2008))、更にWEBで最新のデータシートが無いかチェックしたら、手元のデータシートより古い(Revision B (March 2007))。ただ…

命令アドレスの単位

SHやH8, Z80等のプリンストンアーキテクチャに慣れきった頭で、PICのハーバード・アーキテクチャを考えてしまい無駄な時間をつぶしてしまった。 HEXファイル出力からConfiguration Wordの値を確認しようとしたら、該当データのアドレスが違う。ソースコード…

PIC24Fリファレンス・マニュアルの在処

PIC24Fファミリー全般について書かれたリファレンス・マニュアルが以下にあります。 章毎に分冊になっていて、いくつかは日本語です。 PIC24Fリファレンス マニュアルところで「21 UART (Japanese)」だけは英語です。掲載ミスだと思い、英語で報告メールした…