AVRStudioを使う 
備忘録?

 AVRstudioはAtmelのIDE(Integrated Development Environment) です。AVRを学びはじめた頃にはAN910ライタを使ってアセンブリプログラムからはじめました。当時の開発環境は今のように便利なものを使いこなせず、win98を立ててChaNさんの「抵抗だけのライタ」を作ってAT90S2313に書き込み、AVRstudioで使えるにapplicasion note910ライタを作りました。今ではすっかり忘れていますが、コメントに日本語が書けなかったstudioですが解説もあって使い始めました。
今回は3つの理由によってもう一度使ってみることにしました。一つ目に、AVRsutudioはAVRのIDEであること。二つ目は、この環境で使えるAVRminiProgライタが入手できたこと。三つ目に、アセンブリも少しは学ぼうかと思ったこと、なのです。多分、このページは備忘録にすぎないことととなるでしょうけれども書いてみようと思います。
 
使用時に注意すること;projectでmcuの確認       Conアイコン(学習機能あり)
                                      AVRアイコンでmcuの確認         AVRアイコンでhexファイルの設定
 fuse設定  bordでISPクロック設定 
    
    
インストール 2007.11.30
ターゲットへの書き込み 2007.11.30
アセンブリプログラム 2007.11.30
WinAVRプログラム 2007.11.30
studio覚え書き 2007.11.30
















studio覚え書き自分の理解を助けるためのメモ書き
  工事中!


*********************** この項 終わり ***********************************






















WinAVRプログラム
  工事中!


*********************** この項 終わり ***********************************






















アセンブリプログラム
 AVRstuioを起動します。初期設定ウイザードで New project を選びます。
次の画面で assembler をクリックします。project name を書きます。例によってフォルダ名と同じにします。cleate initial file と cleate folder はチェックを入れます(default)。 Locationには適当な上位フォルダを(無ければ作って)指定します。FinishボタンでIDEに入ります。


まず最初のプログラムとして、ターゲットはTiny2313のPORTBに8個のLED(lowで点灯)を付けたものがありましたので、このLEDを点滅するものを考えました。 IDEのエディタに次のプログラムを書きます。
;*****************************************
;tn2313  led01.asm  アセンブラの練習1
;
;PORTBに接続したLEDを内外交互に点滅する。
;*******************************************

.include <tn2313def.inc> ;必要です

.CSEG               ;     
;**** Interrupt Vector **** 今回必要なのはRESETだけですが、割り込みを使うときのために用意しました。
  rjmp  RESET       ;各種リセット
  reti  ;EXT_INT0   ;外部割り込み要求0
  reti  ;EXT_INT1   ;外部割り込み要求1
  reti  ;TIM1_CAPT  ;タイマ/カウンタ1 捕獲(キャプチャ)発生
  reti  ;TIM1_COMPA ;タイマ/カウンタ1 比較A一致
  reti  ;TIM1_OVF   ;タイマ/カウンタ1 オーバーフロー
  reti  ;TIM0_OVF   ;タイマ/カウンタ0 オーバーフロー
  reti  ;USART_RXC  ;USART 受信完了
  reti  ;USART_UDRE ;USART 送信バッファ空き
  reti  ;USART_TX   ;USART 送信完了
  reti  ;ANA_COMP   ;アナログ比較器出力遷移
  reti  ;PCINT      ;ピン変化割り込み要求
  reti  ;TIM1_COMPB ;タイマ/カウンタ1 比較B一致
  reti  ;TIM0_COMPA ;タイマ/カウンタ0 比較A一致
  reti  ;TIM0_COMPB ;タイマ/カウンタ0 比較B一致
  reti  ;USI_STRT   ;USI 開始条件検出
  reti  ;USI_OVF    ;USI カウンタオーバーフロー
  reti  ;EE_RDY     ;EEPROM操作可
  reti  ;WDT_OVF    ;ウォッチドッグ計時完了
;**** Program Code ****
;

RESET:                   ;リセット時にここへ来ます。
  ldi   r16,low(ramend)  ;RAM最終アドレス下位を取得 スタックポインタを決めて
  out   spl,r16          ;スタックポインタ(下位)を初期化

  ldi   r16,0b11111111   ;レジスタ16にイミディエイト値を代入して PORTの設定をします。
  out   DDRB,R16         ;DDRB=0xff PORTDは出力指定
  ldi   r16,0b11000011   ;両側2個ずつ消灯、内側点灯に

MainLp:                 ;上から流れてここからmainルーチンが始まります。
  com   r16             ;反転して(点灯なら消灯、消灯なら点灯に)
  out   PORTB,r16 		;portBに出力
  rcall WAIT 			;時間を待って
  rjmp  MainLp 			;繰り返し (MainLpへジャンプ)

;**** Wait **** 時間稼ぎのルーチン 100,100,100の数字を大きくすると遅くなる 255が上限 サブルーチン
Wait:
  ldi   r17,100
WateLp1:
  ldi   r18,100
WateLp2:
  ldi   r19,100
WateLp3:
  dec   r19
  brne  WateLp3
  dec   r18
  brne  WateLp2
  dec   r17
  brne  WateLp1
  ret

セミコロンは行末まで注釈になります。
ラベルはコロンで終わります。
命令(ニーモニック)は大文字、小文字がともに使えます。
レジスタ(r0〜r31)は、r16〜が数値(イミディエイト)を代入できます。
レジスタはそれぞれ特徴がありますが、r16〜19を使いました。

buildしてエラーがなければhexファイルができますから、ターゲットに書き込みます。
8つのLEDの外側4個と内側4個が交互に点滅します。

 久しぶりにAVRstudioを使いましたが、エディタ機能が低く、かつ、atokが正常に作動しない(リターンキーをたたくまで文字が現れない)ケースが発生しました。 また、日本文字入力でアルファベットに変換するF10キーが使えないのはかなり辛いことです。専用のエディタがいかに良いものかを感じさせられました。

AVRのアセンブリによるプログラムについては WsNakの中尾さんが素晴らしい記事を書いておられます。是非、ご精読ください。




*********************** この項 終わり ***********************************






















ターゲットへの書き込み
 コンパイル/アセンブルがすんで.hexファイルができるとターゲットへ書き込みます。
AVRminiProgをUSBに接続して、ターゲットのプログラムコネクタを繋いで、さらにターゲットの電源を入れておきます。

@Conアイコンをクリックして、select programmer ダイアログを開き AVRISPmkU をクリックします。右のport窓にはUSBと表示されます。connectボタンで接続します。このときハードウエアが接続されていないとエラーになります。

AAVRアイコンをクリックして、AVRISP mkUダイアログを開き、まずprogramタブのmcuを設定します。続いてHEXファイルを指定します。ディレクトリが深いと探すのがめんどうですが、今は良い方法が思いつきません。毎回探さないといけないと思うと憂鬱です。また、前回の書き込みファイルを覚えているからなおさらやっかいだと思います。まだ、programボタンを押してはいけません

B同じダイアログのfusesタブからfuseを選びます。取り返しが付かない(reset端子を無効にする)fuseに注意します。

CBordタブを開いて、ISPクロックの設定をします。ターゲットのクロックの1/4以下に設定しないとエラーとなることがあります。設定後にwriteボタンを押すとライタのeepromに書かれてはじめて有効になります。

Dprogramタブに戻って、programボタンを押して書き込みます。



*********************** この項 終わり ***********************************






















インストール
 2007.11.26現在で最新版は AVRstudio 4.13 です。ここからダウンロードすると登録無しにできました。古いバージョンでは AVRminiProg が使えません。AT90Sシリーズはサポートされていませんが AVRminiProg を使うために最新バージョンにしました。
aStudio4b528.exe がダウンロードされますので適当なフォルダに置いて実行します。デフォルトのディレクトリにインストールするのが後々の都合がいいのでディレクトリを変えずにインストールしています。C:\Program Files\Atmel\AVR Tools\AvrStudio4にテントウムシマークのAVRStudio.exeがインストールされました。


*********************** この項 終わり ***********************************













TOPページへもどる


inserted by FC2 system