編集履歴一覧に戻る
akira.keiのアイコン画像

akira.kei が 2025年12月19日16時30分22秒 に編集

コメント無し

本文の変更

-

[<前の記事](https://elchika.com/article/51e991b2-8436-40e1-889e-3b7cd551ccff/) : [次の記事>]()

+

[<前の記事](https://elchika.com/article/51e991b2-8436-40e1-889e-3b7cd551ccff/) : [次の記事>](https://elchika.com/article/ef262402-9ac2-4f6d-9579-b86b2f47c122/)

## USB内蔵PIC16F1455 前の記事で「PC(Mac)↔︎USBシリアル変換↔︎PIC↔︎I2C温湿度センサー」と接続する記事を書いたが、「USBシリアル変換↔︎PIC」をPICだけで済まそうとUSB内蔵[PIC16F1455](https://akizukidenshi.com/catalog/g/g110887/)を久しぶりに使おうとしてハマった話を書いておく。 ![PIC16F1455](https://camo.elchika.com/492d56825f3a5368c254957aba9df7a17cd9672b/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33363031626666382d633530632d343762382d613765362d3531663731393163323336642f63353064663765342d356134642d343134372d393132652d393231653462306239633136/) ## まずは結論から - コンパイラxc8はv2.5を使い、v3.0以降を使わない。 - コンパイラオプションで「C90」を指定する - リンカオプションでも「C90」を指定する - MCC ClassicのContent Managerで「MLA Framework lite」を読み込んでおく ![キャプションを入力できます](https://camo.elchika.com/ea44a113f6455f07566494204d54e5a9263d5dd2/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33363031626666382d633530632d343762382d613765362d3531663731393163323336642f32383566383430382d306666622d343132302d396265622d656532393237666430366331/) ## MCC Classic イマドキはCLASSICじゃないMCCが推奨らしいが、他人のWEB記事を見ても新しいMCCを使っているの見たことないんだけどw ![CLASSIC非推奨](https://camo.elchika.com/bac81e30ef7cd32da26751ea3bb5389597b3fdfb/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33363031626666382d633530632d343762382d613765362d3531663731393163323336642f62343664613332372d633232342d343362372d616539622d623034626634363636383237/) ## 48MHz駆動 USB用に内蔵オシレータを使うのだが、なんと48MHz動作が可能(命令は12MHzで動く)なんだけど大丈夫かな(普通のPIC 16Fは最大32MHz) LVPはONでもOFFでもどっちでもいい ![48MHz駆動](https://camo.elchika.com/81184abac1c195fc826bd1bba5b833fd7c8afd73/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33363031626666382d633530632d343762382d613765362d3531663731393163323336642f38613035396332332d316364652d346433372d396562652d653631373538613265303662/) ## MLA USB Device Lite MCC CLASSIC起動中にContent Manegerで「USB Framework Lite」を読み込んでおけば、Device ResourceのUSBの下に「MLA Device Lite」が現れる。設定画面でProduct Stringを「Product Name」から任意の文字列に変更し、一番下のExampleにチェックを入れる。 ![MLA](https://camo.elchika.com/26153699452c832936a41c0ff75cf56355481fab/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33363031626666382d633530632d343762382d613765362d3531663731393163323336642f61396662623663392d323562362d343733632d623065612d633662373866346133303338/) ## 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](https://www.microchip.com/en-us/tools-resources/develop/mplab-xc-compilers/xc8)は2025/12/19時点でv3.10のようだが、これでは先のコードはコンパイルできない。オプションにC90をうまく設定できないみたい(詳細不明)。 ![xc8](https://camo.elchika.com/a9a6ac114e1c9db1387d91947290460001feb1f6/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33363031626666382d633530632d343762382d613765362d3531663731393163323336642f61633066386530322d623438372d343138382d626233622d333835656662653735366364/) そこで、ページの下の方の「MPLAB XC8 Functional Safety Downloads」であるv2.49でも動かないのだ。たまたまインストールしてあったv2.50では動くというこの地雷っぷり。いい加減にせぇよ。。。コンパイラxc8のarchive downloadは[!!こちら!!](https://www.microchip.com/en-us/tools-resources/archives/mplab-ecosystem#xc8)