USB内蔵PIC16F1455
前の記事で「PC(Mac)↔︎USBシリアル変換↔︎PIC↔︎I2C温湿度センサー」と接続する記事を書いたが、「USBシリアル変換↔︎PIC」をPICだけで済まそうとUSB内蔵PIC16F1455を久しぶりに使おうとしてハマった話を書いておく。
まずは結論から
- コンパイラxc8はv2.5を使い、v3.0以降を使わない。
- コンパイラオプションで「C90」を指定する
- リンカオプションでも「C90」を指定する
- MCC ClassicのContent Managerで「MLA Framework lite」を読み込んでおく
MCC Classic
イマドキはCLASSICじゃないMCCが推奨らしいが、他人のWEB記事を見ても新しいMCCを使っているの見たことないんだけどw
48MHz駆動
USB用に内蔵オシレータを使うのだが、なんと48MHz動作が可能(命令は12MHzで動く)なんだけど大丈夫かな(普通のPIC 16Fは最大32MHz) LVPはONでもOFFでもどっちでもいい
MLA USB Device Lite
MCC CLASSIC起動中にContent Manegerで「USB Framework Lite」を読み込んでおけば、Device ResourceのUSBの下に「MLA Device Lite」が現れる。設定画面でProduct Stringを「Product Name」から任意の文字列に変更し、一番下のExampleにチェックを入れる。
main.c
あとはmain.cを整えてコンパイルすれば大丈夫なはずだったんだが、そうはならん。
#include "mcc_generated_files/mcc.h"
#include "mcc_generated_files/examples/i2c_master_example.h"
void MCC_USB_CDC_DemoTasks(void);
void main(void) {
SYSTEM_Initialize();
INTERRUPT_GlobalInterruptEnable();
INTERRUPT_PeripheralInterruptEnable();
//INTERRUPT_GlobalInterruptDisable();
//INTERRUPT_PeripheralInterruptDisable();
while (1) {
MCC_USB_CDC_DemoTasks();
}
}
コンパイラバージョンアップという名の地雷
MicrochipのXC8は2025/12/19時点でv3.10のようだが、これでは先のコードはコンパイルできない。オプションにC90をうまく設定できないみたい(詳細不明)。
そこで、ページの下の方の「MPLAB XC8 Functional Safety Downloads」であるv2.49でも動かないのだ。たまたまインストールしてあったv2.50では動くというこの地雷っぷり。いい加減にせぇよ。。。コンパイラxc8のarchive downloadは!!こちら!!
投稿者の人気記事

-
akira.kei
さんが
前の金曜日の12:25
に
編集
をしました。
(メッセージ: 初版)
-
akira.kei
さんが
前の金曜日の16:30
に
編集
をしました。
ログインしてコメントを投稿する