タグ別アーカイブ: atmega

スクリーンショット 2013-12-15 6.55.18

MacでAVR 開発環境を構築する

AVR マイコンATtiny,ATmegaをプログラミングするのに一般的にはAtmel studioを使います。Atmel studioはWindows用の開発環境のためMacを使っては別の環境を考える必要が有ります.

ここではArduino IDEを使っての開発環境を提案します.書き込み機にはAVR ISP mkIIを使います.ATmegaまたはATtinyがターゲットになります.マイコンの書き込みのための信号線(MISO,MOSI,SCK,RESET,Vcc,GND)を引き出すのはブレッドボードでもユニバーサル基板を使ってもどちらでも結構です.28ピンDIPパッケージATmegaについてはAVR LCD Boardを使うのも良いかもしれませんね。AVR ISP mkIIのソケットに対応したピン配のヘッダピンを載せる事が可能です.
CIMG2359

xcodeを使ってC言語でプログラミングする方法もありますが、入出力のポート設定とかビット操作とか正直面倒なところが有ります.そこでプログラミングのハードルがぐっと下がるArduino言語を使ってプログラミングが出来るように環境を構築します.
Arduinoと言ってもその中身はAVR ATmegaなわけでATmegaだけでなくATtinyシリーズのプログラミングも出来てしまうのです。Arduino用に公開されているスケッチを参考にして自分だけのプログラムを作るのも簡単です。とことん小型化するのならATtiny13を、ポートの数はもう少し欲しいなと思えばATtiny2313を、ある程度機能を充実したいのならATmega328と言った具合に自分の使いたいチップを選ぶ事が可能です.

それではMacでAVRをArduinoでプログラミングする環境を構築しましょう。まずはMacからプログラムを書き込むためのArdudoをインストールします.Terminalを起動して下記コマンドを実行してください。MacPortsはすでにインストール済みという前提です。

MacBook:~ user$ sudo port install git-core libusb avrdude

無事インストールが出来ていれば 
MacBook:~ user$ which avrdude
のコマンドを実行すると
/opt/local/bin/avrdude
と返ってくるはずです。

これでUSBに接続するAVR ISP mkIIが使えるようになります.
OS Xの以前のバージョンSnow Leopard のころはUSBにISP mkIIを接続するだけで他のドライバーを必要とせず使えていたのですが、最新のOS XバージョンであるMavericks ではavrdudeが必要となるようです.

次にArduino IDEをインストールします.Arduino公式サイトからダウンロード&インストールします.ここで注意が必要なのが最新バージョンではなく0.2xのバージョンを使う事です。ArduinoさいとのDownloadページから行くと最新バージョンのダウンロードを紹介されます(2013.12.15時点での最新バージョンは1.0.5です)。ページの下の方に行くとちょっと分かりにくいのですが、以前のバージョンのダウンロードへのリンクが見つかります.
Previous IDE Versions
そこで002xのバージョンをダウンロードします.当方は0022で動作確認しました。

最新バージョンと旧バージョンは同じMacに上書きされませんので、必要に応じてバージョンの使い分けも可能です。
旧バージョンを立ち上げるたびに、新しいバージョンへのアップデートを促されますがそれは無視します。
スクリーンショット 2013-12-15 6.54.09
Arduinoのターゲット設定ファイルを確認します。これはArduino UNOやLeonardoといったボードごとまたはATmega328やATtiny2313といったチップごとの固有の設定を記述しています.動作クロック、プログラムの最大サイズ、チップのフューズビットの設定などが書かれています.実際に接続するターゲットデバイスまたはチップとこの設定が異なるとうまく書き込むことができません.

設定ファイルは /Users//Documents/Arduino の中のatmega,atmega64,attinyのそれぞれの中にboards.txtがありそこに記述されています。ターゲットがATmega328だとしたら、atmegaフォルダ内のboards.txtを開くと
avr328p.name= ATmega328P / Int.8MHz
から始まる設定が見つかるはずです.もし”#”でコメントアウトされていたら”#”を削除して有効にしてください。逆に使わない設定はコメントアウトする事でIDEで表示されなくする事も出来ます。
スクリーンショット 2013-12-15 6.55.18
ここで示される”ATmega328P / Int.8MHz”がArduinoIDEのTools>Boardで表示される名前になります.具体的な設定はそれ以降に書かれます.各項目は次のようになります.

  • vr168p.upload.maximum_size=16384
  • 書き込めるプログラムの上限サイズになります.チップごとに決まっています.

  • avr168p.bootloader.low_fuses=0xe2
  • フューズビットを書き換える事でチップの動作を細かく設定します.チップごとに内容が異なりますので詳しくはターゲットとするチップのリファレンスを参照してください.

  • avr168p.bootloader.high_fuses=0xdd
  • フューズビットを書き換える事でチップの動作を細かく設定します.チップごとに内容が異なりますので詳しくはターゲットとするチップのリファレンスを参照してください.

  • avr168p.bootloader.extended_fuses=0×07
  • フューズビットを書き換える事でチップの動作を細かく設定します.チップごとに内容が異なりますので詳しくはターゲットとするチップのリファレンスを参照してください.

  • avr168p.bootloader.path=dummy
  • これは変更する事は無いでしょう

  • avr168p.bootloader.file=dummy.hex
  • これは変更する事は無いでしょう

  • avr168p.bootloader.unlock_bits=0x3F
  • これは変更する事は無いでしょう

  • avr168p.bootloader.lock_bits=0x3F
  • これは変更する事は無いでしょう

  • avr168p.build.mcu=atmega168
  • これは変更する事は無いでしょう

  • avr168p.build.f_cpu=8000000L
  • 動作クロックを宣言しています。実際にチップが動いているクロック速度とここでの宣言が異なっているとDelay関数などの時間制御でずれが生じます。

  • avr168p.build.core=arduino:arduino
  • これは変更する事は無いでしょう

  • avr168p.build.variant=atmega_int
  • これは変更する事は無いでしょう

ターゲットがATtinyシリーズの場合も同様にattinyフォルダ内のboards.txtファイルの中で対象とするチップ設定が有効になっているか確認します.

これでAVRマイコンへArduino言語でプログラミングする環境は出来上がりです.Arduino IDEを使ってプログラミングし、チップに書き込む際はTools>Boardからターゲットのチップを選択、Uploadボタンを押します.プログラムに間違えが無く、ISPおよびチップとの接続が問題なければ無事書き込めるはずです.
書き込みエラーになる原因の一つにチップ側への給電を忘れている事が有ります.ISP mkIIへはUSB経由で給電されます。ターゲットのチップは別の電源で給電する必要が有ります。このときの電圧はUSB電圧と同じでなくても構いません。ターゲットを動かすことを想定した電圧(例えば3.3V)でも構いません.チップの動作電圧の範囲で給電しましょう。

ここではMacからAVR ISP mkIIを介してAVRチップへArduino IDEでプログラミングする手法とその環境に付いて説明しましたが、同様のことはWindowsでも可能です。Atmel studioは難しいな、ArduinoIDEを使いたいと思った方はWindowsでも是非トライしてみてください.

AVR マイコンチップ 8bitシリーズ

AVR8ビットマイコンのシリーズには大きく分けて2つあります。大容量化、I/Oを拡張したMegaシリーズと高機能化・低消費電力化・低電圧対応したTinyシリーズです。I/Oピン数、パッケージタイプ、メモリー容量などによって更に細かく分類されます。ここでは代表的な2機種について紹介します。

上:ATTiny2313

下:ATmega 328P

ATmega 328P

  • 参考価格 250円(小ロット購入時)(*1)
  • 最大動作周波数:20MHz
  • FLASH:32KB
  • 28ピンDIP
  • 14デジタルI/O
  • 6アナログインプット

Adruino Unoにも使われているマイコンです。

ATTiny2313

  • 実売価格 100円(小ロット購入時)(*1)
  • 最大動作周波数:20MHz
  • FLASH:2kバイト
  • 20ピン DIP
  • 18ピン  I/O

LCDキャラクターディスプレイモジュールを使ったプログラミングではATTinyではメモリー容量が不足することがあります。ATmegaならメモリー容量が十分あり、余裕を持ってプログラミングすることが出来ます。ATtiny2313にはA/Dコンバータがありません。アナログ電圧の測定が必要な場合は他のモデルをつかうことになります。

シリーズの詳しい内容、使用についてはAtmel社のサイトをご確認下さい。
Atmel Corporation

*1)量産用として相当数量を購入する場合はこの価格ではありません。紹介した価格は秋月電子通商2012年6月時点の価格を掲載しています。

IMG_3149

Arduino開発環境

Arduinoボードを使った開発環境の例を説明します。

ArduinoIDE


統合開発環境であるArduinoIDEはWindows,MacOSX,Linuxのそれぞれに対応。インストールも操作もいたって簡単です。
プログラミングはC言語ライクなArduino言語を使用。PCとArduinoボードとの接続はUSBケーブル一本の手軽さ。
スケッチをアップロードした後は、PCとの接続を切り離しArduinoボードだけで動作することが出来る。

Processing

Javaを単純化しグラフィック機能に特化した言語、Processingを使ってArduinoを動作することが出来る。Arduinoボードにはセンサーモジュールのデータの取り込み、アクチュエーターの駆動などを受け持つと良いだろう。取り込んだデータはArduinoとの通信によってPC側で取得し、視覚表現(ビジュアライゼーション)を行うのに非常に便利である。Open GLを使った3D表現も簡単に行うことができる。

予めArduinoボードにはStandard FirmataスケッチをArduinoIDEからアップロードしておく。その後PCではProcessing環境の上で、Arduinoボードを操作するプログラムを走らせることになる。PC(Processing)でArduinoを動作させるため、Arduinoボード単独での動作は出来ない。

cropped-topbanner1.jpg

Arduinoを使うことのメリット・デメリット

ここではArduinoとAVRマイコン単体で回路を組む場合を比較した時のメリットとデメリットについて紹介します。

メリット

・USBケーブルでPCに接続するだけで始められる(Unoボード)
・Arduino IDE
シンプルで分かりやすい統合開発環境はWindows,Mac,Linuxで使えます。
・Arduino言語
C言語に近いArduino言語はプログラミング初心者にも容易にプログラミング可能なように設計されている。I/Oピンの入出力設定もAVRに比較して簡単に理解できる
・開発に便利なライブラリーが揃っている
シリアル通信、LCDキャラクターディスプレイなどを取り扱うためのライブラリーが豊富にある。ライブラリーを使うことでプログラミングが容易になり、開発工数を削減することが出来る。
・Arduinoボード上に必要な物が実装されている
USBシリアル変換、電源レギュレーター、クロック用発振子が実装されている。
・シールドで機能の拡張が容易
機能を拡張するためのシールドが多く市販されている。LCD表示をする物、SDカードへのアクセスするためのもの、GPS,MP3プレイヤーなど。Arduinoボード上にシールドを積み重ねるようにして接続することができる。これらを上手く利用することで、ハンダ付けなどの作業が一切不要となる。

試作検討、学習用としては重宝します。

デメリット

・Arduinoボード形状が筐体設計の制約となる。
・AVRマイコンで構成した場合よりも若干のコストアップとなる。Unoボード 2520円(2012年6月、スイッチサイエンス価格)
・特定の機能を実現することを考えた場合USBシリアル変換など必ずしも必要となるわけではない機能が余計となってしまう。

製品として小ロット生産を考えた場合はこれらがデメリットとなるでしょう。

IMG_3157

Arduino ボード

Arduinoボード、互換ボードにはいくつかあります。ここでは代表的な2機種について紹介します。

Arduino Uno

ボードにはATmega328マイコンの他に、シリアル通信のためのUSBシリアル変換IC(FTDI)、3.3V電圧を取り出すレギュレータ、16MHz水晶発振器、ブレッドボード上の回路との接続に便利なピンヘッダソケットが実装されています。写真左上:USBコネクター、左下:AC-DCアダプターからの給電用DCジャック

UnoボードはUSBコネクターからの給電にも、DCジャックからの給電のどちらにも対応しています。

実売価格 2,520円

USBケーブルで UnoとPCをつなぎ、ArduinoIDEを立ち上げればすぐにプログラミングを始めることが出来ます。

ブレッドボードとの組み合わせ、回路検討過程。

Arduino Uno についてArduinoサイトの情報

Arduino Fio

ボードにはATmega328、リチウムポリマーバッテリー充電IC、無線通信モジュールXbee用ソケット、3.3Vレギュレータを搭載。

実売価格 2,495円

写真右上のUSBコネクタはリチウムポリマーバッテリーの充電に5V電圧を給電するためのものです。スケッチ(プログラム)のアップロードには使えません。アップロードのためには無線通信モジュールXbee経由で行うか、またはUSB-シリアルアダプタを別途用意して行う必要があります。

写真右下はリチウムポリマーバッテリーの接続コネクターです。リチウムポリマーバッテリーの取り扱いによっては発煙、発火する場合もあり十分に注意が必要です。

基板にはケースなどへの取り付け用の穴が空いていないため、固定するのには工夫が必要になります。

ボード裏面には無線通信モジュールXBeeの取り付けコネクターが実装されています。写真はXBeeを取り付けた状態。

Arduino FioについてArduinoサイトの情報

CIMG2356

AVR LCD board

概要

本品はATMELATmega48A/48PA/88A/88PA/168A/168PA/328/328PマイコンとLCDキャラクターディスプレイモジュールSC1602相当品(インターフェースIC:HD44780コンパチブル)とを接続便利にした基板です。ISP端子用のランドにピンヘッダを取り付けることで、AVR ISPmkIIプログラマーと接続ができます。AVRマイコン、LCDキャラクターディスプレイを接続する評価ボードとして簡単に使うことができます。
発振子、LED電流制限抵抗、スイッチ用プルアップ抵抗、LCDキャラクターディスプレイ接続のためのパターンが用意されておりますので、試作時の面倒な配線作業が少なく済みます。LCDキャラクターディスプレイよりひとまわり大きい基板サイズなので、コネクタを介してスタックすることが出来ます。電源供給は市販のACアダプターまたは電池を接続します。
ArduinoIDEでの開発が出来、Arduino互換ボード、Arduino学習用としてもご利用できます。 続きを読む

CIMG2356

AVR I/O Board

  • ブレッドボードじゃなくて、作品として仕上げたい。電子部品をしっかりと固定したい
  • 小ロットで作りたいがオリジナルでプリント基板を作るにはちょっと予算がない
  • 作品を複数個作りたい。でもArduinoじゃ値段が高い
  • LCDの配線が面倒。LCDシールドは高価だ
  • LCDをケースへの固定するのは案外面倒なもの
  • AVR StudioじゃなくArduino IDEからプログラミングしたい
  • MacでATmegaにプログラムを書き込みたい

このような不満を解消し、あったらいいなをかなえるため、汎用ボードを用意しました。

概要

本品はATMELATmega48A/48PA/88A/88PA/168A/168PA/328/328PマイコンとLCDキャラクターディスプレイモジュールSC1602相当品(インターフェースIC:HD44780コンパチブル)とを接続便利にした基板です。ISP端子用のランドにピンヘッダを取り付けることで、AVR ISPmkIIプログラマーと接続ができます。AVRマイコン、LCDキャラクターディスプレイを接続する評価ボードとして簡単に使うことができます。
発振子、LED電流制限抵抗、スイッチ用プルアップ抵抗、LCDキャラクターディスプレイ接続のためのパターンが用意されておりますので、試作時の面倒な配線作業が少なく済みます。LCDキャラクターディスプレイよりひとまわり大きい基板サイズなので、コネクタを介してスタックすることが出来ます。電源供給は市販のACアダプターまたは電池を接続します。
ArduinoIDEでの開発が出来、Arduino互換ボード、Arduino学習用としてもご利用できます。

仕様概要

ATmegaシリーズ 28Pin DIP ナロー300milに対応
ISP端子(AVR ISPmkiII対応)
SC1602 ピンコンパチ
LCDコントラスト調整半固定抵抗ランド
外部クリスタル
LED用電流制限抵抗 X2
外付けSW用プルダウン抵抗 X3
圧電サウンダー用ランド
他入出力用信号,Vcc,GNDを各4ch

上記取り付け用ランドを基板上に配置

外観

CIMG2356

基板部品面

CIMG2358

部品実装例
本基板だけでもLED、スピーカー、スイッチを実装することで、評価・検討用、学習用、小ロットの製品のマイコンとして利用することが出来ます。

CIMG2359

LCDおよびAVRISP mkIIとの接続例


製品への組み込み例
基板4隅のφ3穴にスペーサーを立てることで、筐体への取り付けが容易に行えます。LCDモジュールと一体化したことでメカ設計および組立が容易になります。

基板仕様

  • 構成層数 2層(両面)
  • 外形寸法 105.0 mm x 40.0 mm
  • 表面処理 半田レベラー
  • レジスト印刷 両面 緑色
  • シルク印刷 白
  • 板厚 1.6mm
  • 板材 FR-4

外形参考図

回路図

avrboard2

IO情報

avrboard6

 

組み立て参考

avrboard4

avrboard5

ボード上配置図


コネクタ・ピンアサイン表


ATmega > Arduino ピンアサイン読み替え表

購入方法

CIMG2356

販売商品。基板のみの販売につき、部品は実装されておりません。
価格:600円/1枚(税抜、送料込)

お求めはインターネットショッピング99で