SSD1306を制御ICに使う低価格、小型、白色OLEDで遊んでいる。
PIC24でも動いた(「PIC24FJ64GB002 + SSD1306(GM009605)」)ので、PIC32でも試してみる。
開発環境
MPLAB X(v3.45)
MPLAB Code Configurator(v3.36)
XC32(v1.44)
大きめのブレッドボードに空きが無かったので、変換基板にハンダ付けしてあるPIC32MX470F512Hを使った。
これだと基板上で基本的な配線が済んでいるので、大きなブレッドボードが必要ない。
時間稼ぎのDelayを「PIC32MXでdelayを作る。」に書いたコードに変更しただけで、他は全くそのままで動いた。
と言いたいところだが、PBCLKを12MHzより大きくするとなぜかI2Cが動かなくなってしまった。
理由は良く分からないが、調べてもいない。
SYSCLKは96MHzの設定で動くので、メモリーまわりの処理は速いと思う。
でもまあ、そもそも速度を求めるならSPI接続のモジュールを使う方がいいだろう。
追記
MCCでふと気づいたことがある。
System Moduleでクロックを変更してPBCLKを変更する。
すぐにTIMER2とかを見てみる。
Clock SourceはPBCLKになっているのにInput Frequencyが上で設定した値になってない。
つまり、変更がすぐに反映されない。
一度Externalとかに変更してからPBCLKに戻せば新しいクロック数が反映される。
この調子で、I2Cとかの設定でも変更が反映されない場合があって、それが上に書いたようにI2Cが動かなくなったりする原因かもしれない。
参考
「Arduino NanoでGM009605の動作テストをする」
「PIC24FJ64GB002 + SSD1306(GM009605)」
「ESP8266 + SSD1306(GM009605)」