2012年8月30日木曜日

[AVR]AVRを始める(1)

センサーのデータを取得する為に、I/OボードをAVRで作る事にしました。
PICよりAVRの方が、研究室の中で人気らしいです。

まず、AVRを始めるにあたって評価ボードのAtmel社 STK600を使用することにしました。

チップはひとまず、STK600に付いてきたATMEGA2560を用いることにし、開発環境はAtmel Studio 6を使用します。
Atmel StudioはVisual Studioなんですね。

プロジェクトのプロパティでProgrammer(Tool)はSTK600を、DeviceはATmega2560に設定します。

STK600には、USBポートが載っているので簡単にライトできます。シリアルポート無くても良いんですね!

また、LED・タクトスイッチが8個載ってるので、入門用のプログラムを書いてみます。

まず、Hello World的に、LEDの点滅をさせます。PortBピンにLEDを接続しています。

#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
  unsigned char a = 0b00000001;

  DDRB = 0xFF;
  PORTB = 0xFF;

  while(1){
    PORTB = ~a;
    _delay_ms(500);
    PORTB = 0xFF;
    _delay_ms(500);

    if(a != 0b10000000){
      a = a << 1;
    }else{
      a = 0x00000001;
    }
  }
}

次に、タクトスイッチを押下した時対応したLEDを点灯させます。
PortAピンにタクトスイッチを、PortBにLEDを接続します。

#include <avr/io.h>
int main(void)
{
  unsigned char a;
  unsigned char x;
  
  
  DDRB = 0xFF;
  PORTA = 0xFF;
  PORTB = 0xFF;
  
  while(1){
    x = PINA;
    a = 0xFF & x;
    PORTB = a;
  }  
}


無事、LEDの点滅・点灯ができました。
今日はここまで。

Syntax Highlighterが使えない...