AT90S1200の活用

 AT90S1200、これ秋月電子で1個たった
\100で売って
います。TTL-ICでもこのぐらいするものもありますから、
使わないテはありません。

【AT90S1200の欠点?】
 AT90S1200は、AVRの中では最も初期のタイプで、何と
SRAMがありません! じゃ、スタックはどうするの?
ということになりますが、明示的なスタックは無く(スタック
ポインタがありません)暗黙的に3レベルだけ用意されて
います。

 割込を使えば、必ず1レベル使いますので、割込処理
中ではサブルーチンコールはしないことにしても、通常
処理でサブルーチンコールのネスティングは1回しかで
きないことになります。(callして、もう一回だけしかcallでき
ない。さらにcallすると、戻ってこれなくなって、おそらく暴走
するでしょう) こういう事情からでしょう、レジスタの値を
スタックに積む命令もありません。(AT90S1200以外のAVR
ではまがりなりにもRAMは64バイト以上は内蔵されています。
もちろん、push命令・pop命令もあります)

 プログラムで使えるのはR0〜R31の32個のレジスタだけ
なのです。とはいえ、直交性の高いレジスタが32個もあ
るので小さいプログラムならば充分に書けます。AT90S1200
のプログラムエリアは512ワードなのですから、どうあがいても
大きなプログラムは書けないのです。

【ほんの少しの利点】
 最近のATiny系やATmega系では当たり前になりました
が、CPUクロックとして内蔵RC発振器が使えます。ということは、
電源のパスコンとリセット端子のプルアップ抵抗だけ外付け
すれば動作させることができるということです。

【でも、、、】
 秋月で1個\100で売っているのは内蔵RC発振器がディスエー
ブルになっているバージョンです。Atiny系やATmega系では、内蔵
RC発振器のON/OFFはシリアルプログラミングできるのですが、
AT90S1200ではダメなんです。パラレルプログラミングでのみ、
内蔵RC発振器をON/OFFできます。

【しゃーないなぁ】
 そこでまずはパラレル式の書き込み器を作ることにしました。
さすがに手動でスイッチをパチパチするだけでパラレルプログラムの
シーケンスを実行するのはたいへんなのでAT90S1200を使います。
このAT90S1200は、ムカシに1個だけ手に入れておいた、工場出荷時に
内蔵RC発振器をイネーブルしてあるもの(AT90S1200A)です。もし追試
される方はこれに拘らず、内蔵RC発振器がディスエーブルの
AT90S1200に、セラロックなどを外付けしたものを使えば良いです。
(その方が安価です)

なお、このパラレル書き込み器はヒューズビットの内蔵RC発振器の
ON/OFFのみを切り替えるものです。ヒューズビットのシリアル書き込み
のON/OFFは切り替えることはできません。(常にシリアル書き込み=ON
となります。)




回路図です。DIP SWのON/OFFで、内蔵RC発振器をON/
OFFできるようにしました。電源をONして、+12Vがかかって
いないことを確認し、PUSHボタンをチョンと押して下さい。
一瞬、+12VがターゲットCPUのリセット端子に加わるはずです。
これで、内蔵RC発振器がON/OFFされているはずです。

パラレル書き込みは正確な+12Vが必要です。電圧に気を付けて下さい。




ソフトはこちら→ParaWriter.lzh

戻る