Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

PIC24FJ64GB002 簡単なコードを

探し方が悪いのかもしれないが、PIC24F系の簡単なコードのサンプルがあまり無い。
複雑なコードは眺める前に気後れする。
ので、見つけてきて、改良して実際に動かしたものを貼ってみる。

実際に使っているPICはPIC24FJ64GB002で、電流制限抵抗とLEDを6ピンに接続する。
電源とGNDはもちろん配線したが、パスコンはつけてない。
MCLRを10kΩでプルアップしないと動かなかったので、これは接続してある。
いくつかコードを貼るが、回路的にはすべて共通だ。
schema-201412092321


※6ピンにつないだLEDを、for文による時間稼ぎによるdelayで点滅させる。


※割り込みでなくTimer1の値を監視して設定値になるまで待つことでLED(6ピン)を点滅する。


※Timer1の割り込み処理によるLED(6ピン)の点滅。

割り込みで呼び出されるルーチンの書式はまったくなじみが無く、8ビットのもの(というかXC8での書き方?)とはぜんぜん違う。
もっとも、当面は真似するだけだから構わないわけだが。

MPLAB XC16 C Compiler User’s Guide を斜めに読んだ限りでは、何もパラメタを必要とせず、値も返さない場合は、
void __attribute__((__interrupt__,__no_auto_psv__)) _T1Interrupt(void){
という感じに書けばいいらしい。
ここで、_T1Interrupt はTimer1による割り込みを意味するので、割り込みの種類によってこの部分を変えればいいんだと思う。
例えば INT0 による外部の割り込みなら _INT0Interrupt を使って、
void __attribute__((__interrupt__,__no_auto_psv__)) _INT0Interrupt(void){
と書く。
これらについては、Microchip¥xc16¥v1.23¥docs¥vector_docs¥PIC24FJ64GB002.html に一覧表が載っている。
pic24fj64gb002_interrupt_vectors_list
そこまで分かれば、このような単純な割り込みなら、その他の手順はXC8で書いたものと変わらない。

このエントリーをはてなブックマークに追加

Posted under: PIC24FJ64GB002


コメントを残す

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

Time limit is exhausted. Please reload CAPTCHA.