極小ブートローダー PIC10F322 其の2
前回、PIC10F322用の68ワードのブートローダーを紹介しました。
今回は同じブートローダーをUSB-シリアル変換を用いて実現する方法を検討します。
1.USB-シリアル変換器
USB-シリアル変換器といえばFT232RLを搭載したAE-UM232Rなどがメジャーですが、私は所有していません。
今回はPIC18F14K50を使用して、RI信号を検出可能なUSB-シリアル変換器を試作しました。
ピンの配置はAE-UM232Rに合わせています。
ブートローダー用に製作したのでハードウエアフロー制御には対応していません。


2.USB-シリアル変換器の回路
回路は非常に簡単でPIC18F14K50とUSBコネクタ、セラミック発振子、抵抗1つとコンデンサ2つで製作できます。
AE-UM232R的に使用したいので12ピンのメスソケットを2つつけて基板化しました。


3.USB-シリアル変換器のファームウエア
"Microchip Libraries for Applications"の"Device - CDC - Serial Emulator"のファームウエアを改造して使用します。
"MPLAB IDE"対応版のVersion: v2013-06-15のインストーラーを使用しました。
こちらからダウンロードできます。
http://www.microchip.com/pagehandler/en-us/devtools/mla/
この版はUSB-CDCファンクションの"SERIAL STATE"コマンドに対応していますので、わずかなコードを追加するだけで
仮想シリアルポートのRIピンの信号を読み出すことができます。
<コード変更の要点>
(1)\USB\Device - CDC - Serial Emulator\Firmware\usb_config.h
#define USB_CDC_SUPPORT_DSR_REPORTING 文を有効にする。(コメントを外す)
※ これによりファームウエアはPCからの"SERIAL STATE"コマンドに応答します。
(2)\USB\Device - CDC - Serial Emulator\HardwareProfile - LPC USB Development Kit - PIC18F14K50.h
ヘッダーファイルの最後に以下の2行を追加
#define UART_RI PORTBbits.RB6
#define mInitRIPin() {TRISBbits.TRISB6 = 1;}
※ RIピンにPIC18F14K50のRB6を割付けます。
※ RB6を入力に設定する初期化コマンド mInitRIPin() を定義します。
(3)\Microchip\USB\CDC Device Driver\usb_function_cdc.c
?void CDCInitEP(void)内
mInitDTSPin(); の次に以下の行を挿入
mInitRIPin();
※ void CDCInitEP(void)内でRB6を入力に設定
?void CDCNotificationHandler(void)内
//Check the DTS I/O pin and if a state change is detected, notify the
//USB host by sending a serial state notification element packet.
if(UART_DTS == USB_CDC_DSR_ACTIVE_LEVEL)
{
SerialStateBitmap.bits.DSR = 1;
}
else
{
SerialStateBitmap.bits.DSR = 0;
}
この文の後に以下の文を挿入
//Check the RI I/O pin
if(UART_RI == 1)
{
SerialStateBitmap.bits.RingDetect = 1;
}
else
{
SerialStateBitmap.bits.RingDetect = 0;
}
※ CDCNotificationHandler(void)内でRIピンの情報を書き加えます。
※ SerialStateBitmap.bits.RingDetect はusb_function_cdc.Hで定義済み。
4.PIC10F322との接続
USB-シリアル変換器のTXDピンとPIC10F322のRA3ピンを接続
USB-シリアル変換器のRIピンとPIC10F322のRA2ピンを接続
電源(+5V)は電源SWを介してUSB-シリアル変換器から供給

5.PIC10F322ファームウエアの変更点
USB-シリアル変換器によりTXD信号の極性が反転するので、ファームウエアで反転信号に対応する必要がある。
(ASMファイル中のDirectRXの定義文をコメントアウトする。)
6.Tera Termマクロの変更点
マクロ中の以下の文
connect '/C=1 /LA=E'
C=1の部分を仮想シリアルポートが使用するCOM番号に合わせる必要がある。
上記ソフト一式は以下からダウンロードできます。
ダウンロード先
http://hp.vector.co.jp/authors/VA058115/
https://drive.google.com/file/d/1E5wTlFtRnhSResahHP_ku85072yoO7tf/view?usp=drivesdk
.
今回は同じブートローダーをUSB-シリアル変換を用いて実現する方法を検討します。
1.USB-シリアル変換器
USB-シリアル変換器といえばFT232RLを搭載したAE-UM232Rなどがメジャーですが、私は所有していません。
今回はPIC18F14K50を使用して、RI信号を検出可能なUSB-シリアル変換器を試作しました。
ピンの配置はAE-UM232Rに合わせています。
ブートローダー用に製作したのでハードウエアフロー制御には対応していません。


2.USB-シリアル変換器の回路
回路は非常に簡単でPIC18F14K50とUSBコネクタ、セラミック発振子、抵抗1つとコンデンサ2つで製作できます。
AE-UM232R的に使用したいので12ピンのメスソケットを2つつけて基板化しました。


3.USB-シリアル変換器のファームウエア
"Microchip Libraries for Applications"の"Device - CDC - Serial Emulator"のファームウエアを改造して使用します。
"MPLAB IDE"対応版のVersion: v2013-06-15のインストーラーを使用しました。
こちらからダウンロードできます。
http://www.microchip.com/pagehandler/en-us/devtools/mla/
この版はUSB-CDCファンクションの"SERIAL STATE"コマンドに対応していますので、わずかなコードを追加するだけで
仮想シリアルポートのRIピンの信号を読み出すことができます。
<コード変更の要点>
(1)\USB\Device - CDC - Serial Emulator\Firmware\usb_config.h
#define USB_CDC_SUPPORT_DSR_REPORTING 文を有効にする。(コメントを外す)
※ これによりファームウエアはPCからの"SERIAL STATE"コマンドに応答します。
(2)\USB\Device - CDC - Serial Emulator\HardwareProfile - LPC USB Development Kit - PIC18F14K50.h
ヘッダーファイルの最後に以下の2行を追加
#define UART_RI PORTBbits.RB6
#define mInitRIPin() {TRISBbits.TRISB6 = 1;}
※ RIピンにPIC18F14K50のRB6を割付けます。
※ RB6を入力に設定する初期化コマンド mInitRIPin() を定義します。
(3)\Microchip\USB\CDC Device Driver\usb_function_cdc.c
?void CDCInitEP(void)内
mInitDTSPin(); の次に以下の行を挿入
mInitRIPin();
※ void CDCInitEP(void)内でRB6を入力に設定
?void CDCNotificationHandler(void)内
//Check the DTS I/O pin and if a state change is detected, notify the
//USB host by sending a serial state notification element packet.
if(UART_DTS == USB_CDC_DSR_ACTIVE_LEVEL)
{
SerialStateBitmap.bits.DSR = 1;
}
else
{
SerialStateBitmap.bits.DSR = 0;
}
この文の後に以下の文を挿入
//Check the RI I/O pin
if(UART_RI == 1)
{
SerialStateBitmap.bits.RingDetect = 1;
}
else
{
SerialStateBitmap.bits.RingDetect = 0;
}
※ CDCNotificationHandler(void)内でRIピンの情報を書き加えます。
※ SerialStateBitmap.bits.RingDetect はusb_function_cdc.Hで定義済み。
4.PIC10F322との接続
USB-シリアル変換器のTXDピンとPIC10F322のRA3ピンを接続
USB-シリアル変換器のRIピンとPIC10F322のRA2ピンを接続
電源(+5V)は電源SWを介してUSB-シリアル変換器から供給

5.PIC10F322ファームウエアの変更点
USB-シリアル変換器によりTXD信号の極性が反転するので、ファームウエアで反転信号に対応する必要がある。
(ASMファイル中のDirectRXの定義文をコメントアウトする。)
6.Tera Termマクロの変更点
マクロ中の以下の文
connect '/C=1 /LA=E'
C=1の部分を仮想シリアルポートが使用するCOM番号に合わせる必要がある。
上記ソフト一式は以下からダウンロードできます。
ダウンロード先
Bequest333のページ(別館)
https://drive.google.com/file/d/1E5wTlFtRnhSResahHP_ku85072yoO7tf/view?usp=drivesdk
.
- ご質問などはこちらからどうぞ
- ページ更新情報
- 最近嬉しかったこと
- 1kワードのTINYBASIC STM32L010F4
- やってくれたな!!店長よ
- 東大版TINYBASIC (STM32)
- 1kワードのTINYBASIC STM32版 その2
- 1kワードのTINYBASIC STM32版 その1
- 1kワードのTINYBASIC その8
- 1kワードのTINYBASIC その7
- 1kワードのTINYBASIC その6
- 1kワードのTINYBASIC その5
- 1kワードのTINYBASIC その4
- 1kワードのTINYBASIC その3
- 1kワードのTINYBASIC その2
- 1kワードのTINYBASIC その1
- 電大版TINYBASIC for PIC ミニマムお試し版5
- 電大版TINYBASIC for PIC ミニマムお試し版4
- 電大版TINYBASIC for PIC ミニマムお試し版3
- 電大版TINYBASIC for PIC ミニマムお試し版2
- 電大版TINYBASIC for PIC ミニマムお試し版
- PICで電大版TINYBASIC 実装編その5
- PICで電大版TINYBASIC 実装編その4
- PICで電大版TINYBASIC 実装編その3
- PICで電大版TINYBASIC 実装編その2
- PICで電大版TINYBASIC 実装編その1
- PICで電大版TINYBASIC 準備編その2
- PICで電大版TINYBASIC 準備編その1
- PIC18F24K42をPICKIT2で焼くTIPS その2
- PIC18F24K42をPICKIT2で焼くTIPS
- PIC16F18313ブートローダー書き込み器の製作
- PIC16F18857をPICKIT2で焼くその2
- PIC16F18857をPICKIT2で焼く
- PIC16F18313をPICKIT2で焼くその2
- PIC16F18313をPICKIT2で焼く
- PIC16F5XX USBIO
- HVT-BT200の予約制御
- 再考 PIC16F57 USBIO
- PIC16F5X USBIO
- 続12 8ピンPICでUSB PIC16F18313 HID-シリアルアダプター
- ucontrol.com.arに接続できない
- 続続 LPC1114 USBブートローダー
- 続PIC10F200 電子サイコロ
- PIC10F200 電子サイコロ
- LPC1114 8ch簡易ロジックアナライザー USB版
- 続 LPC1114 USBブートローダー
- LPC1114 8ch簡易ロジックアナライザー
- LPC1114 USBブートローダー
- LPC1114でUSB
- 続LPC810でUSB
- LPC810でUSB
- USB_NCO
- USB出力の周波数カウンター
- HIDアダプターについてのまとめ その2
- HIDアダプターについてのまとめ
- 極小ブートローダー まとめ
- 極小ブートローダー ATTiny 其の2
- 極小ブートローダー PIC10F322 其の6
- 極小ブートローダー PIC10F322 其の5
- 極小ブートローダー PIC10F322 其の4
- 極小ブートローダー PIC10F322 其の3
- 極小ブートローダー ATTiny13A
- 極小ブートローダー PIC10F322 其の2
- 極小ブートローダー PIC10F322
- 続11 8ピンPICでUSB PIC16F57_USBIO (その3)
- 続10 8ピンPICでUSB PIC16F505_USBIO (その2)
- 続9 8ピンPICでUSB PIC16F57_USBIO (その2)
- 続8 8ピンPICでUSB PIC16F505_USBIO
- 続7 8ピンPICでUSB PIC16F57_USBIO
- 続6 8ピンPICでUSB PIC16F570_USBIO
- 続5 8ピンPICでUSB PIC12F615_USBIO
- 続4 8ピンPICでUSB 16FUSBの改良版
- 続続続8ピンPICでUSB -30MHz+ソフトシリアル-
- 続続8ピンPICでUSB -16FUSBを30MHzで動かす-
- 続8ピンPICでUSB -ターミナルソフトからの操作-
- 8ピンPICでUSB -16FUSBの移植-
- 番外 MSP430 タイニーブートローダー
- 番外 C8051 タイニーブートローダー
- 続続続 Tiny AVR/PIC Bootloader+
- 続続 Tiny AVR/PIC Bootloader+
- 続 Tiny AVR/PIC Bootloader+
- Tiny AVR/PIC Bootloader+
- 番外 続ATTINY13A OSCCAL の簡易校正
- 番外 ATTINY13A OSCCAL の簡易校正
- 番外 続ATTINY13A ソフトシリアル
- 番外 ATTINY13A ソフトシリアル
- 番外 続Arduinoからタイニーブートローダーを使用する
- 番外 Arduinoからタイニーブートローダーを使用する
- 番外 LPC1114FN28/102 アセンブラサンプル
- 番外 LPC810 タイニーブートローダーの自己書き換え
- 番外 LPC810 EEPROM エミュレーション
- 番外 LPC810 タイニーブートローダー
- 番外 LPC810でアセンブラ
- 続続続PIC10F322 ソフトシリアル一考察
- 続続PIC10F322 ソフトシリアル一考察
- 続PIC10F322 ソフトシリアル一考察
- PIC10F322 ソフトシリアル一考察
- 84ワードのPICブートローダー
- 続PIC10F322 Ring-DDS
- Tinybldの自己更新プログラム
- プログラム領域をROMのように使う
- PIC10F322 256ビットプログラム発振器
- PIC18F EEPROM エミュレーション Jタイプ
- PIC18F EEPROM エミュレーション
- PIC16F EEPROM エミュレーション
- PIC10F322専用 周波数カウンター
- PIC18F Jタイプ ブートローダー
- PICの制約を取り除く
- 番外 ATTINY2313A用ブートローダー
- 続番外 ATTINY13A用ブートローダー
- 番外 ATTINY13A用ブートローダー
- 続PIC10F322 フラッシュメモリの操作
- PIC10F322 フラッシュメモリの操作
- PIC10F322 PIC_WAIT
- ビット列の並び替え その2
- ビット列の並び替え その1
- 故障した温水便座を使えるようにする
- PIC10F322 RA3を出力ポートとして使用
- PIC10F322 周波数カウンタ Part2
- PIC10F322 AN592準拠 周波数カウンタ
- PIC10F322 Ring-DDS
- microchipのAN592に関する一考察
- PIC10F322 3-ch リモコンライン切り替え器
- PIC10F322 4-SW リモコン送信器
- PIC10F322 二相発振器
- PIC_DELAY
- 続PIC_WAIT
- PIC_WAIT
- ご質問などはこちらからどうぞ
- ページ更新情報
- 最近嬉しかったこと
- 1kワードのTINYBASIC STM32L010F4
- やってくれたな!!店長よ
- 東大版TINYBASIC (STM32)
- 1kワードのTINYBASIC STM32版 その2
- 1kワードのTINYBASIC STM32版 その1
- 1kワードのTINYBASIC その8
- 1kワードのTINYBASIC その7
- 1kワードのTINYBASIC その6
- 1kワードのTINYBASIC その5
- 1kワードのTINYBASIC その4
- 1kワードのTINYBASIC その3
- 1kワードのTINYBASIC その2
- 1kワードのTINYBASIC その1
- 電大版TINYBASIC for PIC ミニマムお試し版5
- 電大版TINYBASIC for PIC ミニマムお試し版4
- 電大版TINYBASIC for PIC ミニマムお試し版3
- 電大版TINYBASIC for PIC ミニマムお試し版2
- 電大版TINYBASIC for PIC ミニマムお試し版
- PICで電大版TINYBASIC 実装編その5
- PICで電大版TINYBASIC 実装編その4
- PICで電大版TINYBASIC 実装編その3
- PICで電大版TINYBASIC 実装編その2
- PICで電大版TINYBASIC 実装編その1
- PICで電大版TINYBASIC 準備編その2
- PICで電大版TINYBASIC 準備編その1
- PIC18F24K42をPICKIT2で焼くTIPS その2
- PIC18F24K42をPICKIT2で焼くTIPS
- PIC16F18313ブートローダー書き込み器の製作
- PIC16F18857をPICKIT2で焼くその2
- PIC16F18857をPICKIT2で焼く
- PIC16F18313をPICKIT2で焼くその2
- PIC16F18313をPICKIT2で焼く
- PIC16F5XX USBIO
- HVT-BT200の予約制御
- 再考 PIC16F57 USBIO
- PIC16F5X USBIO
- 続12 8ピンPICでUSB PIC16F18313 HID-シリアルアダプター
- ucontrol.com.arに接続できない
- 続続 LPC1114 USBブートローダー
- 続PIC10F200 電子サイコロ
- PIC10F200 電子サイコロ
- LPC1114 8ch簡易ロジックアナライザー USB版
- 続 LPC1114 USBブートローダー
- LPC1114 8ch簡易ロジックアナライザー
- LPC1114 USBブートローダー
- LPC1114でUSB
- 続LPC810でUSB
- LPC810でUSB
- USB_NCO
- USB出力の周波数カウンター
- HIDアダプターについてのまとめ その2
- HIDアダプターについてのまとめ
- 極小ブートローダー まとめ
- 極小ブートローダー ATTiny 其の2
- 極小ブートローダー PIC10F322 其の6
- 極小ブートローダー PIC10F322 其の5
- 極小ブートローダー PIC10F322 其の4
- 極小ブートローダー PIC10F322 其の3
- 極小ブートローダー ATTiny13A
- 極小ブートローダー PIC10F322 其の2
- 極小ブートローダー PIC10F322
- 続11 8ピンPICでUSB PIC16F57_USBIO (その3)
- 続10 8ピンPICでUSB PIC16F505_USBIO (その2)
- 続9 8ピンPICでUSB PIC16F57_USBIO (その2)
- 続8 8ピンPICでUSB PIC16F505_USBIO
- 続7 8ピンPICでUSB PIC16F57_USBIO
- 続6 8ピンPICでUSB PIC16F570_USBIO
- 続5 8ピンPICでUSB PIC12F615_USBIO
- 続4 8ピンPICでUSB 16FUSBの改良版
- 続続続8ピンPICでUSB -30MHz+ソフトシリアル-
- 続続8ピンPICでUSB -16FUSBを30MHzで動かす-
- 続8ピンPICでUSB -ターミナルソフトからの操作-
- 8ピンPICでUSB -16FUSBの移植-
- 番外 MSP430 タイニーブートローダー
- 番外 C8051 タイニーブートローダー
- 続続続 Tiny AVR/PIC Bootloader+
- 続続 Tiny AVR/PIC Bootloader+
- 続 Tiny AVR/PIC Bootloader+
- Tiny AVR/PIC Bootloader+
- 番外 続ATTINY13A OSCCAL の簡易校正
- 番外 ATTINY13A OSCCAL の簡易校正
- 番外 続ATTINY13A ソフトシリアル
- 番外 ATTINY13A ソフトシリアル
- 番外 続Arduinoからタイニーブートローダーを使用する
- 番外 Arduinoからタイニーブートローダーを使用する
- 番外 LPC1114FN28/102 アセンブラサンプル
- 番外 LPC810 タイニーブートローダーの自己書き換え
- 番外 LPC810 EEPROM エミュレーション
- 番外 LPC810 タイニーブートローダー
- 番外 LPC810でアセンブラ
- 続続続PIC10F322 ソフトシリアル一考察
- 続続PIC10F322 ソフトシリアル一考察
- 続PIC10F322 ソフトシリアル一考察
- PIC10F322 ソフトシリアル一考察
- 84ワードのPICブートローダー
- 続PIC10F322 Ring-DDS
- Tinybldの自己更新プログラム
- プログラム領域をROMのように使う
- PIC10F322 256ビットプログラム発振器
- PIC18F EEPROM エミュレーション Jタイプ
- PIC18F EEPROM エミュレーション
- PIC16F EEPROM エミュレーション
- PIC10F322専用 周波数カウンター
- PIC18F Jタイプ ブートローダー
- PICの制約を取り除く
- 番外 ATTINY2313A用ブートローダー
- 続番外 ATTINY13A用ブートローダー
- 番外 ATTINY13A用ブートローダー
- 続PIC10F322 フラッシュメモリの操作
- PIC10F322 フラッシュメモリの操作
- PIC10F322 PIC_WAIT
- ビット列の並び替え その2
- ビット列の並び替え その1
- 故障した温水便座を使えるようにする
- PIC10F322 RA3を出力ポートとして使用
- PIC10F322 周波数カウンタ Part2
- PIC10F322 AN592準拠 周波数カウンタ
- PIC10F322 Ring-DDS
- microchipのAN592に関する一考察
- PIC10F322 3-ch リモコンライン切り替え器
- PIC10F322 4-SW リモコン送信器
- PIC10F322 二相発振器
- PIC_DELAY
- 続PIC_WAIT
- PIC_WAIT