エントリー

ユーザー「gshoes」の検索結果は以下のとおりです。

私のAppleII

 昨年秋に実家が引き払われ,すぐに必要がないが捨てるに惜しいものは,捨てるか自宅に運び込むかの判断を迫られました。

 多くが捨てられる運命にありながら(そしてそれは時に失敗でったことを思い起こさせますが),しぶとく生き残ったものがAppleIIです。

 このAppleII,経緯は良く思い出せないのですが,大学時代に働いていたパソコンショップに,ジャンクとして持ち込まれた大量の廃棄物に混じっていたものを,安く分けてもらったんじゃなかったかと思います。

 AppleIIに非純正の5インチドライブ,たったこれだけです。あとはお店に残っていた数枚のディスクのバックアップで,他の周辺機器もマニュアルも一切ありません。

 一応,DOS3.3が起動するところは確認出来たのですが,ProDOSは起動しません。そこから先はなにもすることが出来ず,また使い方もよく分からないので,そのまま放置していました。

 せめてなにかゲームが動けばなあ,と思ったりしましたが,ないものはないですし,そもそもこのAppleIIの素性がわからないですから,ゲームが動くものなのかどうかさえも判然としません。

 しかし,少し温かくなってきたこともあって,目の前にあるAppleIIを本気で動かして見ようという事になりました。(同時にPC-6001も復活させるのですがそれはまた後日)

 まず,このAppleIIが何者なのかです。調べてみると,AppleII J-plusであることがわかりました。RAMは48kB実装,ROMは10kBASICが搭載されています。キーボードにはカタカナも印刷されており,底面には冬至の代理店である東レのシールが貼られていますし,マザーボードにも"Toray"のスタンプがあちこちに押されています。

 当時わからなかったのはここから先で,まずJ-pulsとは何者なのか,です。互換性が低いので嫌われているとか,いろいろ話は耳にしますが,本当の所はどうなのでしょう。

 まず,東レが輸入したものですので,電源は100Vにもきちんと適応しますし,検査も行われています。信頼性は高いでしょう。ただし,F800からのモニタROMには,ベースとなったplusの"AUTOSTART"とは異なるROMが刺さっており,これが互換性を下げているのだそうです。

 ただ,この個体はROMがEPROM(2716)に換装されていて,そのためにCS2を反転させるインバータ(7404)を挟んだ下駄が履かされていました。これ,もしかしたらplusのAUTOSTARTに感想してあるんじゃないですかね・・・

 30年ぶりに通電しますが起動せず。ソケットを少し押し込めば起動するようになりましたので,接触不良だったのでしょう。

 次,ディスクドライブです。ニューテックという会社の互換ドライブ「飛鳥」で,チノンのハーフハイトのドライブが使われています。

 純正のDiskIIが良かったのですが,これもないものは仕方がありません。とはいえ,問題は互換性だけの話であって,信頼性や大きさなどは飛鳥の方がよいと思います。

 インターフェースカードは何故か純正と互換品の2枚が手元にあります。純正品は16と書かれたシールがあるので16トラック対応品でしょう。たしかどちらのカードも動作したと思うのですが,今回は純正品を使うことにします。

 これも最初は動かなかったのですが,抜き差しを何度かやっているうちに動くようになりました。接触不良には困ったものです。

 さて,ここまで動作する事がわかったので,一度分解して清掃します。ケースは風呂場でゴシゴシ荒い,キーボードはキートップを外して洗剤で洗います。マザーボードもホコリを払い,元通り組み立てます。

 綺麗になったAppleIIですが,さらに話を前に進めましょう。

 AppleIIには膨大なソフトがあるのですが,その多くが合法/非合法な形で,ディスクイメージとしてネット上に転がっています。体験するだけならエミュレータですぐ楽しめるのが良いところなのでしょうが,実機で動かすという話になると急激にハードルがあがります。

 AppleIIのディスクは一般的なフォーマットとは異なり,PCで書き込んだり出来ません。仮に出来たとしても,今どきPCに5インチの1Dや2Dのドライブが繋がっている可能性はほぼゼロでしょう。

 調べてみると,ADTProというソフトがあるそうで,これを使うとPCから実機に転送し,ディスクに書き込むことも出来るんだそうです。

 ただし,基本的にはAppleIIeやAppleIIcをターゲットにしているようで,私のAppleII+ではかなり大変なことがわかりました。

 まず,データの転送にはシリアルポートを使うのですが,AppleIIeやAppleII+ではSuperSerialCardなるカードが必要です。そんなもんあるかいな!

 そういう人のために,とカセットインターフェースを使う方法も用意されていて,その発想に感心したのですが,ディスクへの書き戻しはProDOSベースでないといけないそうです。

 そのProDOSはAppleII+でも動くのですが,RAMを64kBに増設しないといけないらしく,それにはLanguageCardなるカードが必要です。そんなもんあるかいな!

 とまあ,ここで詰んでしまったのですが,時代は21世紀です。今手元にある部品をかき集めれば,16kBくらいのメモリ増設など訳ないんじゃないかと,自作の道を模索してみました。

 AppleIIの生みの親のWozは,他社に先駆けてDRAMを手なずけて,安い価格で大容量メモリをAppleIIに与えることが出来ました。これがAppleIIの勝因の1つだと言えるのですが,私の手元には256kBitのSRAMが腐るほどあります。アクセスが簡単な非同期メモリであるSRAMを使えば,こんなカードは朝飯前,のはずでした。

 検討を始めて,私は増設っていうけど,どのアドレスにメモリを増設すんのよ,という疑問にぶち当たります。そう,AppleIIは,48kBのRAM,12kBのROM,そして4kBのI/Oがマッピングされていて,6502という8ビットCPUのアドレスをすべて使い切っています。

 64kBをすべてRAMにしてしまえば,ブートさえ出来ません。こういう時日本のマシンではバンク切り替えを使うんだよなあ・・・

 調べてみると,なかなかややこしいことがわかってきました。まず,64kBフルRAMしてBASIC以外の言語を走らせるために,LanguageCardというものがありました。

 これは16kBのRAMとF8のROMソケットがある純正カードですが,この16kBがマッピングされるのは本体のROMのエリアである$D000から$FFFFまでです。あれ,12kBしかこのエリアはあいていませんが,このうち$D000から$DFFFまでの4kBは,バンクを切り替えて2枚使えるようになっています。

 これで一応16kBマッピングできましたが,今後はROMとの切り替えが必要です。そこでカード内にソフトスイッチを設けて切り替えています。以下の様な感じです。

$C080 : BANK0のRAMをリード,ただし書き込みは禁止
$C081 : ROMをリード,2回目のアクセスでBANK0のRAMが書き込み可能
$C082 : ROMをリード,RAMへの書き込みは禁止
$C083 : BANK0のRAMをリード,2回目のアクセスでBANK0のRAMが書き込み可能
$C088 : BANK1のRAMをリード,ただし書き込みは禁止
$C089 : ROMをリード,2回目のアクセスでBANK1のRAMが書き込み可能
$C08A : ROMをリード,RAMへの書き込みは禁止
$C08B : BANK1のRAMをリード,2回目のアクセスでBANK1のRAMが書き込み可能

 いやはや,これを実装しないといけないんですね・・・面倒くさい。

 素直にLanguageCardやサードパーティーの互換品をデッドコピーすることも考えたのですが,これにはDRAMが使われているので面倒すぎます。ここはさくっとSRAMを使いたいのです。

 そこで,いろいろな回路を参考にして,256kBitのSRAMを使った16kB増設メモリカードを設計しました。

 256kBitだと計算があわない?鋭いですね,その通りで,今回は半分の16kBだけ使っています。もったいないですが,設計が楽なのでそうしました。

20220302153430.JPG

 これが完成写真です。SRAMは手持ちの関係でNECのuPD43256を使っています。あとは74HCが5チップで,なかなか小さくまとまっていると思います。余ったゲートは1つもありません。

 そうそう,~INHという信号を本体に戻す必要があるのですが,これ,本体内部でワイアードORされるので,オープンコレクタで出力しないといけないんですよ。でも,せっかくCMOSで作っていますし,わざわざこれだけのためにTTLを使うのもバカバカしいので,ここは基本に戻って,トランジスタで作ってあります。といっても抵抗内蔵のデジタルトランジスタなので簡単でしたが・・・

 あと,カードエッジコネクタと基板ですよ。今どきApple用のユニバーサル基板なんか簡単には手に入りませんので,MSX用のものを買いました。形がややいびつなのと,コネクタのサイズがやや大きいので削ったことを除けば,良い基板だったと思います。

 基板も高価ですし,せっかく作るのですから,真面目に回路を設計,検証して,間違いないように配線をしていきます。ソフトスイッチまわりはD-FFを多用しますので,その出力を上手く条件に当てはめて,SRAMのアドレスやらCSなどを作っていきます。

 慎重に進めた結果,一発動作です。これはうれしいなあ。

 DOS3.3では,整数型の6KBASICをこのカードにロードしてくれます。INTと打ち込めばプロンプトも>になりますし,6kBASICでないと動かないデモソフトも動くようになりました。

 さて,これでうちのAppleIIplusは64kBモデルになりました。ProDOSも動くはず・・・あれ,動きません。

 ロードが途中で止まりますので,RAMカードに問題があるのかも知れません。

 そこで,いろいろ調べたのですが,まずDOS3.3で6kBASICに切り替えが出来ているので,多分RAMは大丈夫なはずです。その後,どうにかRAMチェックプログラムを手に入れたのですが,やはり問題なしという結論になりました。

 ただ,このチェックプログラムは,文字化けがすごくて,まともに画面が表示されていませんでした。AppleIIeなど小文字が使えるマシンをターゲットにすれば文字化けも起こるものなので気にしてなかったのですが,どうも大文字ばかりが使われているようです。

 さらに同じプログラムでROMをチェックすると,F8のROMは"Unknown"となってしまいました。ここは本来"AUTOSTART"と出て欲しいのです。

 うーん,もしかしてこれがJ-plusの非互換性なのかも・・・

 とりあえず,AUTOSTARTのROMを入手しましょう。とはいえ,ROMそのものを手に入れるのはもう不可能。そこで,PlusのF8のROMイメージを手に入れ,これをEPROMに書き込むことにします。

 でも言うは易しで,私は2716や2732が書き込めるライタなど持っていません。これらはピン数が少ない,複数電源が必要,書き込みに21Vが必要ときつい縛りがあり,多くのROMライタが対応しなくなっています。

 ということで手持ちのライタで書ける2764を9316BというAppleIIのマスクROMに変換する下駄を作る事にしました。せっかくですので,PlusのROMの続きにJ-plusのROMも置いておき,スイッチで選べるようにしておきます。

 さっとバイナリを準備し,いざ書き込むとエラーで書き込めません。しばらく悩んだのですが,私が使っているLEAPER3cは27C64には対応していても,2764には対応していないことを忘れていました。そう,このデバイスには21Vの書き込み電圧が必要で,LEAPER3cは対応しないのです。

 仕方がないので27C256で書き込み,下駄基板を改造して本体に装着。凡ミスをいくつか修正して,起動させることができました。

 チェックプログラムでもROMを"AUTOSTART"と認識してくれるようになりましたので,ドキドキしながらProDOSをブートさせます。すると上手く起動してくれました。ああ,初めて見るProDOSの起動画面・・・

 こうなってくると,ADTProも動き出しますし,ゲームを書き戻すことも出来るようになりました。夢だったTimeZoneも,この目で実機で動くのを見る事が出来るなんて。移植版で死ぬほど遊んだChopLifterやLodeRunnerも,動いています。

 大きな感動に包まれ,こういう作業をちゃんと続けられる技術力がまだ残っていたことに安心したのですが,気が付いたのは5インチのFDの在庫です。2HDばかり手元に残し,2Dは捨ててしまったのですが,実はX68000もPC-9801も捨ててしまったので2HDには出番がありません。むしろ,X1turboやPC-6001,AppleIIといった2Dばなり使うマシンが残っているのです。

 しかも,貴重な10枚のブランクディスクは,カビにやられていました。

 そこで当時,高価だったディスクを節約する方法として良くおこなれた,裏返して使うという方法を試みました。

 AppleIIのディスクはかなり特殊で,インデックスホールを用いずソフトだけでセクタを管理します。なので書き込み禁止ノッチだけを開けてやれば,裏返しても使えるそうなのですが,果たして互換ドライブでも使える手口なのでしょうか?

 やってみたところ,上手くいきました。これでAE(ゲームです)なんかも1枚におさまります。

 ということで,立った1週間で急激にAppleIIを進化させました。まさか私のAppleIIのROMがAUTOSTARTではなく,それが原因でProDOSが動かなかったというのも,このAppleIIを入手した時には思いつくことすらなかったことでしょう。

 一発動作のRAMカードもうれしく,久々に30年前の根性による配線を堪能しました。面倒と思い土,やってみると楽しい作業でした。

 今回の製作にはもう1つ記念すべきことがあり,それはワイアリングペン用のワイヤを,とうとう使い切ったということです。

 それは小学6年生の時の話で,万能基板を使い出した当時の私は,配線をなんとか楽ちんに出来ないものかと悩んでいました。抵抗の足では交差させることができませんし,ビニール線では太くて盛りそばのようになってしまいます。

 そんなとき,ペンの先から細いワイヤーが出てきて,しかもハンダの熱で被覆が溶け,そのままハンダ付け出来てしまうと言う夢のような話があると耳にしました。当時よく行っていたシリコンハウス共立でも売られていましたが,輸入品だったのでびっくりするほど高価でした。

 そこで,消耗品として売られていたワイヤだけ買ってきました,それでも当時500円ほどしたと思うので,大変高価なものだったのです。

 本当にハンダの熱で被覆が溶け,そのままハンダ付けまで出来るのかなあと試したのですが,そんな甘い話はなく,被覆が溶けるのは事実でも,はんだめっきをしないでハンダ付けを行うのは難しく,そんなに作業が楽になるというものではありませんでした。

 ペン本体も,古いボールペンを改造して作ってはみたものの,やっぱり不便で使わなくなりましたが,一生かかっても使い切れないだけの長さのワイヤを,絶縁された極細のワイヤとして細々と使うことにしたのでした。

 しかし,数年後にはそこそこ使いこなせるようになり,このワイヤで多くのものを作ってきました。使っても使っても減ることのない,底なしのワイヤでした。

 そんなワイヤですが,少し前から量が減っているのが目立って来ました。そして今回,とうとう使い切ったというわけです。35年かかりました・・・

 実は,このワイヤはただのポリウレタン線で,コイルを巻いたり小型モーターをバラしたりすれば,簡単に手に入るものです。一応この太さのポリウレタン線はリールで買ってあるのでそれこそ一生困ることはないとおもいますが,独特の緑色で着色されたこのワイヤーが見納めになるというのは,さみしいと同時に妙な達成感もあったりします。

AVRの新シリーズとPICKIT4

  • 2022/02/09 13:36
  • カテゴリー:make:

 先日,SRAMとEEPROMを相互に読み書きする治具をAVR(ATmega88V)で作ったわけですが,実はブレッドボードで作りました。ブレッドボードはこれまで何かと窮屈ですし,綺麗に作る事が出来ない上に,苦労して作ったのにすぐに壊してしまうと言うはかなさが残念で,あまり積極的に使ってこなかったのです。

 まあ,結局の所ハンダ付けが好きだったという事に尽きるのですが・・・

 ですが,今年の冬の寒さは厳しくて,屋外並みに寒い作業部屋では耐えられず,暖かいリビングで作業をするために,ブレッドボードを使って見たところ,これがめっぽう面白いのです。

 DS1742Wの読み書きを行うプロジェクトは終わってしまいましたが,ちょっとさみしかったので,気になっていたAVR関係の宿題をやってみることにしました。

 私のAVRの開発環境は10年以上更新されておらず,IDEはAVR Studio4.19,コンパイラはWinAVR,ライタはデジットのAVRWRT2という,ミニマムかつ古くさいものです。そう,AtmelがMicrochipに買収されるだなんて,夢にも思わなかった時代のままです。

 ですが,tiny2313とかtiny13を使っている分にはこれでもう十分で,むしろ変に更新してしまうと,リビルドしたときにギリギリまで使い切ったメモリに入りきらないという話が出てきたりするので,そのままにしてあります。

 しかし,これではデバッグも厳しいですし,新しい品種に対応しません。秋月最安値のtiny13が値上がりして,代わりに最安値に躍り出たtiny202に移行しようにも,この環境ではコンパイルさえ出来ないのです。

 昨年の春にPICKIT4は買ってあったので,tiny202もこれで開発すれば良いのですが,それにはMPLAB XなりMicrochip Studioを導入しなくてはいけませんし,なによりAtmelがMicrochipに買収されたという現実を受け入れることから始めなくてはいけません。

 なにせツール類をアップデートせず,AVRをマイコンではなく汎用電子部品として使っていた私ですので,最新の状況にするには不安が伴います。

 AVRシリーズはどのくらいMicrochipに統合されているのだろう?
 AVRのコンパイラはXC8だけ?XC8ってフリーで使えるの?
 それまで書いたコードはリコンパイルで使える?
 PICKIT4でAVRってちゃんと使えるんかい?
 tiny202って旧シリーズのAVRとは何が違ってる?

 まあ,案ずるより産むが易し。AVRを使うと言うよりも,新しいマイコンを開発環境ごと新規に導入したので勉強し直しだ,くらいに考えて試してみましょう。

 まず,Microchipとの統合具合ですが,最近はかなり総合が進んでいるように思います。というのは,PICKIT4でAVRの開発をするのが当たり前になっているような感じですし,MPLAB Xを使って例もよく見るようになっているからです。

 ですが,私はAtmel Studioを引き継いだMicrochip Studioを使うことにしました。これでもちゃんとPICKIT4をサポートします。

 コンパイラはgccもちゃんと使えます。これは安心。XC8はフリーでも使えますが,最適化が出来ないので,メモリの小さな安いマイコンでは影響があるように思うので,私は使いません。

 そうなるとソースの互換性ですが,ほぼ大丈夫だと思います。思います,と言うのは正直に言って試していないからなのですが,実は知らない間にマクロの使い方が随分変わってしまっていて,リコンパイルする気が失せてしまったからです。

 例えば,_BV(PC0)なんていう書き方はもうしなくて,今はPIN0_bmと書いたりします。DDRBもPORTB.DIRと書きますし,これは本当に新しいマイコンを覚えるようなもんです。

 もちろん,古い表記でもビルドは通りますし,ちゃんと動きます。けど,わざわざ新しく書くコードで古い書き方を踏襲するのもおかしいので,この際新しい書き方を覚えることにしました。

 で,最初の一歩,ハードウェア界のHelloWorldたるLチカを書いて,PICKIT4でデバッグです。UPDIは非常に楽で,たった3本繋ぐだけでデバッグも書き込みもシームレスにこなしてくれます。これはいいですねえ。

 PICKIT4は高電圧書き込みも行えますので,私のようなうっかりヒューズビットを間違って設定してしまう人も救えます。

 ということで,tiny202 + PICKIT4 + MicrochipStudioで一連の作業が出来ました。やってみると簡単です。

 次はI2Cです。8ピンの小型マイコンではI2Cが使えるとなにかと便利で,LCDからEEPROMからセンサから,ピンを消費することなくペリフェラルを増やせます。しかも使う端子は2本だけ。

 tiny13やtiny2313では,私はGPIOを叩いてソフトでI2Cマスタを実装して使っていましたが,ATmegaシリーズではTWIというハードウェアが入っているので,随分と楽になりました。

 そのTWIが,tiny202には入っています。これは助かったと,早速使って見ようと思ったのですが,なかなか大変でした。

 こういう場合,同じTWIですのでコードの互換性はあると思うじゃないですか。レジスタ構成まで同じとはいいませんが,レジスタ名や手順などは同じじゃないかと期待していました。

 しかし,コードをベタ移植しても全然動きません。クロックが異なるせいかもと思って修正をしましたがだめでした。

 こういう場合は真面目にデータシートを読むに限ります。するとATmegaのTWIとtiny202のTWIは全然違うものだとわかりました。スタートコンディションの出し方も異なるほどですので,レジスタ構成だけではなく手順も異なるくらい全然違うものというのが正解でしょう。

 なんとか辻褄を合わせてようやく動き出しました。(実は回路も間違えていたので全く動かなかったのです)

 LCDもEEPROMも動いたので,これでI2Cは大丈夫でしょう。

 てなわけで,AVRの新シリーズを一通り動かしてみました。IDEもライタもデバッガも新しくなり,その上ソースを記述する作法や約束事も新しいとなれば,もう本当に新しいマイコンに手を出したこととなにもかわりません。

 ですが,そうだとしても,低価格,8ピン以下の小型が揃っている,多ピン大容量品もしかもDIPも手に入る,アーキテクチャが綺麗でCで書いても我慢しないですむ,そして世界中にユーザーがいる,というメリットはAVRの個性そのものであり,覚え直してでも使う価値があるものだと思います。

 特にtiny202などは,低価格なのに豊富なペリフェラルを備え,CPUにもハードウェア演算器を持つなど,安いマイコンでもここまで便利になったのかと思えるものに仕上がっています。

 惜しいのは,昨今の半導体不足のあおりを受けてか,秋月でも価格が上がったり入手が出来なくなっていたりすることでしょう。tiny13はかつて50円だったもんが110円と高騰していますし,tiny202は私が買った45円から50円に値上がりしてしかも在庫切れです。tiny202は安いときで1つ35円くらいだったこともあるわけで,それを考えるとホビーストにも厳しい状況が続いていると言わざるを得ません。

 私の場合,そのマイコンが使いこなせるとわかったとき,手元に在庫を持つようにしているのですが,今回改めて棚卸しをすると,おそらく死ぬまでに使い切らないくらいのAVRを抱えていました。tiny2313のフラットパッケージなんて,こんなにたくさんあってどうするのよ・・・



Zfcを修理に出す

 いかにZマウント,いかに最新の機種,とはいえ,基礎体力に根本的な差があるZfcとD850ですが,気軽さや小ささでZfcにはそれなりの出番があります。

 ですが,昨年くらいから,シャッターボタンを押し込んでもシャッターが切れないことがしばしば起こるようになりました。

 あれ,おかしいなと思っているとカシャッとシャッターが切れたりしますし,そうかと思うと2回連続でシャッターが切れたりします。このくらいの押し込みでシャッターが切れると思っていても,その通り切れることもあれば切れないこともあり,どうも安定しないのです。

 これはよろしくありません。強く押し込めば切れるのでしょうが,それではブレを防ぐ為に苦しい修行を重ねてようやく体得した「握るようにシャッターボタンを押す」という技が無駄になります。

 このまま悶々として使っていても精神衛生上よろしくないので,思い切って修理に出すことにしました。

 保証期間中ですので,持ち込み修理をすれば返却に配送を使ってもらっても無償です。ただ,電車賃をかけて,わざわざオミクロン株がまん延している町中に飛び込むのもバカバカしいので,小さめの箱に入れて発送します。

 1月25日に発送,翌日ニコンが受け取ってそのまま修理進行,2月4日に修理が完了し翌日受け取りました。

 結果ですが,シャッターボタンのスイッチを交換して頂いていました。これは期待出来ます。事実,最初はなんの問題なく,やっぱり購入直後は問題がなかったんだなあと思ったのです。

 しかし,何度か使っているとやはり再発,やはり解決していませんでした。

 そこはもう過度な期待をしておらず,こんなもんだとニコンが言えばそのまま引き下がるつもりであったこともあり,これ以上文句を言う気もないのですが,D850では同じように使っても起きないことですので,やはりZfcは手を抜いているということだと思います。

 まあ,もともとクラスも違いますし,押し心地も底を打った感じも全然違いますので,同じ物を求めるのは酷だろうと思います。こういうところで差が出るものなのですね,高級機とそうでないものの間には・・・

 幸い,2回シャッターが切れる問題はまだ出ていません。しかし時間の問題でしょう。
 
 そして今回の修理には失敗が2つ。

 1つは交換された部品の返却をお願いし忘れていたこと。特に今回のような念のための修理では,交換された部品も十分使える場合が多いのでなにかと役に立つのです。

 もう1つは,ISOダイヤルがグラグラすることをきちんと伝えきれなかったことです。発送時に思い出したのでメモに手書きして送ったのですが,見事にスルーされてしまいました。シャッターダイヤルと比べて見ると,明らかにグラグラするんですが,他の個体を見ていないので,これでいいのかどうかがわからないのです。

 相手も仕事でやっているわけですから,こちらもちゃんとお願いをしないといけません。次は気を付けないとなあと思うのですが,それにしても今回は得られるものが少ない修理だったと思います。


TDS3054BのRTCの電池を交換するためにAVRで治具を作る

 TDS3054Bというテクトロの古いオシロスコープは,私の持つオシロスコープでは最高のものです。4ch,500MHz,5GS/sと,今でも立派に通用するスペックですし,なんと言っても当時のベストセラー機であり,その測定結果はどこに出しても信用されるといって過言ではありません。

 ひょんなことから我が家にやってきたTDS3054Bですが,2年ほど前に内蔵の電池が切れてしまい,電源を切っている間は時計が進まなくなってしまいました。

 不便なのは測定前に時計を合わせることくらいなので別に困っていないのですが,やはりちょっと気持ちが悪いもので,このオシロスコープを使う作業が一区切り付いたら対策をしようと思っていました。

 TDS3054BなどのTDS3000シリーズは,リアルタイムクロック(RTC)として,DALLASのDS1742Wを使っています。このIC,コイン電池とRTCとSRAMをエポキシでパッケージしたもので,外からは16kbitのSRAMそのものに見えるのですが,電源を切っても中身が消えないという便利さから当時はずいぶん流行りました。

 しかし一次電池ですのでいつか電池切れになります。そうするとRTCもSRAMもバックアップ出来なくなるので,ある時急に「あれっ」となるわけです。

 今はフラッシュメモリやらEEPROMやらがあるのでこんなものを使うことはないのですが,ある時期の電子機器にはこういう特徴的なデバイスが多く使われ,その時は(ほぼ)永遠だと勘違いされた5年や10年がリアルに経過した時,様々な問題を引き起こしているんです。迷惑な話です,

 TDS3000シリーズは幸いなことに,SRAMでバックアップされる内容に重要なものはなく,完全に放電してデータが失われても使用を続けることが出来ますが,先程書いたように時刻を毎回合わせる必要があったり,セットアップが保存できなくなったりするので,やっぱり正常な状態に戻したいところです。

 戻すには2つの方法があり,1つは新しいDS1742Wに交換すること。しかしこのICは随分前に製造終了していて,入手はほぼ不可能です。よく中国の業者が売りに出していますが,あれはほぼ偽物です。

 ならばともう1つの方法ですが,これはパッケージを分解し,電池を交換することです。そんなに難しい作業ではありませんが,破損のリスクはあります。

 とはいえ,現実には後者しか選択肢がないわけで,私も電池交換で検討を始めました。

 まず,通電しながらだと電池の交換を行ってもデータは消えません。しかし,不慮の事故で消えてしまうと二度ととり戻せないので,なんとかバックアップを取っておきたいところです。

 先人達の知恵を借りれば,なにやらDS1742Wの読み書きも可能な安価なROMライタがあるそうです。ただこれ,かつては4000円ほどで買えたものが,今は8000円以上するようです。それでも十分安いとは思いますが,4000円が8000円ですからね,バカらしいです。

 そこで自作することにしました。DS1742Wのデータシートを見ていると,本当に普通の非同期SRAMです。ならば,使い慣れているAVRをつかってさっとでっち上げてしまいましょう。

 ピン数の関係で,ATmega88Vを使うことにします。まず8ビットのデータバスと11ビットのアドレスバス,これにコントロール信号を確保します。

 それから,16kbitのデータを保存するメモリがいりますが,これは電源を切っても残っている不揮発メモリであって欲しいのですが,あいにく内蔵のEEPROMでは全然たりません。なので外部にI2CのEEPROMを用意します。I2CはATmega88VではTWIで簡単に実現出来るので,ついでにI2CのLCDも取り付けて便利にしましょう。

 しかしこの段階で端子が1つ足りません。ならAVRのリセット端子をGPIOに切り替えればいいよと手を打ったのですが,これをヒューズビットで設定してしまうと,もう普通のプログラマでは書き込めないことを忘れていました。

 そこで,SRAMのCSとOEを常時Lowに落として読み書きすることにしました。SRAMからEEPROMへ転送,EEPROMからSRAMに書き戻し,そしてベリファイと機能を実装し,普通のSRAMでテストして完成!

 早速TDS3054Bを分解しDS1742Wを取り出し,自作のリーダーにセットします。そしてEEPROMにデータを保存します。EEPROMを専用のリーダーでPCに読み出してダンプすると,なんかおかしなデータっぽいのですが,正解がわかりませんのでこれまでのテスト結果を信じ,先に進めます。

 TDS3054Bにはソケットをハンダ付け,取り外したDS1742Wは慎重に削って電池を露出させます。すでに電圧は0.6Vになっていて,もう動かないも同然です。

 新しい電池はCR2032を外部に電池ケース使って用意します。古い電池と並列に繋いで直ちに古い電池をカットして作業は終了です。作業は上手くいったのでデータは消えていないと思っていたのですが,TDS3054Bに組み込むと,やっぱり時刻も狂っていますし,連続稼働時間も無茶苦茶になっていました。セットアップも初期化されています。

 ならばとすでに保存してあるデータをEEPROMから書き戻します。しかし,やっぱりデータは化けたままです。ああ,正常にデータを保存できていなかったのです。

 もう消えてしまったのですから,今さらどうすることも出来ません。あきらめてSRAMの内容を初期化しました。連続稼働時間も0時間にリセットです。

 しかし,何が悪かったのか気になるじゃないですか。そこでもう一度自作のリーダーのコードを見直し,さらに波形も確認すると,SRAMからのリードにバグがありました。実は,念のためにいれた一行を,結果が同じだからとコメントアウトしたんです。しかし,波形を見ると必要なコードであることがわかりました。

 AVRは,ポートに出力する時にデータを設定するレジスタが,入力時には内蔵プルアップを指定するレジスタとして機能します。SRAMをリードしてその結果を読み込んだあと,単に出力に切り替えただけだとプルアップの端子がデータによって毎回変わるようで,入力ポートにする時には同時にプルアップの設定もやり直す必要があるのでした。

 ここを修正して改めてDS1742Wをリードすると,今度はそれっぽいデータが読み込めています。これを書き戻してTDS3054Bにセットすると,元の状態で起動することも確認出来ました。しかし時既に遅し。DS1742Wは初期化されています。

 ならばと,連続稼働時間を復活させようと,メモっておいた時間を所定のアドレスに書き込んでやりました。すると連続稼働時間だけは元に戻せました。やれやれ・・・

 しかし,電源投入回数だけは戻せないのです。これは,電源投入回数はSRAMではない別のメモリに書き込まれているからだそうで,ここを初期化してゼロにすると,もう復活させる方法はないということでした。

 完全に元の状態に戻すことは出来ませんでしたが,バッテリは復活してデータの保存は出来るようになりましたし,時刻も毎回合わせずに済むようになりました。連続稼働時間は戻せましたが電源投入回数は失われてしまいました。その他に支障はなく,残念ながら今の私に出来る事はこれ以上ありません。

 加えて,私がAVRで作ったリーダーは正常に動作し,SRAMの読み書き,EEPROMの読み書きも問題なく出来ることが確認出来ました。つくづく惜しいのは,本番に行く前にちゃんと波形を見ておけばバグに気が付いただろうなあということです。波形確認は大事ですよ,本当に。

 そして,リセットをGPIOにしてしまった書き込み出来ないATmega88Vですが,これはリセッタを自作して復活させました。久々にAVRで遊んだわけですが,もう少し慎重にやらないといけません。

 ということで,久しぶりに仕組みを考え,ハードを設計して組み立て,ソフトを書いてバグを取って,という一連のパズルを楽しみました。目的がないとやる気が起きない不精者のホビーストですが,やっぱりモノづくりは楽しいものです。

 

魔法のトースター

  • 2022/01/20 16:09
  • カテゴリー:散財

 新年があけてしばらくたちましたが,今年はどういう訳だかヨドバシの福袋(正しくは「夢のお年玉箱2022」だが面倒なので以後福袋)があたりました。

 毎年外れるので期待していなかったのですが,毎年応募しているのがキッチン家電の夢,というものです。お値段は毎年1万円で,ヨドバシだけに最終的に損をすることはないのですが,使わないものやダブったものがあると1万円だけに笑って済ませるわけにいかなくなるのが,購入者の忠誠心を試されていると感じています。

 で,てっきり1月1日に届くものだと思っていたら,なんと12月28日のクソ忙しいタイミングで届いてしまいました。ほろ酔い気分で品定めと思っていた所が,なんとまあ年末のドタバタの中で開梱することになって,お年玉気分もあったもんじゃありません。

 果たして,届いたものは主に3つでした。

 まず,アラジンのトースター。ここ最近某社が発売した高級トースターによって,数千円の商品に万単位のお金を出せる人が多くいることがわかり,大手を含んだたくさんの紫綬を参入があった分野ですが,アラジンもその1つでしょう。

 あれこれとうんちくを語っていますが,結局トースターですので,熱源の違いはあっても機能は同じ。もっといえば美味しく出来ればそれでいいのです。

 うちは,場所の関係でオーブンレンジのトースト機能を長く使っていました。これ,おそらく世界中の誰も使っていないと思うのですが,時間はかかるし裏返さないといけないし,あげくに美味しくありません。

 パンを製パン機で作っているのですから,ぜひ美味しくトーストを食べたいわけですが,やっぱり場所というのは大きな壁で,なかなか買うことができていませんでした。

 しかし,強制的に送りつけられれば話は別です。なんとか場所を作って設置,早速1枚目を焼いてみたところ,これがなんとまあ美味しいことか。

 美味しいことはわかってましたが,それ以上にうれしかったのは短時間であること。朝の忙しいときにわずか2分でトーストが焼けるというのは,実にありがたいのです。

 美味しいので食べる時間も大幅アップ。いいことずくめのトースターでした。

 次に焼き肉のグリル。ファミリー用の大型のものは出すのも片付けるのも面倒で,肉が美味しく焼けるのは分かっていても,ついついガスで焼いてしまいます。

 そこへこのグリルです。個人向けなので小さく,肉を焼くことに特化したものなので変な付属品もありません。試してみたところ上手く肉が焼けました。

 残念なのは,丸洗いできないことです。まさか網とヒーターが一体化しているとは思わないですよね。紙で拭いて終わり,なんて,そんな汚い片付け方は許せません。

 昨今,牛肉が高いので気軽に焼き肉というわけにはいきませんが,これもなかなかあたりだったと思います。

 最後はちょいなべ。

 もし私が独身だったらうれしかっただろうと思いますが,今の私は家族の胃袋を預かる大役を担っています。自分だけ調理して食べるなんてのは許されません。

 湯沸かしケトルで料理をしたら,というコンセプトなんだろうと思いますが,私にはいまいち使い道が思いつかず,開封前に嫁さんの妹さんに所に旅立っていきました。

 ということで,個人的にはトースターの強制というお年玉に大満足だったわけですが。もう欲しいものはないと思っていたキッチン家電でさえも,まだまだ入手可能だったりするんだよなと,大量消費時代の怖さを感じたのでした。

 

 

ユーティリティ

2026年04月

- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -

検索

エントリー検索フォーム
キーワード

ユーザー

新着画像

過去ログ

Feed