ATMEGA64

02 LED点滅 08.02.18
01 はじめに 08.02.18



はじめに
 ChaNさんのfilesystemを読んで、SDカードを読み書きしてみたいところから購入してみました。慣れないmega64の前に使い慣れたmega8でSDカードの読み書きができないものかと実験したところ、基礎となる読み書きだけはできましたので新鮮みはなくなったのですが最終的にはfilesysytemまで作ってみたいと考えています。

mega64はいままで実験してきたAVRと違って64ピンと端子が多くなっていますからROM(64kB)、RAM(4kB)とメモリが大きくなっているだけでなく、IOが多くなっています(カタログで53ビット)からIO割り当ての苦労も少なくなります。

取り扱いの初期注意事項として、@デフォルトはmega103モードになっていますから、オリジナルモードにするためにEXヒューズに0xffを書き込むこと、AISPライタの信号線はmiso、mosi端子でなくPE1、PE0に繋ぐこと、が必要です。



LED点滅
 はじめてのデバイスでは、とりあえずLEDの点滅です。
mega64に電源ラインとプログラムライタ接続コネクタを配線します。miso、mosiが一般と接続端子が違うので注意しました。misoをPE1に、mosiをPE0に接続します。ライタが機能するのを avrspx -r で確認した後に、 avrspx -fx11111111 を書き込んでオリジナルモードにします。
PD7にR付きのLEDを繋ぎ、Hで点灯することにします。
デフォルトでは内蔵RC発振の1MHzクロックになるはずですからこのようなプログラムを書きました。
点滅の周期を決めるためにウエイトルーチンを使いますが、forループで作りますとコンパイラの最適化のため一定した結果が得られません。そこで愛用のインラインアセンブラによるルーチンの出番です。余談ですが、いままでのものを少し工夫しました。1MHzクロックの時に引数1で100μsのルーチンとして置いて、ウエイトルーチンの中で引数にクロックMHzをかけることにしています。この値(クロックMHz)を設定することによって、クロックが変わっても(1MHzの整数倍)引数1で100μsになります。
引数5000のONと引数5000のOFFで点滅周期が1秒になりましたから、デフォルトのクロックが1MHzであることを確認できました。

理由は不明ですが、このウエイトルーチンをWinAVR20071221でコンパイルするとエラーは出ないのですが期待した値になりません。WinAVR20060421だと正常に動きますから後者でコンパイルしています。
ついでに、画面のmega64チップの下に置いた紙は「クッキングシート」です。250℃で20分使用可能ですからハンダの瞬時の熱では焦げません。シリコン樹脂使用となっていますから絶縁も大丈夫でしょう(と、実験中です)。


   






~~~~~~~~~~~~~~~~

TOPページへもどる


inserted by FC2 system