雑記帳MPLABX雑記帳じぶんキーボードはMacからアプリでキーの割り当てを変更できるようにする予定ですが、PICマイコン側(PIC18F14K50側)では変更した内容をEERPOMに書き込もうと思います。このEEPROM書き込みにちょっとハマってしまいましたので、備忘録として対処方法をまとめておきます。じぶんキーボードのPICマイコン向けプログラムを作っていたのですが、以前は何問題なくなできていたEEPROMへの書き込みが動かなくなってしまいました。原因がわかりましたので備忘録としてまとめておきます。問題の内容じぶんキーボードのマイコンはMicrochip社のPIC18F14K50を使用しています。このマイコンを使って、カスタマイズできるキーポードを作っているのですが、せっかくカスタマイズできるので、Macアプリを作って、アプリからキーの割り当てが変更できるようにしようとしています。Macのアプリからキーの割り当てを変更したら、EEPROMに保存しようとして、eeprom_read()、eeprom_write()関数を使用したのですが、eeprom_read()は返り値がいつもゼロ、eeprom_write()は書き込みができない、という問題が発生しました。なんとか回避できましたので、対処方法をまとめておきます。原因は、コンパイラXC8のVersion1.35から、Peripheralライブラリが同梱されなくなったためでした。新しいバージョンのコンパイラを使用する場合は、きちんとリリースノートを読むべきですね。Issues」の項目に以下の内容が記載されていました。XC8コンパイラリリースノートより引用)内容は以下のような感じです。PIC18系のペリフェラルライブラリを削除しましたPIC18系のペリフェラルライブラリと関連ヘッダファイル、ドキュメントは今後コンパイラに同梱されません。(MCC)」を使用してください。MCCはPIC18系だけでなく、他の系列のPICマイコンもサポートしています。Pluginメニューからダウンロードできます。以前のバージョンのコンパイラに同梱されていたペリフェラルライブラリを使いたい場合は、独立してダウンロード、インストールできるようにしています。そのライブラリはXCコンパイラVersion1.34向けにビルドしたものです。最近のコンパイラでビルドしたものとこのライブラリに不整合が生じた場合は、適切なライブラリのソースモジュールをプロジェクトに組み込む必要があります。Configurato」を試してみました。MCCは、Microchip社のサイトを見ると、今後のデバイスのコンフィグレーションやペリフェラル機能(ADCやECCPなど)は、このMCCを使うようになっていくみたいです。MCCってよくわからなかったのですが、サイトの紹介内容を読んだり、ちょっと試してみたりしてなんとなくわかったので自分なりに説明してみます。MCCとは、ざっくり言うと、PICマイコンが持っているペリフェラル機能(ADC、ECCP、MSSPなどの各モジュール機能)を使うためのコードを自動生成する、というもののようです。PICマイコンのペリフェラル機能を使う場合、今までは全てコーディングしていましたが、MCCを使うとダイアログで必要なパラメータを設定するだけで、ある程度コードを生成してくれるようになります。これは、Xcodeなどの統合開発環境の機能向上やArduinoなどラピッドプロトタイピングなどを意識しているようにも思えます。これも時代の流れなんでしょうか。いうことで、イメージがわかるようにどんな感じか具体的に説明してみます。IDEのプラグインとして供給されています。IDEでMCCのプラグインをダウンロード、使用するということになります。IDEを立ち上げます。Download」を選択します。Manager」ボタンをクリックします。v3」を探してチェックボックスをONに、その後下の方の「Install」ボタンをクリックします。プラグインのインストールが始まります。Next>ボタンをクリックします。agreements.」にチェックをつけて、Next>ボタンをクリックします。待つとインストールが終わります。これでインストール完了です。Configurator」を選択します。自分の場合は、PIC18F14K50を使用するプロジェクトを開いてこの操作を行いましたが、、、なんと、PIC18F14K50はまだ非サポートとのことです...。いうことで、PIC18F14K50のプロジェクトはMCCを使うことができないので、後述の対策が必要です。いうことで、とりあえずMCCがサポートしているPIC12F1822を使用する中身がカラのプロジェクトを作ります。Configurator」を選択します。以下のような画面になりますので、Generateボタンをクリックします。Generateボタンをクリックすることにより、MCCが使用するプロジェクトファイルを作るようです。Generateボタンをクリックすると、MCCのファイルを作成、保存するダイアログが表示されますので、そのままOKボタンをクリックします。これでMCCを使う準備ができましたので、次にペリフェラル機能の管理画面(リソース管理画面)を表示します。Management」を選択します。選択すると以下のようにペリフェラル機能を管理する画面になります。ここで、ADC(ADコンバータ)機能のコードを生成してみます。Resources(デバイス機能)欄から「ADC」を見つけてダブルクリックします。Resorucesに追加、右側にパラメータ設定画面が表示されます。パラメータを設定したら、Generateボタンをクリックすると、ヘッダファイルとコードが生成されます。Files」フォルダに格納されています。いう感じで、コードをガシガシ書かなくても自動生成されるんですね。MCCでサポートされていないPIC18F14K50は相変わらず自分で書く必要がありますね。いうことで、最後にMCCで対応していないPICマイコンの対処方法です。PIC18系/PIC24系/PIC32系マイコンのペリフェラル機能対策PIC18/24/32系マイコンは、XCコンパイラのリリースノートにあるように、自分でペリフェラルライブラリをダウンロードしてインストールする必要があります。ビルドする際に、ペリフェラルライブラリを使う、という設定も必要になります。この2点を押さえておけばOKです。ペリフェラルライブラリのダウンロードとインストールです。Librariesがありますので探します。PIC18系マイコン用のペリフェラルライブラリがありますので、ダウンロード、インストールします。インストールの際、インストール先のXCコンパイラのフォルダ指定画面がありますが、インストールが必要なXCコンパイラのディレクトリを選択します。インストールは特に難しいところはないので説明は省略します。これで、ペリフェラルライブラリのインストールができましたが、まだこのままではペリフェラル機能は動作しません。IDEのプロジェクトプロパティで、ペリフェラルライブラリを使用する設定をする必要があります。IDEでプロジェクトプロパティを開きます。Linker)を選択します。Library」という項目がありますので、これにチェックをつけます。これで、ペリフェラル機能が使用できるようになります。