トップページ | 2006年7月 »

2006年6月30日 (金)

AVR入門

USART

昨晩作った ADM3202AN 基板を使って、ブレッドボード上の
ATmega88 と PCを繋ぎ、ハイパーターミナルで通信して見た。

Avrusarttest0

 

 

Avrusarttest1

 

 

 

ボーレートを設定し、UCSR0Bレジスタの受信/送信許可ビット
を立てればOK!UDR0レジスタを読み/書きするだけ。
AVRって使いやすいかも。

| | コメント (0) | トラックバック (0)

2006年6月29日 (木)

AVR入門

ADM3202A

ATMega88のUSARTとPCをシリアルで繋ぐのに
レベル変換と論理反転をする必要があるらしい。

レベル変換は、抵抗2本があれば可能だということを
PICの時に学んだ。入力ピン保護用のクランプダイオードが
活躍する。最初この2本抵抗のレベル変換の回路図を
見たとき、この仕組みが理解できず衝撃を受けた。

かっこよくソフトウェアUSARTを書く技術があるなら、抵抗2本で
いいだろうが、お手軽内蔵USART機能を使うなら、レベル変換
以外にも信号の論理反転しないといけない。

そこで、正統派MAX232(互換)ICを使って基板を作って見た。

Rs_level_converter  

 
Dsub9ピンのコネクタとADM3202Aが載っているだけ。

| | コメント (0) | トラックバック (0)

2006年6月28日 (水)

ビール

えびす黒

本日、仕事が終えてから夜間の放水訓練。
自然水利が取れそうな、最寄の河川に消防車を走らす。
可般ポンプからホースを繋ぎ放水。
終了後、器具の手入れを終えてから、仲間と飲みだす。

自宅では「なんちゃってビール」だが、本日は本物のビール。
しかもエビス!

つい携帯電話で写真を撮る。

20060628  

 

 

以上。今夜も酔っ払っている。

| | コメント (0) | トラックバック (0)

2006年6月26日 (月)

AVR入門

キャラクタ型グラフィックLCD

ATmega48/88/168のデータシート上のUSARTの項目を読む。
お決まりのシリアル通信なので、比較的理解し易い。

早速PCと繋いでみたいところだが、ブレッドボード上でせっかく
AVRとLCD繋いでいるのだから、PCからのデータをLCDに表示
してみたい。
テストとしてPCからの入力をエコーバックするコードを書けば、
十分な気もするが、やはりそれだけじゃつまらない。

で、6×8ピクセルのフォントをでっち上げて、文字出力ルーチンを
書く。20文字×4行のキャラクタ表示器みたいになった。

これを使ってPCのターミナルソフトと通信してみたいと思う。

Avrlcdtest4

| | コメント (0) | トラックバック (0)

2006年6月23日 (金)

AVR入門

Hello World!

引き続き、グラフィックLCD制御。
必要な、及び必要になりそうなサブルーチンを実装する。
しかし、色々な用途に使えるようにと汎用性や再利用性を
求めすぎると冗長になり過ぎ、結局専用ルーチンを
書き直すはめになるので程々にする。

で、テスト表示用にグラフィックパターンを用意しようと、
PCのペイントでBMPファイルを作成した。
内容は「Hello World!」と文字が描かれた画像。
やっと、入門者御用達の"Hello World"にたどり着いた。

PC上でBMPデータを、AVRのアセンブリソースに変換する
プログラムを書く。C++コンパイラを使うが、書いたコードは、
どう見てもC言語。それでも拡張子は"CPP"。

出来上がったのがこれ。

Avrlcdtest2  

 

 

ん?なんかずれてるぞ?

AVR側のバグじゃなく、PC上の変換プログラムに問題が
あるくさい。ひとしきり悩んだが、BMPファイルをダンプした
ものと、変換後に生成されたデータを比較。
0x0Dというデータだけ抜け落ちている。

反射的に0x0Dがテキストファイルのリターンコードで
ある事に気づく。何の事は無い、変換プログラムで
タイプミス。BMPファイルをテキストモードで開いてました。

修正したのがこれ。

Avrlcdtest3  

 

 
orz

| | コメント (0) | トラックバック (0)

2006年6月21日 (水)

AVR入門

グラフィックLCD

今夜もグラフィックLCD。

今回はLCDの資料をみっちり読んだし、
昼間仕事中ちょいと頭の片隅でアルゴリズムを
考えといたし、何よりお酒が入ってないので、
ちゃんとコードが書ける。

ぱぱっと初期化/入出力ルーチンを書き上げ、テスト。

Avrlcdtest1  

 

 

なんか、出た。

0から60までの数値を LCD RAM に書き込んだだけだが、
プログラムに書いた通りの動作はしているみたい。

| | コメント (0) | トラックバック (0)

2006年6月20日 (火)

その他の醸造酒

醸造酒

ゾウジョウシュ?、ジョウジョウシュ?ジョウゾウシュ・・・・・・
あぁ、言いにくい!早口言葉?

今夜もグラフィックLCD制御をやっている。プログラム編である。
何分、AVRに慣れていないので、データシートとインストラクション
マニュアルとヘルプ等のドキュメントを開き、それらと
LCDの資料に目を配ばせながらソースコードを書いている。

このくらいのコード、サクサクサクサクサクと書いてしまいたい
のだが、思っていたより自分の能力は大した事ないらしい。
資料の確認のつど手が止まる。まあ素人だし。

そんな折、友人から「牛筋の煮込み」をおすそ分けとして頂く。
「酒の肴にどうぞ。」
どうもコイツは、私が毎晩飲んだっくれていると思っている
らしい。まあいいが。

せっかくうまそうな肴を頂いたので、ビールもどきを冷蔵庫から
取り出す。”Draft One 夏色缶”
この缶のラベルを読み、驚愕の真実を知る事になった。

世の中には、

ビール>発泡酒>その他の雑酒2

というヒエラルキーがしっかりと構築されていると
思っていたのだが、件の”Draft One 夏色缶”には
「その他の醸造酒(発泡性)①」と表記してある。

いつの間にか雑酒から発泡性醸造酒にリカテゴライズ。
字面からは、格上げされたような印象を抱く。

そー言えば酒税も上がってたな。

そんな訳で、この大発見に気が動転して、コーディングは、
また後日。酔っちゃったし。

| | コメント (0) | トラックバック (0)

2006年6月19日 (月)

AVR入門

SG12232

秋月電子のグラフィック液晶モジュールを入手!
AVRに繋いで見ようと思う。

このLCDユニット、制御に EPSON S1D1520(準拠)という
チップを使っているらしい。早速ググッて、それらしい資料を
発見。この資料をダウンロードし、ハードコピーを眺めて
理解したことは、このLCDにくっついて来た、A3両面刷りの
紙ペラ1枚に、必要な事は全部載っていたということ。

さすが秋月電子、資料は良く確認しよう。>自分

一通り資料を眺めていると、昔弄っていた IBM ChipCard の
表示部に似ている部分があり、一瞬懐かしさのあまり思い出に
耽りそうになるが、気を取り直しAVRとの接続を考える。

使用するAVRは Mega88。LCDの表示部は左右61ドットで
分割されて、2つのコントローラが制御している。
全画面のデータを転送するには、それぞれのコントローラに
コマンド/データを送らないといけない。
この部分がプログラムを書く上で若干煩雑になる。
そこで、全画面分のフレームバッファを用意し、必要に応じて
フレームバッファからLCDにデータを転送するようにする。
こうする事で、フレームバッファには、リニアにアクセス出来き、
グラフィックの重ね合わせ等の処理が行いやすくなる。
ChipCard のアプリケーションはそうして書いた。
Mega88 なら SRAM を1KB積んでいるので、全画面分の
バッファを割り当てる事が出来る。

また、このLCDはデータ信号に8本分のI/Oピンを必要とする。
それと、約2KHzの液晶駆動クロックが必要。
これは、タイマ・カウンタ0をCTC動作させ、
OC0Aの出力を使う事にする。

これらを考慮して、ブレッドボード上に配置したのが

Avrlcdtest0 これ

 

 

写真では解りにくいが、LCDがコネクタ/ケーブルに
持ち上げられていて、宙に浮いている。
遠からず重力という物理法則に負けてしまうのでは
ないかという、とても不安な気分にさせるバランスを
保っている。

ユニバーサル基板にテスト回路を配線した方が、
良かったんじゃないかとも思うが、
以前(といっても3カ月前)、PICで16文字×2行の
キャラクター型LCDを駆動する基板を作った時に、
特定のI/Oポートが入力専用だったり、オープンドレイン
だったりすることを良く理解せず、痛い目を見た。

そんな程度の私は初心者。

今回はLCDを駆動するファームが出来るまで、
ブレッドボードを使って見たいと思う。

| | コメント (0) | トラックバック (0)

2006年6月16日 (金)

PIC

HDDインジケーター

週末、なんちゃってビール(その他の雑種2)を飲んで
酔っぱらっているんで、今夜は何もしない。
ので、PICで作った物の写真を遺しといておこうと思う。

マイクロチップ社のサイトにあった、IOピン4本で12個のLEDを
制御する
←これを知り、HDD LED bar graph←これを
8ピンのPICで作って見たくなった。

Pc1   

 

 

 

使ったPICは12F683、8ピンのヤツ

Pc2_1

 

 

 

これの動画

PICも好きだが、AVRを使い始めるとちょっとPICに戻れない
気がする。

| | コメント (0) | トラックバック (0)

2006年6月15日 (木)

AVRライタ その3

ISPコネクタ

今夜はでんし研(TADさん設計)のZIF式DUALライタに
ISPコネクタを付けてました。

Dualwriter  

 

ISPケーブルはこれから作ります。

| | コメント (0) | トラックバック (0)

2006年6月14日 (水)

あの人専用

車が赤かったので

ダンボールを切り出して、
Anohito0_2  

 

 
色画用紙を貼る。
Anohito1
 
 

 
で、装着!
Anohito2  

 

 

 

 

あの人専用。通常より3倍早く現場に駆けつける・・・・・・

はずありません。
(スグハズシマシタ。)

| | コメント (0) | トラックバック (0)

2006年6月13日 (火)

AVR入門

割り込み

タイマの使い方が少し解ったので、タイマで割り込みを掛けて
見ようと思う。必要なのはインタラプト・マスク・レジスタで、
該当する割り込み許可する事と、ベクタテーブルに処理先の
アドレス
を書き込む事。処理部では割り込みフラグをクリアする
必要はないらしい。
↑処理先にジャンプする命令

とここまで書いて、「眠い」というノンマスカブル・リアル割り込み
が発生したので続きは後日にする。
明日も仕事だし。

| | コメント (0) | トラックバック (0)

2006年6月12日 (月)

AVR入門

LDEチカチカ

今週も再びAVR入門。タイマ/カウンタの機能を学ぶ。
Hero'sDownloadIndex からダウンロードした日本語訳の
データシートに何度も目を通す、なかなか手強い。

1読目、タイマの機能そのものと、各種設定用のレジスタ類
を把握していないので、頭の中は???
私の理解度を進化の度合いで表すと→お猿さん状態。

2読目、いくらか全体の構造が見えて来た。
進化の度合い→後ろ足で立ち上がる。

3読目、利用するタイマの設定手順が薄ぼんやりと浮かぶ。
進化の度合い→動物の骨を武器に闘争相手と戦う。

タイマの設定手順が思い浮かんだ所で、テスト方針を整理する。
タイマ0をCTC動作させて、OC0Aピンをトグル出力させる、
OC0AピンにLEDを繋ぎ、その状態変化をLEDの点灯で確認する

方針が決まれば早速コーディング。
進化の度合い→動物の骨を空高く投げ上げ、骨はやがて宇宙空間に・・・

などと、「2001年」に思いを馳せている場合ではなく、
出来上がったコードを実行すると、LED点きっぱなし。
進化の度合いも、お猿さんに逆戻り。ウッキー。

実はプリスケーラの設定にしくじって、タイマの周期が約3.9KHz位に
なってました。この周波数じゃあ点滅を確認出来るわけないですね。
もう一度約3.8Hzで点滅するように再設定して、動作を確認。
ウッキー!

明日の自分の為に

  1. タイマ0の動作/停止及びプリスケーラの設定はTCCR0B
  2. 動作モードの設定はTCCR0AとTCCR0BのWGM00~02
  3. TCCR0AのCOM0A/B0,1でOC0A/Bピン出力設定が出来る

| | コメント (0) | トラックバック (0)

2006年6月10日 (土)

キーボード

エレコム TK-UP84CPSV

何気に寄ったPCショップで発見!
恐ろしく小さいキーボード。ハンドヘルドPCのキーボードを
そのまま外付けキーボードにした感じ。
まともに打てるんだろうか?と、通路にしゃがみ
(お客さん困るなぁ、通路でしゃがみ込んじゃぁ)
膝の上に見本のキーボードを置いて、両手でタッチタイプ。
意外とちゃんと打てる!

見本を棚に戻し、もう一度しげしげと眺めその小ささに大興奮。
迂闊にも買ってしまいました。

どのくらい小さいかというと、

Keyboard0  

 

 

上が日頃常用しているキーボード、下が小さいヤツ。
小さいでしょ?
実は常用キーボードも結構小さいヤツで、フルサイズの
キーボードと比較すると、

Keyboard1  

 

 

こんな感じ。

| | コメント (0) | トラックバック (0)

2006年6月 9日 (金)

AVR入門

printf( "hello world !\n" );

ぽちぽちとテストプログラムを書いて AVR の世界を味わって
見たいと思う。テストプログラムと言えば(文字出力のある
処理系ならば)お約束として"hello world !"と表示したいところ。
しかし、コントローラーワンチップのテストに文字出力なんて
望めるはずもない。

なので、この手の場合のお約束として"LEDチカチカ"をやって
見たいと思う。あまりにベタな展開だと思うが。

  1. PB0 → タクトスイッチ → VSS
  2. PB1 → LED → それなりの電流制限抵抗 → VCC

こんな具合にブレッドボードに部品を配置

Avrtest00 

 

 

タクトスイッチを押すとLEDが灯るというコードを書くことにする。

「スイッチを押すとLEDが点灯するだけの回路なら、
間に AVR なんか挟むことないじゃん。」

という気分が猛烈に沸いてくるが、構わず AVRStudio を起動する。
インストラクション表を片手にコーディングしていると

LDI     R0, ( 1<< SWITCHBIT ) ; SWITCHBIT = 0 ← PortB 第0ビット

でつまづく。
何でこれがエラーなの?とパニックになりかけるが、コード一覧表で
LDI 命令のディスティネーションオペランドの指定に4ビット分しか
割り当てが無い事を発見し納得。よくよく見ると LDI 命令は
R16 から R31 しか使えないという記述もある。

マニュアルはよく読め>自分。

確かに、他人が書いたコードを見るとレジスタはR16から使われて
いる事に気づき、今更ながら納得。
「命令の直行性」という言葉に疑念を懐きつつ、使用レジスタを
変更する事でプログラムは無事動作。満足。

今夜はスパークリング麦茶(ビールとも言う)を飲んでいるので
これ以上の深追いはしないことにする。
↑つい見栄をはってしまったが、正直に言うと飲んだのは
"その他の雑酒2"だった。

| | コメント (0) | トラックバック (0)

2006年6月 8日 (木)

AVRライタ その2

ファーストライト

天体望遠鏡とかの観測装置で、始めてその観測装置に飛び込んで
来た光/画像をファーストライト( First Light )と呼ぶらしいです。

私もせっかく作ったAVRライタで、始めて何かのコードを
ファーストライトさせて見ようと思います。
(ええ、日本人ですもの。Light と Write の聞き分けなんて出来ませんよ。)

このDUALライタ、実際に作成しAVRStudioで認識させたところ、
なんの不具合も無く1発で認識されて、何が起こるかと身構えていた
こちらとしては、ちょっと拍子抜け。
普通こんなにすんなりとはいきません。もちろん、TADさんの設計の
事では無く、私の製作ミスの事を言っているんですがね。

ただ、私のインストールした AVRStudio V4.12 SP2 の環境だと
AVR ボタンを押すたび

2006060701

 

 

 
ファームウェアが 2.04 だから 2.07 にアップデートしろとダイアログが
出るんですよ。しかし、でんし研のDUALライタTiny26版は、
ソースコードが公開されています。そこで、人様のコードに
勝手に手を突っ込むのはちょっと心苦しいのですが、
ソースコード上のファームのバージョンの定義を 2.04 から
2.07 修正します。
また、このコードはプログラムがきちんと書き込まれているか
確認する為、スタート時にプログラム全体のチェックサムを採る
仕組みになっているので、この部分もコメントアウト。

そして修正したソースを AVRStudio で再アセンブルして、
出来上がった Hex ファイルを予備の Tiny26 に書き込みます。
DUALライタで。

これが、このライタの「ファーストライト」でした。

あとは、DUALライタ上の Tiny26 と 書き上がった Tiny26 を交換。
AVRStudio で認識させると、上記のダイアログは出ません。
ああ快適。

当たり前のように、何事も無く AVR にプログラムを書き込める環境が幸せ。
TADさんに感謝。

| | コメント (0) | トラックバック (0)

2006年6月 7日 (水)

AVRライタ その1

AVRライタ作成しました。

昨年まで、PICというのは1チップマイコンの総称だと思っとりました。
アトメル社のPICとかルネサス製の16ビットPICとか・・・・
恥ずかしいですね。

そんなひ弱で坊やな知識しか持たなかった私も、
PIC入門書と秋月のPICプログラマキットを購入。
マイクロコントローラの世界に入門。

幾らかマイクロコントローラを理解し始めて数ヵ月、
AVRというコントローラを知りました。あちこちのサイトで
情報収集して見ると、このコントローラかなり良さげです。
良さげというより、AVR関係のサイトでは賞賛の嵐。
なんとなく、昔の80系CPUに対する68系CPUファンの反応を
思い起こさせます。

とりあえずAVRを使ってみようと思います。

今回はAVRプログラマ(ライタと呼ぶのか?)を作る事から始めます。
で、どうやってライタを作ったものかと、ネットサーフィンの果てに
辿り着いたのがTADさんのでんし研
ここのDUAL書き込みRS式に酷く感動!

早速作成したのが

Avrprogramer0

Avrprogramer1

 
 

 
 

これ。
AVRStudioから直接呼び出せるんで非常に便利です。

| | コメント (0) | トラックバック (0)

2006年6月 6日 (火)

ブログ始めました。

ブログ始めました。

決して若くないオタクなおっさんが、日々得とくした情報や知識を
個人的な備忘録として書き綴ることにする。・・・・

| | コメント (0) | トラックバック (0)

トップページ | 2006年7月 »