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

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

リファレンス・マニュアル:A/D変換クロック周期注意書きのミス

"PIC24F Family Reference Manual", 分冊"Section 17. 10-Bit A/D Converter", Page 17-11(PDF page 11), 「Equation 17-1: A/D Conversion Clock Period」。 最下段の注意書きで「TCY = FOSC/2」は誤り。 周期TCYと周波数FOSCが等号を挟んで並ぶはずがない…

命令一覧表

オリジナルは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))。ただ…

MPLABが出力するHEXファイルの見方

デバッガやシミュレータ等の開発実行環境を除き、どのアドレスにどんな命令やデータが配置されているか調べる方法として、リンク時に出力されたHEXファイルを参照する方法がある。そこでHEXファイルの見方を例を挙げてまとめておく(PIC24Fに必要な範囲だけ)…

スタックの設定

私の経験だと、none-OS組み込みプログラミングでスタックを確保、設定するところでは、C言語風に書くと #define STACK_SIZE (8*1024) // [byte] static unsigned short stack_area[STACK_SIZE / sizeof(unsigned short)]; stackpointer = stack_area + STACK…

命令アドレスの単位

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

Visual Initializerが出力するコード

Visual Initializerが出力するコードをアセンブル後、リンクすると、以下のようなメッセージがダイアログ表示される。 The configuration bits in the file are invalid and may cause problems if programmed. Do you want to set them to their default va…

Visual Initializerが出力するコード

まずVisual Initializerが出力するファイルは3つあります。 init_デバイス名.sinit_vi.h(C言語用ヘッダファイル) init_デバイス名.sinit_vi.inc(アセンブラ用インクルードファイル) init_デバイス名.s(アセンブル・ソースファイル) 「デバイス名」部分は「P…

Visual InitializerはPIC24FJ64GA002をアルファ・サポート

入手しやすいPIC24FはPIC24FJ64GA002でしょう。秋月電子でPIC24FJ64GA002-I/SP(SPDIP)やPIC24FJ64GA004-I/PT(TQFP)が\450-、FlushROMが倍のPIC24FJ128GA006-I/PT(TQFP)で\550-です(2009/05/22現在)。 ちょっと試すだけならPIC24FJ64GA002-I/SP(SPDIP)を使い…

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

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

ASM30&LINK30のユーザーズ・ガイド

ASM30&LINK30のユーザーズ・ガイドは以下のリンク先にある。 「MPLAB Assembler, Linker and Utilities for PIC24 MCUs and dsPIC DSCs User's Guide」 Microchip社のユーザー ガイド一覧 からどうぞ。

__resetは定義が必要

リセット・ルーチンのシンボル「__reset」は必ず定義が必要。当然ですが別の名前ではダメです。 リンカがこのシンボルを探して .resetセクションにリセット・ベクタを設定してくれる。その詳細は、MPLABインストール・ディレクトリ以下の「MPLAB ASM30 Suite…