goo blog サービス終了のお知らせ 

JJ1WKN Log

自作や移動運用関連のログです。

Tanukino 一人旅

2010-02-03 | Tanukino
ArduinoはIDEでスケッチをコンパイル(ベリファイ)して、TanukinoなどのArduino互換ボードへUSB経由のシリアル通信で書き込んで実行します。

あまり知られていないのですが、コンパイルするとHEXファイルが生成されます。
アップロードすると、このHEXファイルをAVRに書き込まれているブートローダーが受信して、フラッシュメモリに書き込み、実行されます。

ここで、HEXファイルをAVRライタで直接AVRに書き込むとどうなるでしょう?
なんということでしょう。ブートローダー無しでそのまま動いてしまいます。
つまりArduinoの開発環境で、Arduinoのブートローダーが書き込まれていない素のAVRで動作するアプリが作れるのです。

試しに、4x4x4LedCubeのHEXファイルを書き込んでみたところ、無事動作しました。
さすがにシリアル通信はブートローダー内のルーチンを利用しているので、動作しないかもしれません。

ブートローダーのソースを見て見ましたが、追いかけ切れません。
試してみるのが手っ取り早いので、やってみました。

AVRライタで書き込んだATMega168をTanukinoに差し込んで電源を入れてみました。
この通り、問題なくシリアル通信ができました。


というわけで、試用版のコンパイラとは異なりサイズ制限の無い開発環境になりました。
Arduinoの標準や寄贈ライブラリや、山のようにある作例スケッチのオマケ付きです。

AVRはATMega8,168,328などに限られますが、秋月価格で200円、230円、250円なので、I/Oポートも沢山あるし、どんどん利用していこうと思います。
7セグ8桁(16I/O)なんて簡単に実現できますね。配線が大変ですが。
シリアル入力の表示器でも作ろうかな。きっと誰かが作っているでしょうね。

最新の画像もっと見る

9 コメント(10/1 コメント投稿終了予定)

コメント日が  古い順  |   新しい順
7セグ8桁 (ノンノ)
2010-02-04 21:12:35
7セグ8桁(9I/O)何かは出来ますでしょうか?
返信する
7セグ8桁 (WKN)
2010-02-04 22:44:32
ノンノさんコメントありがとうございます。
7セグメント+小数点で8つの出力ポートが
必要です。
ダイナミック点灯するので、各桁ごとに1つの
出力ポート必要です。
というわけで8桁だと16のポートが必要です。
Arduinoは20ポートあるので余裕です。
返信する
7seg(8seg)で9port (ノンノ)
2010-02-05 17:24:57
7segはドットを入れて8pinですから、
これをシンク(カソード)とします。
桁を仮に8桁(アノード)としますと、

1から8桁として1桁のA以降
1-A,2-B,3-C,4-D,5-E,6-F,7-G,8-dpを
渡りで配線します。
(1本)これを抵抗に通して9pinに繋ぎます。
残ったA,B,C,D,E,F,G,Dpを
それぞれ渡り配線にします。

(8本)A,B,C,D,E,F,G,Dp これを抵抗に通して
1~8pinに繋ぎます。

一方桁は1~8pinに繋ぎます。
セグメントドライブはポート値を0にして
セグメント出力をOUTにします。
(表示しないセグメントはINにしたままです)

桁ドライブはポート値を1にしてOUTにします。

桁とセグメントが合致した場合は、
桁を優先して1にして替わりに
9pinを0にしてOUTにします。

以上を一定時間ごとにスキャンしますと表示できます。
(120Hz以上にするとちらつきにくい、
ちらつきが見えるときはもっと早くして下さい)

これはマキシム方式と言われています。
返信する
マキシム方式 (WKN)
2010-02-06 12:35:18
ノンノさんコメントありがとうございます。
これですね。目から鱗ですね。
これだとI/O本数が節約できますね。
http://www.maxim-ic.com/images/appnotes/1880/DI217Fig02.gif
返信する
回路図は (ノンノ)
2010-02-06 19:12:20
抵抗がありません、実際にはセグメント側に入れて、
デジット側は直結です。

アセンブラのコードはあるのですが、スケッチにはありません。
誰か書いてくれないかなー?
返信する
マキシム方式 (WKN)
2010-02-07 12:03:03
だれかが作っていると思って、検索中。
2×N×(N-1)個のLEDを制御できる「GuGaplexing」を発見。
AVR-GCCのソースがあった。
http://ednjapan.rbi-j.com/issue/2009/2/23/2523
返信する
PICのライブラリーを載せました (ノンノ)
2010-02-07 21:49:46
http://nonnno.hobby-web.net/jalv2/16f886_led_multiplex_9.zip
これを解凍すると
「led_multiplex_9_common.jal」
「led_multiplex_9.jal」
「16f886_led_multiplex_9.jal」
と言うファイルになって、
ライブラリーと16f648aのソースになります。
http://www.casadeyork.com/jalv2/archive/jalv24m.zip
からコンパイラのソースを持って来ると
コンパイルできますが、
AVRではなくてPICなんです。
何かAVRは難しくて・・
返信する
訂正648aではなく886でした (ノンノ)
2010-02-07 21:52:06
include 16f886
の所を
16f648aにすると換えられたと思います。
返信する
ライブラリ (WKN)
2010-02-08 21:47:45
PICのライブラリありがとうございました。
以前はPICが多かったのですが、最近はAVRばかりです。
AVRはアセンブラの勉強をしていないので、BASCOMなどがメインでしたが、今後はArduinoでなんとかなりそうです。
ブレッドボードで3本で6LEDから実験してみようと思っています。
返信する

コメントを投稿

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。