ポケットパスポートの製作と活用 愛知県立豊川工業高等学校 情報システム科 中根 吉正 情報システム科 天野 康孝 要旨 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
© Copyright 2024 Paperzz