極小ブートローダー PIC10F322 其の4
前々回のUSB-シリアル変換器をPIC12F1822で実装しました。
PIC18F14K50の変換器(CDC)と異なり、こちらはHIDのインターフェースです。
シリアル受信機能は搭載可能ですが、非搭載としブートローダー用に特化しました。


ブートローダーホストとしての動作を確認するため、ホストプログラムを作成しました。

1.HID-シリアル変換器
HID-シリアル変換にPIC12F1822を使用する試みは以前より行っていましたが、極小ブートローダーホストとして動作させるにはTX出力と入力ポートが必要です。
PIC12F1822を使用する場合、外部クロックを74HC04で生成することでTX出力と入力ポートを得ることができます。


PIC12F1822のピン割付け (30MHzで作動させる場合)
RA0:シリアル TX出力
RA1:シリアル RX入力 (未使用)
RA2:USB D+
RA3:入力ポート (書き込みエラー検出用)
RA4:USB D−
RA5:外部クロック入力
PIC12F1822のピン割付け (24MHzで作動させる場合)
RA0:シリアル TX出力
RA1:入力ポート (書き込みエラー検出用)
RA2:USB D+
RA3:SE0 (D+とD−のワイヤードオア出力)
RA4:USB D−
RA5:外部クロック入力
小型化などで74HC04を使用したくない場合にはPIC16F1823を使用します。
PIC16F1823ならば水晶を直結することができます。
PIC16F1823のピン割付け (30MHzで作動させる場合)
RA0:
RA1:USB D−
RA2:USB D+
RA3:入力ポート (書き込みエラー検出用)
RA4:水晶接続
RA5:水晶接続
RC0:
RC1:
RC2:
RC3:
RC4:シリアル TX出力
RC5:シリアル RX入力 (未使用)
PIC12F1822のピン割付け (24MHzで作動させる場合)
RA0:入力ポート (書き込みエラー検出用)
RA1:USB D−
RA2:USB D+
RA3:SE0 (D+とD−のワイヤードオア出力)
RA4:水晶接続
RA5:水晶接続
RC0:
RC1:
RC2:
RC3:
RC4:シリアル TX出力
RC5:シリアル RX入力 (未使用)
2.HID-シリアル変換器の回路規模
○PIC16F1822+74HC04の場合
30MHzで作動させる場合 7.5/30MHz水晶、抵抗5本、コンデンサ3個、ダイオード1個。
24MHzで作動させる場合 6/24MHz水晶、抵抗6本、コンデンサ3個、ダイオード3個。
○PIC16F1823の場合
30MHzで作動させる場合 7.5/30MHz水晶、抵抗3本、コンデンサ3個、ダイオード1個。
24MHzで作動させる場合 6/24MHz水晶、抵抗4本、コンデンサ3個、ダイオード3個。
3.HID-シリアル変換器のファームウエア
試作品はPIC16F1822+74HC04の回路構成とし、30MHzの水晶を接続しました。
30MHz化への変更ポイントは"続続8ピンPICでUSB −16FUSBを30MHzで動かす−"に記載していますので、
ここでは繰り返しません。
入力ポートの状態変化をホストに伝達するためMainルーチンの記述を以下のように変更します。
(この部分をシリアル受信用に書き換えれば、汎用HID-シリアルアダプターとして使用することができます。)
LAST_KEY_STATE EQU 0x5F ; 入力ポートの変化を記憶する変数
RI EQU 3 ; 入力ポート RA3
Main ; Custom code goes here
movlw (1<<RI)
andwf GPIO,W
xorwf LAST_KEY_STATE,W
btfsc STATUS,Z ; RI state has changed?
return ; No
movlw (1<<RI)
andwf GPIO,W
movwf LAST_KEY_STATE
rlf LAST_KEY_STATE,W ;bit3 -> bit4
swapf WREG,W ;bit4 -> bit0
andlw 0x01
MOVWF Recibido_1
MOVLW 0x01
MOVWF Var_3
MOVLW PID
MOVWF PosicionPID
MOVFW PosicionPID
MOVWF FSR
MOVLW 0x4B ;'01001011' DATA1
BTFSS Data1
MOVLW 0xC3 ;'11000011' DATA0
MOVWF INDF
BCF Data1
BTFSS INDF, 3
BSF Data1
CALL CalcularCRC16
CALL InsertarCRC16
INCF Var_3, F
CALL InsertarBitStuffing
MOVLW 0x08
ADDWF Var_2, F
BSF InterruptIN
RETLW 0x00
4.PIC10F322との接続
前々回と一緒です。

5.PIC10F322ブートローダーファームウエア
前回の66ワードの仕様です。
6.ホストプログラム
16FUSB_HID_DioSampleAPPのソースプログラムを改造して作成しました。

使用方法
?上段のBrowseボタンを押してHexファイルを選択するか、上段のテキストボックスに入力して転送するHEXファイルを確定します。
?PICの電源をONにし、速やかに下段のFile Transferボタンを押すと転送開始。
?転送に成功すると下段のテキストボックスに"Done"と表示されます。書き込みエラーが発生した場合"Error"と表示されます。
上記ソフト一式は以下からダウンロードできます。
ダウンロード先
http://hp.vector.co.jp/authors/VA058115/
https://drive.google.com/file/d/1ELY44uzBgt2AtfDUe-elHUfvp-XUGJK_/view?usp=drivesdk
PIC18F14K50の変換器(CDC)と異なり、こちらはHIDのインターフェースです。
シリアル受信機能は搭載可能ですが、非搭載としブートローダー用に特化しました。


ブートローダーホストとしての動作を確認するため、ホストプログラムを作成しました。

1.HID-シリアル変換器
HID-シリアル変換にPIC12F1822を使用する試みは以前より行っていましたが、極小ブートローダーホストとして動作させるにはTX出力と入力ポートが必要です。
PIC12F1822を使用する場合、外部クロックを74HC04で生成することでTX出力と入力ポートを得ることができます。


PIC12F1822のピン割付け (30MHzで作動させる場合)
RA0:シリアル TX出力
RA1:シリアル RX入力 (未使用)
RA2:USB D+
RA3:入力ポート (書き込みエラー検出用)
RA4:USB D−
RA5:外部クロック入力
PIC12F1822のピン割付け (24MHzで作動させる場合)
RA0:シリアル TX出力
RA1:入力ポート (書き込みエラー検出用)
RA2:USB D+
RA3:SE0 (D+とD−のワイヤードオア出力)
RA4:USB D−
RA5:外部クロック入力
小型化などで74HC04を使用したくない場合にはPIC16F1823を使用します。
PIC16F1823ならば水晶を直結することができます。
PIC16F1823のピン割付け (30MHzで作動させる場合)
RA0:
RA1:USB D−
RA2:USB D+
RA3:入力ポート (書き込みエラー検出用)
RA4:水晶接続
RA5:水晶接続
RC0:
RC1:
RC2:
RC3:
RC4:シリアル TX出力
RC5:シリアル RX入力 (未使用)
PIC12F1822のピン割付け (24MHzで作動させる場合)
RA0:入力ポート (書き込みエラー検出用)
RA1:USB D−
RA2:USB D+
RA3:SE0 (D+とD−のワイヤードオア出力)
RA4:水晶接続
RA5:水晶接続
RC0:
RC1:
RC2:
RC3:
RC4:シリアル TX出力
RC5:シリアル RX入力 (未使用)
2.HID-シリアル変換器の回路規模
○PIC16F1822+74HC04の場合
30MHzで作動させる場合 7.5/30MHz水晶、抵抗5本、コンデンサ3個、ダイオード1個。
24MHzで作動させる場合 6/24MHz水晶、抵抗6本、コンデンサ3個、ダイオード3個。
○PIC16F1823の場合
30MHzで作動させる場合 7.5/30MHz水晶、抵抗3本、コンデンサ3個、ダイオード1個。
24MHzで作動させる場合 6/24MHz水晶、抵抗4本、コンデンサ3個、ダイオード3個。
3.HID-シリアル変換器のファームウエア
試作品はPIC16F1822+74HC04の回路構成とし、30MHzの水晶を接続しました。
30MHz化への変更ポイントは"続続8ピンPICでUSB −16FUSBを30MHzで動かす−"に記載していますので、
ここでは繰り返しません。
入力ポートの状態変化をホストに伝達するためMainルーチンの記述を以下のように変更します。
(この部分をシリアル受信用に書き換えれば、汎用HID-シリアルアダプターとして使用することができます。)
LAST_KEY_STATE EQU 0x5F ; 入力ポートの変化を記憶する変数
RI EQU 3 ; 入力ポート RA3
Main ; Custom code goes here
movlw (1<<RI)
xorwf LAST_KEY_STATE,W
btfsc STATUS,Z ; RI state has changed?
return ; No
movlw (1<<RI)
movwf LAST_KEY_STATE
rlf LAST_KEY_STATE,W ;bit3 -> bit4
swapf WREG,W ;bit4 -> bit0
andlw 0x01
MOVWF Recibido_1
MOVLW 0x01
MOVWF Var_3
MOVLW PID
MOVWF PosicionPID
MOVFW PosicionPID
MOVWF FSR
MOVLW 0x4B ;'01001011' DATA1
BTFSS Data1
MOVLW 0xC3 ;'11000011' DATA0
MOVWF INDF
BCF Data1
BTFSS INDF, 3
BSF Data1
CALL CalcularCRC16
CALL InsertarCRC16
INCF Var_3, F
CALL InsertarBitStuffing
MOVLW 0x08
ADDWF Var_2, F
BSF InterruptIN
RETLW 0x00
4.PIC10F322との接続
前々回と一緒です。

5.PIC10F322ブートローダーファームウエア
前回の66ワードの仕様です。
6.ホストプログラム
16FUSB_HID_DioSampleAPPのソースプログラムを改造して作成しました。

使用方法
?上段のBrowseボタンを押してHexファイルを選択するか、上段のテキストボックスに入力して転送するHEXファイルを確定します。
?PICの電源をONにし、速やかに下段のFile Transferボタンを押すと転送開始。
?転送に成功すると下段のテキストボックスに"Done"と表示されます。書き込みエラーが発生した場合"Error"と表示されます。
上記ソフト一式は以下からダウンロードできます。
ダウンロード先
Bequest333のページ(別館)
https://drive.google.com/file/d/1ELY44uzBgt2AtfDUe-elHUfvp-XUGJK_/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