ポケットパスポートの製作と活用 - 愛知県高等学校工業教育研究会

ポケットパスポートの製作と活用
愛知県立豊川工業高等学校
情報システム科 中根 吉正
情報システム科 天野 康孝
要旨
PIC マイコンをパソコンやポケコンと接続して活用するためのインターフェースを実装した小
型ボードコンピュータを開発し、工業技術基礎の製作教材としてポケコン用メモリーカードを実現
した。PIC18F1320,PIC16F88,PIC16F1826 等に対応した PIC マイコンボードであり、フラッシュプ
ログラムメモリーへの書きこみを安全に行うための、洗練された電源制御機能を持つ。
はじめに
OF2009 年の課題研究で、ポケコン班の3年生と共
同で動作の検証とデバッグを行いファームウェアの
信頼性を高めた。開発過程で得られた数々のノウ
ハウを、知的資源として公開する。
情報技術を学ぶには、小さなコンピュータが良
い。プログラミング言語で、直接ハードウェアを操作
できるものが良い。気軽に自分の考えを確認できる
シンプルな開発環境が良い。あなたが子供の頃に
夢中になったものと同じくらいに夢中になれるコン
ピュータがあると良い。
回路の概要
ポケットパスポートは、表 1 に示した各種の 18
ピン PIC に対応した小型ボードコンピュータである。
基板上に 耳のよ うな形のパ ソコ ンとの 通信端子
T4,T5 を備えている。PIC の 8 と 9 ピン、10 と 11 ピ
ンが抵抗を通して接続されているので、TX/RX ポ
ートを他の I/O ポートから利用することができる。た
だし、この位置に TX/RX ポートを配置できない PIC
も存在するので注意が必要である。
本校では、2009 年に 1 年生 6 クラスを全科一括
募集とした。これに対応した工業技術基礎の新し
い実習テーマとして、ポケットパスポートの製作を
導入した。フラッシュプログラムメモリーへのセルフライトが可能な PIC を用いて、テキストデータの保
存と読みこみが可能なメモリーカードを実現した。
回路設計とプログラミングを中根が担当し、基板の
アートワークと実習テキストを天野が担当した。OF
表1 各種 18 ピン PIC
Product
Family
PIC18F1320
PIC18F1220
PIC16F1847
PIC16F1827
PIC16F1826
PIC16F88
PIC16F87
Volume
Pricing
$2.17
$1.96
Program
Memory
KBytes
Selfwrite
EEPROM
Data
Memory
RAM
CPU
Speed
MIPS
Digital Communication
$1.04
$0.92
$2.20
$2.06
8
4
14
7
3.5
7
7
Yes
Yes
Yes
Yes
Yes
Yes
Yes
256
256
256
256
256
256
256
256
256
1024
384
256
368
368
10
10
8
8
8
5
5
1
1
1
1
1
1
1
-A/E/USART
-A/E/USART
-A/E/USART
-A/E/USART
-A/E/USART
-A/E/USART
-A/E/USART
PIC18F1330
PIC18F1230
PIC16F819
PIC16F818
$2.24
$2.03
$1.78
$1.56
8
4
3.5
1.75
Yes
Yes
Yes
Yes
128
128
256
128
256
256
256
128
10
10
5
5
1
1
1
1
-A/E/USART
-A/E/USART
-SSP(SPI/I2C)
-SSP(SPI/I2C)
PIC16F716
PIC16F648A
PIC16F628A
PIC16F627A
PIC16F84A
PIC16F54
$0.77
$1.67
$1.47
$1.30
$3.11
$0.39
3.5
7
3.5
1.75
1.75
0.75
No
No
No
No
No
No
0
256
128
128
64
0
128
256
224
224
68
25
5
5
5
5
5
5
Call
-1-
1 -A/E/USART
1 -A/E/USART
1 -A/E/USART
,2
,2
,1
,1
,1
-MSSP(SPI/I2C)
-MSSP(SPI/I2C)
-MSSP(SPI/I2C)
-SSP(SPI/I2C)
-SSP(SPI/I2C)
ポケコンとの通信では、ソフトウェアでシリアル
データの論理を反転することにより NOT 回路の実
装を省いている。また、ACK 信号を用いて PIC が
データを受信できるかどうかを常時ポケコンに伝え、
1文字単位のハンドシェークを実現している。ポケ
コンの DOUT 信号でポケットパスポートの電源を
ON し、PIC の PWR 信号で電源を保持する。電源
OFF を PIC が行うため、安全なフラッシュメモリーへ
の書きこみが保証される。テキストエディタの SIO の
LOAD/SAVE とマシン語モニタの R/W、C プログラ
ムの stdaux による入出力に対応している。
OF パソコンとの通信では、5V 電源が必要なため
USB シリアルブリッジを用いる。Prolific の PL-2303
や FTDI の FT232RL が利用できる。後者は、RXD
信号や RTS 信号の論理の反転をプログラミングで
きるため、専用 USB ケーブルの製作が容易である。
USB 接続では、1文字単位のハンドシェークは困
難である。よって、PIC の RX ポートを配置した通信
端子に、専用 USB ケーブルの TXD 信号クリップを
接続して、ハードウェア FIFO を用いた受信を行う。
クリップを接続しないと書きこみ状態には遷移しな
い。RTS 信号でポケコンの DOUT 信号と同様の電
源制御を行う。パソコンとの通信には、SHARP の
PC-G リンクを用いる。
T5
FTDIケーブル
CTS → GND
+5V
GND
T4
XIN
XOUT
RTS
RXD
GND
ACK
TXD
図1 ポケコンとの接続
TXD + 100Ω
100Ω
※ 回路図は付録B1,B2を参照
図2 パソコンとの接続
表2 ポケットパスポートの仕様
SHARP PC-G シリーズポケコンと専用 USB シリアルブリッジケーブルに対応
PIC18F1320,PIC16F88,PIC16F1826 等に対応した PIC マイコンボード
ポケコン本体か専用 USB ケーブルより電源供給
電源制御
電源 ON
ポケコンの 5 番ピンの DOUT 信号か専用 USB ケーブルの RTS 信号
電源保持
PIC の 1 番ピンの PWR 信号
電源 OFF
BOR(ブラウンアウトリセット)による自然停止
電源電流
動作時
約 5mA(PIC18F1320,クロック 10MHz)
待機時
0.01mA 以下
PIC 逆挿時
約 40mA に制限
接続信号
11PIN
オプション
ポケコン
XOUT,XIN,ACK の 3 本
T0 より T6 までの 7 本
T0,T1
汎用
T2,T3
汎用
T4,T5
通信用リンクポート
T6
汎用
-2-
専用 USB ケーブル
RXD を XIN に、GND を CTS と XOUT に接続
T0 より T3,T6 の 5 本
T0,T1
汎用
T2,T3
汎用
TXD 信号クリップを RX ポートに接続
T6
汎用
教材用ファームウェアの開発
ポケットパスポートは、鉛フリーはんだによる電
子回路の製作教材としても、電子回路組立競技の
制御対象としても手ごろである。工業技術基礎で
は前者、課題研究では後者として利用できよう。教
材としての価値は、明確な目的を持ったファームウ
ェアを組みこむことでさらに高まる。生徒にとって理
解しやすく身近な存在である応用例として、メモリ
ーカードを選択した。プログラムのソーステキスト等
の保存・読みこみだけでなく、PIC のマシンコードを
エクステンションとして実行することが可能である。
ポケットパスポートのファームウェア開発に用い
る PIC のプログラミング環境には、チップメーカ提
供の MPLAB IDE v8.56 へ B Knudsen Data の
CC5X Version 3.4E と CC8E Version 1.3D を組み
こんだものを使用する。新しい PIC(PIC16F1826 等)
へのプログラムの書きこみは、PICkit3 に 18 ピンソ
ケットを接続したものを用いる。PICSTART Plus で
はサポートされない PIC が増えているので注意が
必要である。
電源表示用LED
図3 PICkit3 と PIC16F1826
図4 工業技術基礎
表 3 メモリーカードの仕様
対象機種
通信フォーマット
データ記憶容量
状態遷移
初期設定
着脱条件
エクステンション
PC-G シリーズ全機種と専用 USB ケーブルを使用できるパソコン
1200baud、8bit+1 ストップ bit、パリティなし、EOL=CRLF、EOF=1A
7.5KB(PIC18F1320),7KB(PIC16F88),3KB(PIC16F1826)
ロードとセーブを自動検出して動作
オールリセット操作後、PC-G801 以外は、そのままで使用可能
LED が消えていれば、いつでも取り外し可能
保存したテキストデータを PIC のマシンコードとして実行可能
PIC16F1826 は、現在も信頼性向上のため改良が続けられている PIC である。開発過程で EEADRH の bit7
が常に 1 となっていることを発見しメーカーに報告したところ、すぐにデータシートを改版していただいた。
図5 PIC16F1826 における EEADRH の bit7 問題
(上:DS41391B / 下:DS41391C)
-3-
フラッシュプログラムメモリーへの書きこみ処理を C で記述するためには、合言葉となる指定マシンコード列
をソースから生成できることが条件になる。アセンブラでの記述は容易であるが、C では困難な作業である。同
じ結果となる別のマシンコードではだめなことに気づくまで、メモリーカードはリードオンリーで使うしかなかった。
前述の EEADRH の bit7 問題も深刻で、データシートの記述どおりにプログラミングすると 0 番地に上書きして
プログラム本体を消してしまった。多くのノウハウを含んだ PIC16F1826 の Flash_write 関数を以下に示す。新デ
ータシート DS41391C によると、書きこみラッチが 32 ワードに変更されているが、手元の PIC16F1826 の書きこ
みラッチは 8 ワードなのでプログラムはそのままにしてある。今後の動向に注意する必要がある。
void write(void) /* Flash_write */
{
int x;
EEDATL=tmp[x];
x++;
EEDATH=tmp[x]>>1;
if(tmp[x]&0x01){
EEDATL|=0x80;
}
if((x&0x0f)==0x0f){
EECON1=0x84;
}else{
EECON1=0xa4;
}
x++;
EECON2=0x55;
EECON2=0xaa;
WR=1;
nop();
nop();
if(EEADRH==0x87 && EEADRL==0xff){
return;
}
x=0;
while(x!=SIZE){
incadr();
if(x==0){
EECON1=0x94;
EECON2=0x55;
EECON2=0xaa;
WR=1;
nop();
nop();
}
}
}
図6 PIC16F1826 の Flash_write 関数
動作の検証
パソコンからの受信に対する FIFO のマージンを、オシロスコープを用いて確認した。小文字の a を連続受
信したときにポケットパスポートが出す ACK 信号を測定した。オシロスコープの Ch1 が TXD 信号クリップの波
形、Ch2 が ACK 信号の波形である。
RX_LINK/1320
TX_LINK/1320
TXD →
T5
R12
4.7k
R13
4.7k
T6
T0
T1
T4
オシロ Ch1
10
11
12
13
14
15
16
17
18
RB4/RX
RB5
RB6/T13CKI
RB7
VDD
OSC2
OSC1
RB2/INT2
RB3/CCP1
RB1/TX
RB0
RA3/AN3
RA2/AN2
VSS
MCLR/RA5
RA4
RA1
RA0
9
8
7
6
5
4
3
2
1
R11
4.7k
T3
T2
ACK
R10
4.7k
R3
10k
1
2
3
4
5
6
7
8
9
10
11
U1
PIC18F1320
+5V
GND
<- BUSY
<- DOUT
-> XIN
<- XOUT
-> DIN
-> ACK
CN1 11PIN
図7 測定回路
-4-
オシロ Ch2
25msec
Stop bit
10000110
’a’
Start bit
PIC18F1320
PIC16F88
PIC16F88
PIC16
PIC16F1
16F1826
F1826
Ch1
TXD
0
Ch2
ACK
0
図8 PIC18F1320,PIC16F88,PIC16F1826 の波形
観測波形より、ACK が連続してローレベルとな
る 受信 中断 時間 は 、PIC18F1320 が 21m 秒、
PIC16F88 が 25m 秒、PIC16F1826 が 9m 秒であっ
た。2 段の FIFO とレシーブレジスタで、3 文字を蓄
えておくことができるので、許容される受信中断時
間は、以下に示す計算式で求められる。
T =
3×(1+8+1)
= 25m 秒
1200
PIC16F88 は、マージンゼロで動作している。13
サンプル中 1 個がマージン不足と考えられる誤動
作を起こしている。コンピュータは「動けばよい。」と
考えてしまいがちだが、この例のように信頼できる
動作を期待できない場合もあるのだ。ファームウェ
アの信頼性の問題は、人の命にかかわる事故を引
き起こすかもしれない。PIC16F88 は、それを気づ
かせてくれたのである。
… 式1
おわりに
1997 年に PC-G850 用 EEPROM リーダ・ライタ ChipDrive、2003 年に PC-G850V 用 PIC ローダ PICDRIVE、
そして 2009 年に PocketPASSPORT を開発した。いずれも SHARP のポケコンといっしょに使う教材であった。
ポケコンを使っていて自分がほしいものを作ったら製作教材になっていた。ポケットパスポートで何ができるか
は、ファームウェアしだいである。メモリーカードとエクステンションの組み合わせで、PIC のプログラミングを学
習するのも良いが、ゼロからファームウェアを作ることで得られるものは計り知れない。情報技術の教材には、
性能よりも優先すべきものがあることを忘れず、新たなオリジナル教材に挑戦して行きたい。
参考文献
DS41391C PIC16F/LF1826/27 Data Sheet
DS41391B PIC16F/LF1826/27 Data Sheet
DS39605F PIC18F1220/1320 Data Sheet
DS30487C PIC16F87/88 Data Sheet
2010 Microchip
2009 Microchip
2007 Microchip
2005 Microchip
-5-
Technology
Technology
Technology
Technology
Inc.
Inc.
Inc.
Inc.
VDD
T8
TX_LINK/1827
C1
GND
T5
T7
RX_LINK/1827
0.1uF
T4
XIN
R12
4.7k
R13
4.7k
T6
T0
T1
10
11
12
13
14
15
16
17
18
RB4
RB3
RB5/TX
RB2/RX
RB6/T1CKI/CCP2
RB1
RB7
RB0/T1G/CCP1/INT
VDD
VSS
OSC2
RA5/MCLR
OSC1
RA4
RA0/AN0/CPS0
RA3
RA1/AN1/CPS1
RA2
9
8
7
6
5
4
3
2
1
R11
4.7k
T3
T2
R1
10k
D1
LED RED
Q2
2SC1815GR
R7
XOUT
ACK
PWR
10k
PC-G SERIES 18PIN PIC_BOARD PPP-2
R2
10k
R8
2010
10k
10k
R10
4.7k
U1
PIC16F1827
X1
10MHz
R9
Q1
2SA1015GR
R6
R5
R4
10k
10k
10k
R3
10k
1
2
3
4
5
6
7
8
9
10
11
+5V
GND
<- BUSY
<- DOUT
-> XIN
<- XOUT
-> DIN
-> ACK
CN1 11PIN
PASSPORT
VDD
T8
RX_LINK/1320
C1
GND
T5
T7
TX_LINK/1320
0.1uF
T4
XIN
R12
4.7k
R13
4.7k
T6
T0
T1
10
11
12
13
14
15
16
17
18
RB4/RX
RB5
RB6/T13CKI
RB7
VDD
OSC2
OSC1
RB2/INT2
RB3/CCP1
X1
10MHz
R1
RB1/TX
RB0
RA3/AN3
RA2/AN2
VSS
MCLR/RA5
RA4
RA1
RA0
9
8
7
6
5
4
3
2
1
R9
T3
T2
10k
D1
LED RED
Q2
2SC1815GR
R11
4.7k
Q1
2SA1015GR
R7
XOUT
ACK
PWR
U1
PIC18F1320
10k
PC-G SERIES 18PIN PIC_BOARD PPP-2
R2
10k
2010
10k
10k
R10
4.7k
R8
R6
R5
R4
10k
10k
10k
R3
10k
1
2
3
4
5
6
7
8
9
10
11
+5V
GND
<- BUSY
<- DOUT
-> XIN
<- XOUT
-> DIN
-> ACK
CN1 11PIN
PASSPORT