ePLL write コントローラ仕様
by K.I
Index
NPCのePLLへのデータ書き込みを行なうためのコントロール基板
- 要求仕様として
- 単体で動作可能であること。
- 設定内容を保存可能であること。
- 安価であること。
[top]
安価なCPUとして、PICとH8を検討した。
PICはチップ数と内蔵する回路等で、様々なバリエーションを選択することが可能で、非常に小型で、安価に抑えることが出来る。外付け部品も最小で、試作が容易である。
但し、速度が比較的遅いことと、ピン数がある程度、制限される欠点がある。
H8はピン数が多く、速度が比較的速いアプリケーションにも対応出来る。
フラッシュ内蔵のデバイスもあり、開発環境も比較的安価である。
CPUの機能が豊富でピン数も多い反面、試作のパターン作成やプログラム作成が少し難しいように感じられた。
大雑把にいえば、PICは小規模向き、H8は中規模向きと考えられる。
結局、今回のアプリケーションがかなり小規模であるため開発の経験があるPICを選択し、最小限必要なI/O数と部品の入手性を考慮して16F8731とした。
これは、以下のような特徴がある。
- 28pin DIPパッケージ → 非常に小型である(SOPもある)
- Flashプログラムメモリ内蔵 → 16F873の場合、プログラム設定も可能らしい
- RA×6、RB×8、RC×8の計22ポートのI/Oを使用可能 → ポート数が多い
- UART、I2C、MicroWire等のインターフェース内蔵 → 将来的にシリアルI/O追加可能
- 10bit A/Dコンバータ内蔵 → 今回は未使用
- プログラムで設定可能な 128byte EEPROM内蔵 → 設定内容の記憶に利用出来る
- ICSP(In Circuit Serial Programming)対応
20MHzまで動作可能だが、今回はスピード不要なので消費電流を考えて4MHzのセラロックでクロック発振させている。
- ちなみにこの回路図のシリアルポートのDSUB9コネクタの配線は間違っているので、
入力装置として、仕様書ではHEXスイッチが提示されていたが、CPUで扱う場合はI/Oピンを消費する上に、HEXスイッチの操作性にも不満があったので、液晶表示装置と4×4のキーマトリクスを検討した。最終的には、I/Oの節約と操作性から最小限のUP/DOWNキーによる操作とした。これにより、安価なタクトスイッチを利用出来る。
- 液晶表示装置SC1602の仕様
- 5V単一電源
- 英数字、カタカナを含むキャラクタを16文字×2行表示可能
- 7本のI/Oでコントロール可能(4bitモード時)
単体で動作する場合に電源を容易に確保出来るように、通常のACアダプタを利用し、必要な電源は全てボード内で生成するようにした。
- 9〜15V程度のACアダプタを利用可能。ダイオードブリッジを通すため極性不問で自由度が高い。短時間であれば、006Pの9V積層電池も利用可能。
- コントロール可能な信号線は5本(VPP,EPCLK,CLK,DATA,LE)
- 基本的に0V,3V2の2レベル出力
- VPPのみ、0V,3V,20Vの3レベル出力可能3。この仕様は、1ピン書き込みデバイスを意識している。
116LF873が入手出来れば、VDDを合わせることで、3.3Vデバイスに直結可能でありインターフェースを簡略化可能。
2試作基板では簡略した回路のため、ダイオード3本のドロップで約3.5Vとなっている。
3この端子RA4はオープンドレインなので、保護用のダイオードと分圧でちょうど3V程度になってる。
[top]
- MICROCHIP社純正のMPLABのアセンブラを使用。
- 標準で、トレース可能なデバッガが附属しているので、開発し易い。
動作仕様は以下の通り。信号波形の詳細は、高松氏の仕様書に準拠している。
- ePLLの、Ncounter(16bit),Rcounter(16bit)の設定値の表示と変更。
- 表示した内容をePLLに転送する。
- 設定内容をEEPROMに保存。
動作フローについて
- I/Oポート、LCD、EEPROMによる設定値の初期化を行なう
- スタートメッセージ表示(LED1回点滅)
- 設定モード・N,Rcounterの16進数表示(LED2回点滅)
- カーソルキーで変更箇所を選び、Up/Downキーで値を変更する
- OKキーで書き込みモード。Cancelキーで設定モードに戻る。
- Ncounterの転送
- Rcounterの転送
- 設定内容をEEPROMに書き込み
[top]
16F873のプログラム上、注意が必要な点について
- LVP(Low Voltage Programming)をONにすると、RB3ポートはそれ専用となり入力に設定されてしまうので、通常はOFFとする。
- 同様にDEBUGをONにすると、RB6,RB7は使えなくなる。
- RAポートは、初期状態ではアナログポートとして設定されるので、デジタル入出力を行なう場合は、最初にADCON1,ADCON2の設定を必ず行なう必要がある。
- RA4ポートはオープンドレインなので出力として利用する場合は、必ずプルアップすること(用途によるけど)。
- ICSPを利用する場合はMCLRポートに15V程度掛かるので、それを考慮したリセット回路にする。RB6,RB7ポートはICSPに干渉しない回路にするか、切り離せるようにしておく。
LCDの設定上の注意
- LCDは最初に、所定の初期化ルーチンを掛けないと正常に動作しない。
- RSによる切替えを忘れると、表示が滅茶苦茶になるので注意。
- RBポートにスイッチを付ければ、内蔵プルアップが使えるので回路が簡単になるかもしれない4。
4あとから思いついたので、配線しなおすのが面倒。RCはシリアル用の2本除くと、6本だからLCDに繋ぐ1本をRBからとらなきゃならないし。R/WはL固定でもいいけど。。。
[top]
[電子工作関連に戻る]