AVRに関するブログ記事

先週基板ができたので、今日はジャンパを通しました。 およそ30本。 面倒ですが、全部手配線に比べたら圧倒的に楽です。 ちなみにUEWを使って半田面に配線したので、部品面は未だにスッカスカです。 ISP用に背の高いコネクタをつけたくらい。 プログラミングはCPLD、tiny2313、mega88の3種...
AVR Tiny2313をROMとして動作させられるかどうか、ここのところ試行しているわけですが。 どうも、20MHz動作でも必ずアクセスが成功するというわけではないようです。 ごく稀にですが、誤動作することがあります。 ...

ATtiny2313 ROMエミュレータの高速化 先日のなんちゃってROMですが、Enable信号をモニタするのはスピード的に辛そうなので、バッファをつけてみました。 ...

ATtiny2313を使ってROMエミュレータ こんなものを試作してみました。 ATtiny2313をROM代わりに使おうというものです。 アドレスバスのピン数の都合で、64バイトまでしかハンドルできません。 あとは全部イメージになりますが、起動時だけなので問題ないでしょう。 やはりスピードがかなり...
AVRで音声を出すことができたので、今度は映像信号に挑戦中です。 映像信号の詳細についてはこのへんに詳細な説明があるので、いろいろ調べながらトライしてますが、まだきちんと理解しているわけではありません。 基本的には、PWMを使って正確なタイミングで同期信号を出して、それに映像信号を載せればいいみた...

ATtiny2313でのステレオサウンド再生テストです。 FT245RLモジュールと、ATtiny2313を使い、きわめて簡単な回路でやってみました。 データは単に垂れ流しているだけです。 これで少しだけBitBangモードの使い方がわかったような気がします。 回路はこんな感じ。 端子はすべてFT2...

CPLDも書けるようになったので、そちらはブレッドボードからユニバーサル基板へ実装を移したあといったん終了。 んで、秋月のFT245RLモジュールをテストしました。 とりあえず何をしたってわけでもないですが、秋月のサンプルプログラムを動かしてみました。 自分でUSBデバイスをいじれるってのはなかな...

パラレルポートからXilinxのCPLDに書き込めるようにJTAG用の回路を作ったのですが、これがうまく動いてくれません。 回路は次のようになっています。 WebPack 9.2iのiMPACTから通信させようとすると、デバイスIDがオール0またはオール1になってしまいます。 明らかに通信不良で...
ATtiny2313の実験回路を作ったので、ちょいと回路を変更してPWM出力をしてみました。 変更はきわめて簡単で、実験回路のPB2/OC0A(14番ピン)をD2から外し、RCAコネクタの信号線(内側)に入れます。 RCAコネクタのもう片方はGNDに接続します。 本体からの入力が1ビット使えなくな...

私の手元にはATmega88は一個しかなく、やたら使い回ししまくって壊すのも怖いので、先日買ってきたATtiny2313で実験を始めました。 まず、ラッチを使わずにデータをハンドルできるかどうかです。 次のような試験回路を使いました。 使っているORゲートはHC32です。 この回路では3段入れてい...
一応同時再生ができるようになったので、例によりニコニコ動画からムービーを適当に拾ってきて録画してみました。 <a href="http://www.nicovideo.jp/watch/sm6446981">【ニコニコ動画】PC-6001で再生してみた「もじぴったん」</a>...
現在、AVRは内蔵の8MHzクロックで動作させています。 もともと手持ちのものが古い(2世代目)ATmega8Lで、2.7V~5.5Vでの駆動が可能な代わりに8MHzまでの動作となっているためです。 姉妹品のATmega8は最高16MHzですが、4.5V~5.5Vでないと動作しません。 3.3V動...
SDカードインタフェースはほぼ期待通りに動作しています。 ハードを設計して、作って、ソフトを設計して、作ってというのは結構長い道のりですが、動いたときはうれしいものですね。 いつもはソフトしか作らないので、またこれも格別なものがあります。 とはいっても、今回は西田さんにもかなり助けられていますが。 ...
なかなか苦しんでいたAVR版SDカードインタフェースですが、ファイルのデータ読み込みまで動作させることに成功しました。 結局outの割り込み(INT1)の最後でペンディングしているin割り込み(INT0)を解除し、かつステータスデータをINT0割り込みで出すようにすることでタイミングが取れるようにな...
AVRでは、割り込み処理中にも割り込み"要求"自体が禁止されていなければ、外部からの割り込みに対して要求が発生するようです。 コメントにもあるように、その割り込みは保留(pending)され、現在処理中の割り込み処理が終了した後で処理されるようなのです。 このあたりが情報源です。 概念として、「割...

どうもうまく動いてくれないSDカードインタフェースですが、問題はクリアになりました。 わかりにくいので、シーケンス図にします。 この図で、PCからのリクエストがin/out命令で、OUT buffer/IN bufferがそれぞれフリップフロップやラッチです。 最初にコマンドをout命令で送出し、...
SDカードインタフェースのハードウェアが出来上がったので、早速実際のSDカード入出力を作り始めています。 まずは、試しにディレクトリ情報を読み出しています。 今回は、AVR側にFATシステムを入れることにより、高速化を狙っていますが、1ポートのインタフェースで通信するのはなかなか難しいことがわかり...

ROMレスシステムの回路を試しに描いてみました。 複雑度の雰囲気を掴むだけなので、正しい保証はありません。 まずは40ピン系(ATmega164/324/644)。 次に、28ピン系(ATmega8L/88/168/328)。 カウンタはATtiny2313を使ったほうが安くなりますが、わかりやす...
西田さんからのコメントがあったので、ROMレスシステムについて考えてみました。 基本的な考えは、 SRAMをROM領域(0x4000-0x7fff)に確保しておく (実際には32kB分のSRAMを0x4000-0xbfffに配置してRAM拡張を兼ねる) 起動時にSRAMにブートアップ用のプログラムを...

前回の回路がまた間違ってました。 アドレス線を使いたければ、データ線と同様ラッチしなければいけない これまでデータ線のみでアドレスのラッチを忘れていました。データのタイミングがAVRの割り込みからは間に合わないので、同然アドレスもラッチする必要があります。 ラッチではなくてフリップフロップを使う必要...

ラッチを使ってZ80との入出力ができることがわかったので、修正した回路図です。 Webページに収まるようになるべく小さく描いたので見にくいのはご勘弁。 ...
とりあえず、前回のテストは期待通りの動作をさせることができました。 原因はあちらこちらの断線でした。 UEWを使っていて、しょっちゅう回路を変更するものだから、そのたびに線をいじったりしているうちに断線してしまっているのでした。 直しては他の箇所が断線するいたちごっこ状態。 こんなんじゃ先が思いや...

I/O回路の要求には高速応答性が必要で、到底AVRの割り込み反応時間では間に合わないことがわかったので、バッファを入れる実験をしました。 例により、簡略化した回路です。 手持ちのラッチがLS373しかなかったので、電圧が混在しています。 プログラムのほうは、なんかoutしたら、そのタイミングでデー...

Z80からのI/O信号に対し、どのくらいでAVRによる割り込み反応が得られるのかを調査してみました。 回路は前回作ったものを使います。 PC-6001側からI/O命令を発行し、AVRの外部割込み入力をトリガにして反応を調べます。 まずは、主な信号線の様子。 ここで、INT0が活性化されている時間(...

レトロパソコンのインテリジェントな周辺機器を作るのに 大きな間違いに気づいてショックな今日この頃。 デコーダ・バッファは8255が入手困難な現在、手持ちのCPLD(Xilinx XC9536XL)があるのでそれでやってみようと思うのですが、困ったことにライタがありません。 ライタを作ろうにも、そのた...

以前設計した回路には、重大な盲点がありました。 2点あります。 割り込み要求線に^RD/^WRを入れておかないと、おかしなタイミングで割り込み要求がかかる Z80からのI/O要求に対する応答が間に合わない 割り込み要求線 以前の設計では、割り込み要求は次のようにしていました。 IORQの確定とRD...

遅々として進んでない(汗)AVR関連作業ですが、とりあえず現状の実験環境はこんな感じです。 写真の左側から、シリアルケーブル、9pin DSUBを0.1inchピッチに変換する基板(緑色)、COM-ISP変換(ユニバーサルボード)、そして実験用のブレッドボードです。 DSUB変換基板とCOM-...
AVRの実デバイスを使った実験を始めたので、メモ。 なお、ATmega8/AVR Studio 4.14/WinAVR 20080610を使っています。 リセットポートを使う場合の注意 リセットポートに値を出力設定しないように注意。 たとえば、mega8の場合、PC6(RESETを兼ねる)の値を出...