§PIC/H8関連情報§

*PICとは、プログラム可能な小型総合チップの事だ。
 ROM(EEP/フラッシュ)とRAM及び入出力が強化されており
 機種によってA/DやD/Aも内蔵している機種もある。
 特徴は:低価格・多機能で簡単な制御やおもちゃ等の独立制御が
 必要な物に向いている。ソフトはメモリーされているので,電源を切っても
 蒸発しない。欠点としてメモリー容量が少ない・プログラムが基本として
 アセンブラなので難しい。但しC言語・BASIC対応も出てきたので
 最初はその辺から始めても良い。後プログラムの書きこみ器が必要だが
 いくつかの製品はそれも兼用している。低価格を望むなら(一万¥以下)
 キットでOK。但し自分で理解し工作できる人が対象。結構説明不足や
 誤記載もある。秋月電子等が有名。小ロット/1pcsからでも対応してくれるが
 その場合まとめ買いしないと、地方の場合に送料の方が高いということに成る。
 出力は25mA位ドライブできるのでLED(発光ダイオード)位なら十分駆動できる。
 現在8BITと16BITの品が有り、迷う所ですが価格差は余りないので、とにかく
 低価格なら8BIT品で最大8K・WORDが,C言語やBASICもやりたいなら
 16BIT【最大128K WORD】がお勧めです。時間が【高速】を要求するなら
 やはりアセンブラで書かないと難しいです。Z80や8080のアセンブラの参考書が
 多少約に立ちますが,中々と難しい所です。参考図書などでTOOLを揃えて
 おいて始めた方が良いでしょう。
 今後筆者のレポートを追加していきます。

*秋葉原で色々見たり,聞いたりしましたが簡単な物であれば8BITでも充分ですが
 複雑な計算・制御等は16bit品です。それほど価格も違わないのですが16bit品は
 まだ,参考書が少なく特にC言語/BASICのコンパイラーはインタープリター機能が
 無い物が多いので実際にプログラムで組み,要所要所をLCD等に表示させる
 補助TESTプログラムか通信ホストコンピユータに各パラメータ等をモニターする
 監視SOFTが必要になってきます。
 特につらいのが、アセンブラだけで桁数の大きい数の掛け算や割り算の処理の方法ですが
 10年程前ですと,マイコン全盛期で参考書が多数あったのですが,PICの本をみても
 通常の8bit以内の方法がチョロットのっているだけです。
 更にPICは過去の8080やZ80とレジスターや基本思考が若干異なるので、工夫しないと
 いけません。

*結局PIC/H8か迷ったのだが,両方は買えないのでH8のキットにした。
 店頭で買ったので,電源とモニターSOFTが無料でサービスでした。

 後、Cコンパイラー、BASICコンパイラーも2K¥と安いので揃えた。TOTAL 12、000¥。 
 言語はCCS製の方が高機能だが、とりあえず動けばいいので前者にした。
 さて組み立てだが、アナログ基盤と違い部品が小さいので苦労する。特に秋月のキットは
 素人向けではないので、かなりこういう物の組立てに慣れていないと難しいかも。
 特に部品を間違った所に差すと半田の除去に大変苦労するので良くMANUALを読む事。
 道具は半田、コテ、ニッパー、ラヂオペンチ、虫眼鏡、いらない歯ブラシ、テスターは
 最低必要だ。歯ブラシは不要なハンダクズやゴミの清掃に必要だ。コテは20Wくらいが良い。
 コテ先の掃除用にボロキレに水を浸した物か無ければティッシュでも可。
 虫眼鏡は部品の文字が小さいと読みにくいのと、半田付けの検査用に必須。
 抵抗はカラーコード表示だが,抵抗自体小さくて読みにくいので
 不明の時はテスターで計った方が早い。ジャンパーは部品の切り端でOK。
 裏のヤニはアルコールでは落ちにくい。基盤清掃か接点洗浄用スプレーがあるとよい。
 クロロセンがいいのだが入手性が問題あり。
 若干有毒で,弱い人はふらふらするので風通しの良い所で作業すべし。
 H8とPICの違いは、H8がFLASHのRAMを持っていないのでBACK−UP用の
 スーパーキャパシタかリチウム電池でメモリーバックアップが必要な事と,H8はどちらかというと
 通常のマイコンと考えた方が良い。長いプログラムや速度を上げるために参照テーブル等
 はPICの場合メモリー不足で無理だ。誰か,PIC用の拡張ROM+RAM(64K以上)
 回路を造って欲しい物だ。

 
*H8(AKI−H8)組立:メインボードとCPU ボードを組立るのだが,XTALの足は5mmくらい
 に長くしておくと,後でチェックや外部クロック注入の時便利だ。MAIN BOADには
 RESET SWITCHが無いので追加しよう。(FREE エリアに)。後、作業台だが
 プラスチック等静電気の起こりやすい物は避けて、まな板等の木製品がお勧め。
 電源15Vを入れてLED(POWER)点灯と12V出力確認する。
 POWER OFF後CPU BOARDを差して、5Vの確認をする。オシロを持っている人は
 GNDとクリスタルにプローブを当てて、発振している事を確認。
 次に液晶表示カードを差しこみ,POWERのLED点灯と12V,5V
 の確認をする。それぞれのレギュレータICが異常に熱くない事と,異臭(焦げる匂い)
 がしない事。この時点では,LCDはデータが来ていないので四角四つ以外は
 表示しません。但しLCDの輝度調整VRは右一杯から約40度位戻した所に設定しないと
 左一杯のポシションでは本当に何も表示しなくなります。右一杯でも,特に壊れる事は
 有りません。トラブルの大半は,半田付不良、半田ショート、部品間違いです。
 良く説明書を何度も読む事が大切です。
 当方もTESTプログラムを走らした所で1箇所0−−>1に変化せず、
 ルーペで調べた所CPU基盤の一箇所に半田付け不充分な所があり、
 修正後正常動作致しました。ADはCHIPに同居しているので,規格は10BITと
 謳っていますが外部で別部品/別電源にした方が(DAも)いいでしょう。
 MAXIM等から1、000¥位で12bit・単電源・1LSB誤差・DIPがありますので
 精度が必要な物には外付回路で製作(出来れば別基盤で)製作したほうが、
 性能が良いでしょう。
 白金抵抗体・熱電対等のリニアライズはSOFTでやるか、ADのDATAをROMで
 補正するか迷う所です。特に温度制御のように時間が余り余裕が無い時は後者の方に
 軍配が上がります。但しコストは大きくなりますが。
 
 
*H8−3048Fの後継CPUがトラ技にのっていたが、メモリが4M
  (3048Fは1M=128KByte)に
  なるので,かなり大きなプログラムを組めそうだ。ハード(MOTHER ボード)は
  そのまま使用できる。但しSOFT互換性はMONITORソフトについては、
  ランタイムのクロック定数を変更するか,XTALを16MHZに交換すればOK。
  Cコンパイラーについては上記モニターと同じ処理で互換性あり。BASICについては
  互換性無し。BASICのSOFTが待たれる。アセンブラで組む方は問題無し。
  (3048F)BASICコンパイラを試してみた。内部のADを使用して
  表示させる物や、SWITCHを読取りLED制御を行い点灯する。通信を介して数を当てる物。
  TIMERを使用し時刻とカウントアップをLCDに表示させるサンプルSOFTが入っていました。
  通信・I/0・LCD・TIMER・AD・DAなど一通り書かれているので、タイミング的に厳しい所や
  高速性を要する所はBASIC文の中にマシン語で書けば良いので、基本的にBASICを覚えた方は
  それでいいのでは。C言語にしても,結局アセンブラ(マシン語)は必要です。特に単品で移植
  しないのであればどちらでも,開発はほぼ同じといえます。
  ここで気を付けないといけないのは、このUNITで何でも出来る訳ではなく,精度や速度など
  様々な要求に対しては、外部のハードに頼らざるをえないのでそちらを自作,供給できないと
  頭脳部のみとなります。例えばプログラムDC電源ですが,確かにDA−OUTは付いていますが
  分解能が8BITかつ安定度が貧弱なので,外部の基準電源+制御部に命令を与えるとかいう
  使い方になります。要途は広いが,制限も多いのが現状です。当社ではスタンドアロンTYPEの
  測定器等に使用を考えています。ここでH8のBOOKは三冊出ているが秋月電子が紹介している
  東京電機大学出版のH8入門書は必須だ。但し2、800¥と少しお高いのが玉に傷。

 *DA(デジタルOUT)出力は8bit分解能しかないので,余り使えない。そこで考えたのだが
  12BIT程度で良ければ,方法はある。2ch使う方法だ。最初のチャンネルの出力ともうひとつの
  8bit=1/256に減衰させて合成する。但し片方はアナログメモリー
  (sample and hold)回路を通して
  加算する。但し回路がデジタルマイコン上で行うので,GND電位にノイズが多く、
  組立て方によっては10bitがいい所かも知れない。精度を要求するなら,内部のDAは
  使用しないで光カプラで絶縁し、別電源+別基盤(DA+デグリッチャ)で行う方が良いだろう。
  又精度の要求される時間・タイミング等も外部に独自に設けた方がSOFTで苦労するより早いし
  特に24−32BITカウントになると、内臓ITUでは,お手上げだ。例えばTC4040という二進12bit
  カウンターを二個用いると2の24乗=16777216までかぞえられる。24BITを16BITで二回読み
  込んだ値は、レジスターorメモリに入れて後で演算する。例えば1Hzを10usでカウントすると
  1S/10us=100、000パルスで逆算すると周期から周波数がもとまる。精度は+−10usだから
  10us/1s=1e−5即ち0.001%だ。1usのクロックではさらに下がって0.0001%だ。
  PICと違い複雑なので命令のクロック数やTIMERを使用してもその後の読み込み処理等も
  加えなければ成らないので、かなり苦労する。後クロックはTCXOのような外部オーブン付き
  高精度品を使用したほうが良いだろう。一般のクリスタルは50−100ppmくらい変動
  (主に温度変化)するので。

*8BITマイコンで似たような石に8052BASICがあった。イビデン産業からだされていたICで
 現在入手可能か(TEL0584-81-6133)不明だが、インタープリタBASICを書込済みでキットの
 ボードにRAMとRS232とPIO 24BIT(8255A)を搭載しROMと追加RAMも可であった。
 8BIT:BASICインタープリタ込み(8k):DIP or PLCC:数値+-1E-127〜0.99999999E+127
 なので、演算には問題が無い。RAMは64Kまで拡張できる。内蔵RAMは256byteなので
 外部拡張しないと,厳しい。CLOCKは11MHZくらいだ。SOFT開発は基本的にPCサイドで通信
 ケーブルを介して行う。詳細はCQ出版のNO.7製作研究 マイコン&メカトロニクスの誕生で
 ステッパードライブも詳細に載っているので、ロボット等の製作を考えている方には,是非揃えたい
 一冊だ。裏技でかっての名機シャープX1のように裏RAM64Kを足せば128Kメモリーも可能か?
 ちょとした工作にはいいかも。CALL命令があるのでマシン語とリンクも可。
 

 *実際の運用:例えば温度計測・制御に使用したいと思うとコスト上、白金抵抗体・サーミスター・
  K型熱電対が候補に上がる。K型熱電対かPRT(白金抵抗体)が良いのだが、
  K型の場合センサーは安いが温度補償線
  や端子・AMPに経費が掛かるのが欠点。後校正も含めた回路にしなければ、ならない。
  以前だとOFFSET・GAIN(SPAN)・直線性のVRを反復調整していたが、
  現在ではPRTの場合金接点リレーでその温度に対する基準抵抗を3 POINT設け,
  それとの比較で演算処理で補正するのが主流だ。調整個所が無いので安定している。
  K型の場合は基準電圧発生器を分圧して加えている。
  又信号処理もOFFSETの問題から逃げる為交流(1KHZ位の安定化正弦波+
  AGCか安定化方形波)処理して直流ドリフトの問題から逃げている。
  演算は殆ど1次方程式に近いので,表示ルーチンに
  若干の補正プログラムですむ。但し外部に出力(DC 電圧)するときは,
  補正が掛かっていない事に要注意だ!(余り要望は無いと思うが)。
  1%位の誤差を容認するなら補正はいらない。
  リニアー補正回路、又は専用の石で(AD社)0.1℃はいける。

*東京に出張があったので、3052FのCPUボードのみ買った。3048Fの改良版で
  ROMが512KにRAMが8Kに増えている。書きこみも5V(Vcc)で出来るようになった。
  XTALも25MHZになったので、アセンブラとC言語は一部書き換えが必要だ。
  但しBASICは使えないと書いてあるが後日TESTしてみるつもり。MOTHER BOARD
  (3048F)は電源等一部使用が異なるので多極スイッチで切替える(3048F/3052F)
  必要が有る。更にレジスターの一部の仕様が変わったので要注意。
  全体として云えば殆どコンパチといってよい。書込みSOFTも修正され高速・多用途になった。
  TESTプログラムとハード関連説明書はCD−ROMにPDFで入っているので便利だ。
  秋月電子の3048F開発KITに差して使用する場合注意が必要だ。改造が何箇所か有り
  筆者は4連SWITCHがあったので3048/3052を切り替えで使用出来るようにした。
  但し秋月の改造にVCCを5.5-9V位にして使用とあるが、最大定格7VにSPECがなっているので
  5V位にしておいた方が無難だ。5VはKITの12Vに三端子REG ICを(5V1A)を接続すれば、
  改造が楽になる。とにかく良くMANUALを読む事だ。更にSOFTのコンパチ性は後日記載する。
 
*3048FのMOTHER ボードを3052Fと兼用してに使えるように改造した。
 まずマニュアルでは7812三端子REGを外してIN−OUTをショートして,
 電源を5.5-9Vにしろとあるが,間違いだ。
 何もしなくて良いし,入力16Vも変更しなくてよい。ここは何処にもいかないので。
 3052Fも5V(78M05)のREG ICが載っている。但し放熱が不充分なので、これから
 5Vを、LEDや増設IC等に使用するのは少し酷だ。筆者は12VーREGから12Vをもらって
 新たに7805を取りつけて、予備電源とした。あと3052Fは書込みが5V及び一部接続
 しない端子(CN4)等があるので,SW二回路を付けて,3052F/3048Fと、どちらにも使用
 出来るようにした。それとCPU部で書込み時CN5のMD2の5−6を
 ショートしなければならない(3052F)。
 そこで,書込みスイッチも二回路に換えた。LCDは以前CPUの5Vから取っていたが
 予備電源5Vからに接続しなおした。3052FはXTALが25MHZになったので、
 もしSOFTの互換性を取るなら16MHZに差しなおすか、ランタイムの設定変更が必要だ。
 書込みSOFTも新しく高速になった。
 アセンブラとC言語(UNIX版GCCが付属)は広い意味で互換性(3048Fと)が有るが、
 BASICは全然書き込めない。但し裏技が完璧ではないが使える。
 まず3048FのBASIC コンパイラーでSOFTを
 作成しXXX.MOTのFILEをつくる。次に3052Fの書き込みSOFTで書きこむと、OKだ。
 但しクロックが16から25MHZになった事。レジスターの使用が若干異なること。
 メモリーの量とアドレスが違う事を認識しなければ、ならない。但し3048Fと殆ど
 コンパチであるので、又3048Fの方がメモリーが
 小さいので大体のSOFTは動く様だ。XTALを3052F/16MHZに載せかえれば、
 タイミング等は解消される。ADやLCD等のSOFTを(3048F用の)書込んでみたが,
 問題無く作動している。
 簡単に言えば3048Fレベルなら、ほぼそのまま使用出来るという事だが、それ以上になると
 メモリーや翻訳SOFTの関係で色々制限が出てきそうだ。3052F/3069F・USB対応の
 BASICコンパイラー作って欲しい所である。 
 只クロックが25MHZだと,多少動作が早く進むが。シビアーな所はアセンブラで,
 更にXTALも16MHzにして、注意深く作成すれば、
 3048F用のBASICコンパイラーでより大きなSOFTが出来る。
 XTALはスイッチ等で切替えてやれば、より便利になる。但し発振回路のコンデンサー
 の追加/変更が必要かも。
 その場合、CPU基盤とは別に外部クロックを2個もうけ,信号を供給した方が早いかも。


*色々とインターネットで調べてみるとYAHOOの中で奇特にも3052F
  のBASICを作成した方がいて しかも,無料で公開していた。
  元々3048F用のマイクロBASICなのだが、おまけで3052F用もついている
  お得なサイトである。興味の有る方は
  www.nana.or.jp/~hiramats/index.htmlを参照。
  昔習った行番号もサポートされているし、一通りコマンドが揃っていて、結構使えそうだ。
  mk.batによるアセンブラは注意が必要で,MOT FILEの中のRAM部分:
 即ち終わりのほうの
  ”S2”で始まる行を削除しなければならないが,無料なのでそれくらいは我慢。
 各PORT等は各自の使用条件で初期化しなければなりません。 
 インタプリタなので直接、コマンドTEST動作が出来るのでハードの開発には,極めて
 有効なTOOLになるでしょう。但しインタプリタがどのくらいメモリを
 消費するかについては、LOADして解凍後説明文を読んでください。
 
 
*先々週(平成15年7月上旬)に東京に数件紀伊国屋・丸善・八重洲ブックセンラー・書泉
  等の大書店を見てきたがH8.SuperHもあまり捌けていないようだ。
  一つは景気が悪いこと。次にPICが売れている事。上記2種が中途半端な事。
  更にブームが去り飽きられた事等々で、イマイチ関心が薄い。
  AD/DAはハッキリ言って不用。プログラムカウンタも中途半端で付けるなら
  32BITでつけてほしかった。ある程度大きくなると外部のC−MOS ICの
  カウンタをつけざるを得ない。RAMもバッテリーバックアップが必要で不便だ。
  IOのアクセス(容量がPICに比べて)能力が低い。16BITでOKだが
  サポートSOFT(簡単なC言語版)とメリハリを付けたプロセッサーになれば、
  もっと売れると思うのだが?


                       応 用 編 へ(ここをクリック)*