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の割り込みからは間に合わないので、同然アドレスもラッチする必要があります。 ラッチではなくてフリップフロップを使う必要...