2008/04/29(火)MegaAVR ADCの使い方
基本
データシート嫁。サンプルコードから盗み取るでもOK。
変換タイミング
ADCEN直後はアナログ回路の初期化で+12クロックを必要とします。サンプル&ホールド処理期間が+12クロックと見てよいでしょう。
通常時のS/Hは、1.5クロックを要します。電圧を保持するコンデンサは、14pFで、入力抵抗が1~100kΩある模様。キャパシタは(Vcc/2)と繋がっている模様なので、対GND電位ではない。
sample&hold time
14pF, ドライブ側の出力インピーダンスを10kΩとして, 110kΩで充電すると,
となります. 72%程度のチャージができる時間だったはず..なので、コレよりも数倍の時間を用意すべきです。200kHzが上限となっていたのですが, 時間にすると5uSecですね.上記の仮定から, おおよそ妥当な値と思います.
今回は, 7.3728MHzのCKを6分周して, 115.2Hzとするので, チャージ時間は十分でしょう.出力インピーダンスは... 場所によっては50kΩ程度になるのですが,まぁ大丈夫でしょう. (τ=2.1uSec)
2008/04/29(火)mimetexの導入
導入方法
公式blogのマニュアルページに記載があります.設定方法は、こちらに, 記法についてはこちらに記載があります.
特に書くことも無いので、導入記録だけ...
$ unzip mimetex
$ cd mimetex
$ gcc -O2 -DGIF mimetex.c gifsave.c -lm -o mimetex.cgi
$ mv mimetex.cgi ~/public_html/adiary/mimetex/
TeX記法
[[tex:f=\frac{1}{\sqrt(x)}]]
という感じで, '[[~]]'で囲みましょう.
こんなのが得られます. フォントが汚い気がするのだけれどネェ...
2008/04/23(水)オリゲーフェスタ
イベント
オリゲー・フェスタ☆68・第11回に一般参加を予定。
この、 「オリゲーフェスタ☆68」出展キャンペーン開催中!(丸文株式会社様)という企業参加を見て、申し込んでみたところチケットをいただけるということで、見に行ってきます。Makeのほうも楽しそうだったようですが、展示側と一般参加とでは、視点も違うでしょう。それでも、刺激をもらえるという甘い期待をもって行ってこようかと。
スレを見ると、二次会が17時から。ということは終わりは15~16時くらいかな?始まりは何時だろう。時間情報が書いてないwww
適当に行って、昼前後から最後までぶらついているのがいいのかなぁ。つか、一泊いらないな。要らないわ。4日の夜に実家に帰って6日にもどるか。そうしよう。前半一週間は掃除と自分のメンテだな。
技術情報無くてスマン・・・。
2008/04/20(日)下まわり実装完了
前書き
ようやく、動作確認ができました。日々の生活リズムとか健康状態が重要ですネ。
もう少しだけ綺麗にしてからコードを公開します。ベースはあきぼうさんところから拾いましたが、誰が書いても同じようなコードになるのでアレですね。あと、インプリされていたコードのうち、Read系が壊滅的でした。自前のアセンブリコードを参照しつつ修正してなんとか動作にこぎつけました。データシートも見ずにやっていたのが最悪でした(^^;
あと、少しでも疑ったときには、そのコード全部書き直すつもりで取り組む必要があると認識しました。もう少しメジャーな公開されたライブラリを持ってくるほうが良かったですね。個人で情報を公開されていることについては、非常にありがたいので、これもまた個人ならでは、ということで。
基本機能
動作確認済み
基本、データビットは4ビットです。任意のビットから連続した4bitで動作可能です。アセンブリリストを見ると、少し冗長なのがきになりますが、アセンブラで書かないときついでしょう。
8ビットコードもありますが、動作確認できていません。リード系も実装しておきますかねぇ。
予定とか、仕様妄想
putchでもカーソル設定を毎回読んでいる実装なので、コレを修正する予定。コンソール出力イメージで使うケースと、ユーザで表示位置・文字数を全部調整したい場合とで切り替えたいでしょうし、マクロ化してしまうか、関数を分けるかしたほうがいいでしょうねぇ。個人的には、コンソール利用は殆ど無いと思うので、マクロで切って、標準はユーザでカーソル位置管理を任せたほうがよいでしょうね。
ケミコンの性能回復
nabeさんところのヘッドフォンアンプ記事に記載がありましたが、耐圧近傍で100h程度のエージングしないといけないのだとか。
今までそういうのは全くやってこなかったので、実は結構な損をしていたのかもしれませんねぇ。電源用途ばかりなので、A&V関係の製作は殆どありませんが。
そういえば、セレクタつきアンプってどうしたっけ....。どこかの箱に入ったままお蔵入りかも。メインアンプを取っ払ったから復帰させてもいいかな。
2008/04/17(木)[雑]LCDライブラリ自作(失敗
拙作ルーチンの移植~失敗(ぉ
あきぼう氏のavrgccでアセンブラを使うを参照し、アセンブラでライブラリを作成します。
;---------------------------------------- ;LCD_WriteCMD: LCDへコマンド1Byte送信 ;引数: register::LCD_DATA ;返値: なし ;---------- LCD_WriteCMD: rcall LCD_WaitBusy ; Wait for LCD BUSY SWAP LCD_DATA RCALL LCD_WriteCMDn ; $+1? LCD_WriteCMDn: mov tmp, LCD_DATA andi tmp, 0x0F ori tmp, (ID_DATA) ; P.U. out PORTD, tmp ; RS,R/W set sbi PORTD, LCD_E ; 2cycle, E Hi rjmp PC+1 SWAP LCD_DATA cbi PORTD, LCD_E ; 2cycle, E Lo ret
これ*1をエイヤこらどっこいしょとgcc向けにポーティングしようとして挫折。寝る前にさくっと終わるならいいかな?と思っていたけれども甘かった。いきなり汎用化記述を始めたのが敗因だなw。使用しているポートも変わるので、いっそのこと汎用化しようなんて考えたのが悪かった。
まぁ、寝不足に疲れのたまった脳では効率悪すぎたか(言い訳
氏のライブラリを伸ばして、コマンド待ちルーチン・データ入力ルーチンを追加することにしますかね。ウェイト部分をコマンドリードしてBUSY消えるのを待てばいいだけだしね。gccが吐き出したコードを見て、すげぇむだがあるようならアセンブラ化してしまいましょう。ただし、ユーザ定義のポート・ビットに耐えないといけないので、Cのままのほうが互換性は高そうですけれど・・・。無理にアセンブラ化しなくていいかなぁ・・。どうせLCDモジュールの処理待ちで待ち時間がかなりかかるはずだし。
ということはこの2時間ばかり捨てたということか('AP