Tue 05/05, 2009

休日工作 [Electronics ]

64pixels仕事で待機のため、自宅警備中。そんなときにはお気楽休日工作。

まずはマトリクス LED と ATtiny2313 だけで簡単アニメーション。ネタ元は "64pixels How To"。回路図は無いが、リンク先の詳細な工作手順写真を見れば一目瞭然だ。マトリクス LED には秋月電子で購入した TOM-1588BH-B を使用したが、これはオリジナルのもの(LEDMS88R)と極性が逆であるため、プログラムを一部変更する必要がある。また、PD6はプルアップされている筈なのだけど、開放のままだとLと認識されてアニメーションが止まることがあったため、外部でプルアップしている。オリジナルのプログラムをコンパイルすると ATtiny2313 の 2KByte のフラッシュに収まらなかった。とりあえずテキスト表示を省略して短くして動かしたが、もう一度良くプログラムを確かめてみよう。

1chip-arduino1chip-arduino-2もうひとつは One Chip Arduino。先頃 CQ 出版から「アーデュイーノ互換マイコン・ボードを作る」を出された小坂さんのプロジェクト。Bootloader は私が ATmega88 用に昨年作ったものがベースになっている。御当人は O'Baka Project などと書いておられるが、素晴らしいアイディアだと思う。私のものは Reset - DTR 間の配線を端折っている。これだと BootLoader の処理タイミング合わせは手動でのリセットスイッチに頼ることになる。

[追記]
64pixels のプログラムはテキストのパターンを減らすことで 2KByte に収めることができた。内部EEPROMを書き換えることで電源投入の度に違うパターンから始まるようになっていたりする。

ジャンク宿さんでも試してました。

Posted by masato at 06:34 PM
このエントリーのトラックバックURL: http://bird.dip.jp/cgi-bin/mt/mt-tb.cgi/1695
コメント

gcc3.X系でコンパイルした方がコードが小さくなります。
以下、AVRMacpackのgccでコンパイルしたものです。

$ avr-gcc --version
avr-gcc (GCC) 3.4.6
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ make
avr-gcc -Wall -Os -DF_CPU=4000000 -mmcu=attiny2313 -c matrix.c -o matrix.o
avr-gcc -Wall -Os -DF_CPU=4000000 -mmcu=attiny2313 -o matrix.elf matrix.o
rm -f matrix.hex
avr-objcopy -j .text -j .data -O ihex matrix.elf matrix.hex

avr-objdump -h -S matrix.elf > matrix.lss

$ avr-size matrix.hex
text data bss dec hex filename
0 1936 0 1936 790 matrix.hex

Posted by: もあ at 05/06, 2009 06:49 AM

もあさん、アドバイスをありがとうございます。
早速 20060421 版(gcc version 3.4.6)を引っ張ってきて試してみました。確かに随分違いますね。gcc 3 → 4 の変更が大きいのか、あるいは新しい石に対応した分、最適化が犠牲になったのでしょうか。当初使用した 20090313 版(gcc version 4.3.2)ではテキストを 2 パターンまで減らさないと 2KByte に収まりませんでしたが、これだと大丈夫です。

Posted by: masato at 05/06, 2009 09:12 AM

gcc3のほうがコードが小さくて良いのですが、gcc4でないと新しいデバイスがサポートされていなくて困ることがありますよね。

ちなみに、MacOSX用のCrossPack for AVRでは目的に応じて切り替えられるようになっています。

$avr-gcc-select
Current default compiler: gcc 3
$avr-gcc-select 4
Current default compiler: gcc 4

WinAVRのgccの切り替え方もどこかで見た気がします。たしかJunctionコマンドを使うのではなかったかと思いますが。。。

Posted by: もあ at 05/06, 2009 06:59 PM

いろいろと情報をありがとうございます。
ワタシは原始的に PATH 環境変数を設定してました。Windows の Junction は使ったことがありません。ちょっと調べてみるとリソースキットにある linkd.exe が便利みたいですね(http://www.atmarkit.co.jp/fwin2k/win2ktips/991fjunction/fjunction.html)。*nix ならシンボリックリンクで済むようなものですけど。

Posted by: masato at 05/06, 2009 08:39 PM
コメントする

おそらく携帯電話等からは投稿できません。日本語文字列を含まないコメントやトラックバック、および当サイトへの言及を含まないトラックバックは御遠慮いただいております。また、90日以上経過した記事へのコメントはできません。










名前、アドレスを登録しますか?