Mac avr開発環境を構築

 

 

・はじめに

macでavr開発環境を構築してみた

 

・使ったもの

Mac mini (Late 2014)  macOS High Sierra 

 *aitendoのusbasp2を使いました 

 

ATtiny85

ジャンパワイヤ

LED

10kΩ抵抗 

 

・CrossPack-AVR をインストール

 

以下のサイトからCrossPack-AVRをインストール

www.obdev.at

 

f:id:shangtian:20180220210534p:plain

今回はCrossPack-AVR-20131205

をインストールした。

 

Xcodeをインストール

AppStoreからXcodeをインストールする

30~40分ぐらいかかるかも

f:id:shangtian:20180220210853p:plain

 

MacPortsをインストール

以下からMacPortsをインストール

Mac Ports とはmacで使えるパケージ管理システムの1つ

 //ubuntu(debian系)だとapt、Cent OSだとyum ですね

avrdudeというソフトをインストールするのに使うので

インストールする

www.macports.org

 

osがHigh Sierraなので、それに対応したやつを

ダウンロードしてインストール

f:id:shangtian:20180220211221p:plain

 

・PATHを通す

CrossPack-AVR とMac Ports のコマンドを使えるように

するためPATHを通す。

vim ~/.profile

で。.profileを開き以下の2行を追記し保存

export PATH=$PATH:/opt/local/bin
export PATH=$PATH:/usr/local/CrossPack-AVR/bin
echo $PATH

でPATHが通っているか確認

 

・avrdudeをインストールする

avrdudeとはatmel AVRで使われるライタや開発機器を

コントロールするプログラム

sudo port install git libusb avrdude
which avrdude

git-core からgitへ名前が変わった模様

 

以上で開発環境の構築は終了

ではLEDを光らせるとこまでやってみる

マイコンはATtiny85を使用した

 

Lチカする

・プロジェクトを作る

$avr-project led_blink

でled_blinkプロジェクトファイルが

作成された

 

$cd led_blink/firmware

firmwareの中には

Makefileとmain.cファイルが存在する

まずはMakefileの設定から

 

Makefile の書き換え

$vim Makefile

f:id:shangtian:20180226225701p:plain

 

DEVICE

赤線部分を書き換えていく

今回はATtiny86を使うのでDEVICEを

atmega8を書き換える

CrossPack-AVRの中にマニュアルがあるので

見てみる。

$cd /usr/local/CrossPack-AVR/manual
$open index.html 

 

f:id:shangtian:20180226230839p:plain

 検索してみるとattiny85がサポートされていることが

示されている。デバイス名は小文字で表記されているんで

DEVICE = attiny85

とする

 

CLOCK

CLOCK数は8MHzを使うので変更しない

使うCLOCKを変えたい時はここも変更

しないといけない

 

PROGRAMER

書き込み装置の指定

USBasp2を使って書き込むので

PROGRAMER = -c usbasp

-cオプションは指定されたプログラマ(書き込み装置)

を設定ファイルから特定するもの

 

書き込み装置としてArduinoもリストに

載ってるのが面白い

 

以下のサイトからプログラマのリスト

が確認できる。

www.nongnu.org

 

FUSESの設定

 

以下のサイトからフューズの計算を行う

www.engbedded.com

 

まずattiny85を選択する

f:id:shangtian:20180226233103p:plain

 

f:id:shangtian:20180226233118p:plain

 赤丸部分を変更して内部クロックか外部クロック

なのか、何MHzにするかを設定する

 

今回は変更しないでデフォルトの値でok

f:id:shangtian:20180227160516p:plain

最後、赤線の部分のコードをコピーして

Makefileに貼り付ける

 

f:id:shangtian:20180226233221p:plain

 DEVICE = -U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m

 

Makefileまとめ

ざっとMakefileについての説明はここまで

Makefileは以下のになる

  DEVICE     = attiny85
  CLOCK      = 8000000
  PROGRAMMER = -c usbasp
  OBJECTS    = main.o
  FUSES      = -U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m 

 編集し終わったらMakefileを保存して

$ make

f:id:shangtian:20180227163605p:plain

上のスクショみたいになれば成功

 

main.cを編集してプログラムを作成する

ATtiny85のピンアウトを以下に示した

f:id:shangtian:20180227164502p:plain

sorce: attiny25_attiny45_attiny85の仕様書2ページ

 

f:id:shangtian:20180227173655p:plain

PB4ピンにLEDを繋げてLチカをする

$vim main.c

  7 #include <avr/io.h>
  8 #include <util/delay.h>
  9 #define F_CPU 8000000UL
 10 int main(void)
 11 {
 12     DDRB = 0b010000;
 13     
 14     while(1) {
 15        PORTB = 0b010000;
 16        _delay_ms(100);
 17        PORTB = 0b000000;
 18        _delay_ms(100);
 19     }
 20 }
         

ここまで来ればあとちょっと

ATtiny85とUSBasp2を接続してプログラムを

書き込む準備をする

USBasp2の端子は以下のようになっている

f:id:shangtian:20180227174545p:plain

sorce:https://ht-deko.com/arduino/usbasp.html#04

 

この表に対応するようATtiny85と

USBaspを接続する

USBasp2 ATtiny85
CLK CLK
MISO MISO
MOSI MOSI
RST RESET
VCC VCC
GND GND

 

 

Makefileの設定を書き換えた時は

$make fuse

f:id:shangtian:20180227172450p:plain

Makefileの設定を変更してない時は

$make flush

 

でATtiny85に書き込み 

f:id:shangtian:20180227170721p:plain

 

上手く書き込めたらこんな感じ

f:id:shangtian:20180227171939j:plain

 

 

 

<参考文献>

橋本商会

AVRDUDE: Table of Contents

USBasp

AVR始めました。 | Tsumikiasobi's Playground

「パッケージ管理システムとは」by Windowsユーザー - Qiita