2018-10-24に更新

PIC24FJ64GB002でLED点灯

PIC24FJ64GB002でLED点灯。
初の16bit。
USBホストのために買ったのだが折角なので試しておく。

しかしこれがなかなかうまく行かなかった。
まずひとつの原因が、8ビットのものとは違って、
データシートを見ると最小限の回路の指定があり、
この通りに組む必要があるらしい。
適当にpickitやledと接続するだけだとダメみたい。
面倒だから専用のテスト用基板を作った方が良さげ。

上記は理解できたのだが、どうしてもLEDが点灯しない。
色々試してたら点灯した。
どうもまだ回路図を正しく読む力が無いようで、余分な線を外したら動いた。

同じく回路図読めない人のために見難いけど画像を貼っときます。
回路図はネットにいっぱいあるのでそっちを参考にして下さい。

コンデンサが一個なくて電解になっちゃってて違うんだけど…。

プログラムはほとんどサンプルのまま。
(サンプルあったんだな…初めて気づいた)
色々試してるうちに、プライマリオシレータとインターナルオシレータの
違いが分からなかったので念のため内部のものにしてある。

|c|

include <xc.h>

_CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & FWDTEN_OFF & ICS_PGx2)
_CONFIG2( FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMOD_NONE & FNOSC_FRCPLL)

/*
*
*/
void delay(void) {
long i = 65535;
while(i--)
;
}

int main(void) {
CLKDIV = 0;
TRISA = 0;
TRISB = 0;

// Setup PortA IOs as digital
AD1PCFG = 0xffff;
LATA = 0xFFFF;
LATB = 0xFFFF;

while(1) {
    LATA = 0x0000;
    LATB = 0x0000;
    delay();

    LATA = 0xFFFF;
    LATB = 0xFFFF;
    delay();
}
return 0;

}
||

LATというのは調べると分かるが
ポートの出力のためのレジスタ書き込みの際の不具合を抑えるためのもの。
入力はPORT、出力はLATを使うといいとどっかに書いてあった。

ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, React, Flutter, Vue.js, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々 PHPフレームワークちいたんの作者

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント