akira.keiのアイコン画像
akira.kei 2025年12月19日作成 (2025年12月19日更新) © MIT
セットアップや使用方法 セットアップや使用方法 閲覧数 55
akira.kei 2025年12月19日作成 (2025年12月19日更新) © MIT セットアップや使用方法 セットアップや使用方法 閲覧数 55

忘れられたUSB内蔵PIC16F1455をイマドキ使う(その1)

<前の記事 : 次の記事>

USB内蔵PIC16F1455

前の記事で「PC(Mac)↔︎USBシリアル変換↔︎PIC↔︎I2C温湿度センサー」と接続する記事を書いたが、「USBシリアル変換↔︎PIC」をPICだけで済まそうとUSB内蔵PIC16F1455を久しぶりに使おうとしてハマった話を書いておく。
PIC16F1455

まずは結論から

  • コンパイラxc8はv2.5を使い、v3.0以降を使わない。
  • コンパイラオプションで「C90」を指定する
  • リンカオプションでも「C90」を指定する
  • MCC ClassicのContent Managerで「MLA Framework lite」を読み込んでおく
    キャプションを入力できます

MCC Classic

イマドキはCLASSICじゃないMCCが推奨らしいが、他人のWEB記事を見ても新しいMCCを使っているの見たことないんだけどw
CLASSIC非推奨

48MHz駆動

USB用に内蔵オシレータを使うのだが、なんと48MHz動作が可能(命令は12MHzで動く)なんだけど大丈夫かな(普通のPIC 16Fは最大32MHz) LVPはONでもOFFでもどっちでもいい
48MHz駆動

MLA USB Device Lite

MCC CLASSIC起動中にContent Manegerで「USB Framework Lite」を読み込んでおけば、Device ResourceのUSBの下に「MLA Device Lite」が現れる。設定画面でProduct Stringを「Product Name」から任意の文字列に変更し、一番下のExampleにチェックを入れる。
MLA

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をうまく設定できないみたい(詳細不明)。
xc8

そこで、ページの下の方の「MPLAB XC8 Functional Safety Downloads」であるv2.49でも動かないのだ。たまたまインストールしてあったv2.50では動くというこの地雷っぷり。いい加減にせぇよ。。。コンパイラxc8のarchive downloadは!!こちら!!

akira.keiのアイコン画像
機械系エンジニアだが電子工作を趣味としている。週末はひとりバーベキュー。
ログインしてコメントを投稿する