Scratchpad@usagi1975.com

趣味、ソフトウェア開発などの備忘録

PIC24FのUSBモジュール内にある1msタイマー

PIC24FJ64GB002などのUSB Hostモジュールが内蔵されているPICマイコンについて、どうもこのモジュール内に独立した1msecのタイマーが内蔵されているのを知りました。プリスケーラなどの設定が不要で、1msec経つと割り込みが発生するシンプルな仕組みです。 下記の例では、100ms経過ごとに26番ピン(LATB15)に接続したLEDを点滅させるプログラムになる。オシレータ、 »

ネットワーク内で使用されているIP一覧

固定IPが振られているマイコンボードなどを久々に電源ONしたものの、IPが分からなくて困ることがある(ホスト名も不明だったりする)そういった場合、ネットワーク内のIP一覧を表示すればなんとなくわかるし、固定IPを振る場合の空きIPを予測できる。 基本コマンドを駆使する方法がいくつかあるが、arp-scanというツールを使うと、簡単にわかる。 MACの場合 »

PICkit4購入

Pickit3を使っていると、デバッグ時のブレークポイントが意図したところで止まらなかったり、Step Outできないとか色々気になるところがあった。どうもハードウェアブレークポイントというものらしく、きめ細かい位置には設定できないらしいです。MPLABXではUnlimited BP (S/W) »

MPLABXでPIC開発: シミュレータでprintf出力する方法

PC上で動作するプログラムのデバッグ出力は簡単にできます。C言語ならprintf()、javascriptならconsole.log()を使えば、出力ウィンドウやコンソール上にログ出力されます。 PIC開発の場合も、MPLABX上でC言語を使えばprintf()で同様の出力ができますが、ちょっと一癖あります。 »

ハードウェアを意識したデータ宣言とBDT

microchipが提供しているPICマイコン向けのサンプルコードを見ると、自分が普段使わない宣言がいくつかあったのでメモっておく。 該当するPICのBDTの宣言 PICのUSBホスト処理で、「BDT(Buffer Descriptor Table)の構造体の先頭アドレスが512バイト境界に合わせる」云々という記述がある。 »

MPLAB: PIC24F (XC16) でmallocを使う

MCC(Microchip Code Configuration)を使ってUSBホスト機能を実装しようとしていきなりハマった件。 以下のようにUSBHostTasks()というAPIが用意されている。メインループ内で適切なタイミングでコールすると、接続されたUSBデバイスとの接続処理などをよろしくやってくれる。(データのやり取りはまた別) »

PIC24FJ64GB002のTimer

PICのタイマー処理について、たくさん投稿があるけど、MCC(Microchip Code Configuration)を利用した実装方法があまりないので、学習ついでに備忘録をのこしておく。 まず、PIC24FJ64GB002には5個( »

MPLABXでフォルダごとソースを追加でビルドエラー

サブフォルダにまとめた自作のソースをプロジェクトに追加してビルドしてもエラーになってしまう不具合?に遭遇。ちょっとだけ悩んだので備忘録として残しておく。 まず、VisualStudioなどの開発IDEにあるようにMPLAXでも既存ソースを追加するコマンドがある。"Add Existing Items from »

PICのdelay関数について

PICには指定した時間だけ、停止させるdelay_xx()関数が用意されている。sleep()やwait()のPIC版である。XC8コンパイラとXC16コンパイラで使い方がちょっと違うので、メモしておく。 XC8コンパイラ »

PICのメモリ消費について

MPLABXを使ってPICのプログラムを記述してビルドすると、プログラムメモリとデータメモリの消費量が左下のDashboardに表示される。 プログラムコードをどんどん記述していくと消費するのは想像しやすいが、どんな感じで増えていくのかをちょっとだけ検証してみた。 なお使用したPICはPIC16F1455で、データメモリが1024B、プログラムメモリ8192Bのメモリサイズになる。 MCCでオシレータ設定だけした状態 ほぼ空の状態。 #include »