PIC24F
PIC24FのREPEAT命令でバグ作ってしまった。リテラル指定した繰り返し回数が1つ多かったのだ。 この命令は、リテラル(即値)でもレジスタでも、指定ループ回数+1だけループする。 そのため直後のmov命令を3回繰り返すとき repeat #3 mov w1, [w0++]と書く…
PIC24Fにおける割込禁止/許可方法を挙げておく。 方法 具体的な操作 影響範囲 DISI命令 DISI命令を実行。禁止クロック数を定数で指定するため、見積もれないと使いにくい。 レベル6以下の全割込 割込有効化制御レジスタ IECレジスタの該当ビットをクリア。 …
その1では、CPSGT命令とCPSLT命令について「スキップ条件ではなく実行条件で書かせろ」的な話をした。次命令のスキップ条件と実行条件は論理的に反転しているので、マクロで疑似命令を作成すれば解決できそうにも思える。しかしC言語等の高級言語と異なり、…
PIC24FのCompare&Skip系(CPS〜)命令の中で、CPSGT命令は「Wb-Wn, Skip if Wb > Wn」(レジスタWbからWnを引くことにより、もしWb>Wnが成り立つなら次の命令をスキップ)。一方、CPSLT命令は「Wb-Wn, Skip if Wb レジスタWbからWnを引くことにより、もしWb しか…
昨日の続き。 「MPLAB ASM30/LINK30 and Utilities User’s Guide」の「5.8 USING EXECUTABLE SYMBOLS IN A DATA CONTEXT」に該当する話が書いてある。一度目を通したはずだが、理解せずに忘れてしまったようだ。 要は、プログラム・アドレスは24bitで、デー…
私の言う「データ・コンテキスト内の実行シンボル」とは .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…
下らない思い違いで半日つぶしてしまった。 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…
PIC24Fには32bitタイマそのものは無いが、16bitタイマ2つを連携して32bit動作させることが可能である。 リファレンスマニュアルによると、タイマにはタイプA、タイプB、タイプCの3種類があり、タイプBとCを組み合わせる。タイプB(クロック同期回路有り)がL…
PIC24FJ64GA002を使用して、PIC24Fの機能確認用テスト・ボードを作成している。正確には製作途中だが、ユニバーサル基板に半田付けしていることもあり、すべて実装する前に少しずつ動作確認している。機能は、 3端子レギュレータで電源電圧調整(BOR(Brown O…
「PIC24FJ64GA004 Family Data Sheet」の誤記を見つけたので、メールしようとした。 一応、リビジョンを確認(Revision C (January 2008))、更にWEBで最新のデータシートが無いかチェックしたら、手元のデータシートより古い(Revision B (March 2007))。ただ…
SHやH8, Z80等のプリンストンアーキテクチャに慣れきった頭で、PICのハーバード・アーキテクチャを考えてしまい無駄な時間をつぶしてしまった。 HEXファイル出力からConfiguration Wordの値を確認しようとしたら、該当データのアドレスが違う。ソースコード…
PIC24Fファミリー全般について書かれたリファレンス・マニュアルが以下にあります。 章毎に分冊になっていて、いくつかは日本語です。 PIC24Fリファレンス マニュアルところで「21 UART (Japanese)」だけは英語です。掲載ミスだと思い、英語で報告メールした…