AVRマイコンなページ
の編集
http://ehime-csr-new.sakura.ne.jp/csr/index.php?AVR%E3%83%9E%E3%82%A4%E3%82%B3%E3%83%B3%E3%81%AA%E3%83%9A%E3%83%BC%E3%82%B8
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(゜∀゜)
2007/04/01トップページ
2013年末うどんどんツアー
2013春合宿企画
ARK
ASP.NETを使って1行もコーディングせずに作る蔵書管理システム
AVRマイコンなページ
BracketName
C++STL解説
C++STL解説 part01 コンテナ
C.S.R.
C.S.R. OB会のページ
C.S.R. Wiki トップページ
C.S.R.%20Wiki%20%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8
C.S.R.の歴史
C.S.Rゲーム強化週間
CSRオリジナルパーカーをつくろう
CSRプログラミングコンテスト
CSRプロコン第1回
CSRポケモン大会
CSR海外旅行
CSR週末卓ゲー部(TRPG)
CSharp講座
CSharp講座第一回
CSharp講座第三回
CSharp講座第二回
CSharp講座第五回
CSharp講座第四回
C言語における文字列の扱いについて
C言語講座
C言語講座第ニ回
C言語講座第ニ回課題
C言語講座第一回
C言語講座第七回
C言語講座第三回
C言語講座第三回演習
C言語講座第三回演習 解答例
C言語講座第二回 解答例
C言語講座第五回
C言語講座第五回演習
C言語講座第六回
C言語講座第六回演習
C言語講座第六回演習 解答例
C言語講座第四回
D.T.M.
EJBの作成
Eclipseのインストール
Entityの作成
FAQ
FAST
FTP
FizzBuzz
FormatRule
FormattingRules
FrontPage
GlassFish(Ubuntu)
GlassFishの設定
HEAVENS KITCHEN
HIKKY_J
Hawke
Help
IRC
IS01のページ
InterWiki
InterWikiName
InterWikiSandBox
InterWikiテクニカル
JSF-Ajax
JSF-Faceletsの作成
JSF-ManagedBeanの作成
Java
Java EE
Java EEのプロジェクト
Java EEの開発環境
Java EEアプリケーションの実行
Java(Ubuntu)
Java2SDKのインストール
Jupe
KOUJI
KWGJ9
KY cafe
Kuma
LIC
Ledah
Link
Low
MARIKO
MIZUKAZE
Marishi Bank
Marishi Co. Ltd.
MenuBar
Merry X'mas
MySQL
MySQL(Ubuntu)
NAO
NAOのおしえてP・I・C(ぴーあいしー)
NOMAD
Nabe
NetBeansからMySQLに接続
NetBeansでHelloWorld
OB一覧
OpenCV
PCデポ
PHP
Plamo
Processing講座
Processing講座 第一回
Processing講座 第三回
Processing講座 第二回
Processing講座 第五回
Processing講座 第六回
Processing講座 第四回
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
QRコード
RecentDeleted
Rogi
Rupy
SEN
SandBox
Subversionのすすめ
TOM
TechTalk
TechTalk 運営委員会
Test
Toku
T村氏
UDとは?
UD導入ガイド
URALU
Ubuntu(VirtualBox)
VB-オブジェクトのプロパティ
Velxot
VirtualBox
WEB担当の仕事の仕方まとめ
WikiEngines
WikiName
WikiWikiWeb
Wikiって何?
XONY
Y
Yama
YukiWiki
ZECHS
appli
formula
ika
inatyu
iqm
iアプリエミュレータのインストール
justice
kei.K
kepa
maeda
misaki
mojyack(仮)
msnメッセンジャーを使おう
neko
newsky
nginx(Ubuntu)
rariru
rian
s-cat
skipjack
taka
takuto
tano
tanoさんbot
tetra
twitterをはじめよう
uraluさんbot
winbrem
zawawa
zoo
…
あっぴり
あるけい
いろはす
うえさん
うずしお
おかま
おかゆ
おっさん化現象
おんまく寿司
お店
お湯
お知らせ
お花見
かいりょう
かきべえ
かつてないほどてきとーなにくにく
かとそ
かなめ
かまどや
かんきつ
かんきつの好きな曲
がじら
がっきー
がんば亭
くら寿司
ぐぴー
ころん
こんちゃん
さくら
さらし孤
さらし狐
しおかぜ
しおかぜ旅行まとめ
しおかぜ98号
しゃどう
しゃも
じゃんけん(JSF)
すき家
すずっち
すぽんじ
ずんだくん
そのほかの人たち
たおる
たけぞう
だんだん茶屋
ちかさん
つぼ八
つむ
とあるけみすと
とある宴の酒池肉林
とっくん
ともぴー
とらねこ
とりかわ
どーなつ先輩の亡骸.JPG
なかじ
なめくじ
にくにく
にくにくテンプレfor幹事さん
にたも
にゃおぬあ
にゃー
はぃから亭
はいから亭
はいから亭 メニュー.txt
はいから邸
はかいり亭
はだかの王様
はにわ
はま寿司
はゐから亭
ひーこー
ふよごい
ぷりちーなマリシきゅんと何かしよう2008
ほいから亭
ほっかほっか亭
ほっともっと
まぁ
まっつん
まつい
まつい(仮)
まぴょそ
まりしきゅんのおうち
みったん
むしくん
もっとも単純なランレングス圧縮
もな
ゆめタウン
ゆーゆ
ゆーろー
よしすけ
よーむ
よーむ → MY
りふれ
ろぎ
ろくめいかん
わかば
わっさ家
ゑくれあ
アクアパッツァ大会
アザミ
アプライド
アラバスタ
アリオ倉敷
アルミ−
アーカイブ
イオン
イオンモール倉敷
イオンモール岡山
イチ
イブソン
イベント
エディオン
エミフルMASAKI
エルノーツ
エンケラドス
オッパオ
カシテル
カチコール
カーくん
ガスト
キャデン
キリン
クラスタ(GlassFish)
クロミル
ケンタッキー
ケーズデンキ
ゲーム一覧
ゲーム製作集会
ココス
コジマ
コメント/TechTalk
コメント/inatyu
コンパス
サークルK
ジュエリー・F・スミス
スカイ
スシロー
スマブラ大会
スライドパズル(JSF)
スーパー日東
セブンイレブン
セレイン
センチュリオン
タイマーに関係するレジスタ
タイマー・PWM
タックス
タマノ
タワーディフェンス リリィガーディアン
ダムダム Dame dam
ツゾ
テンプレート
ディスプレイ
デオデオ
デスラー
データ圧縮
ドスパラ
ドン・キホーテ
ニートの日
ネット
ハィカラ亭
ハイカラ亭
ハイ力ラ亭
ハッカソン的なものを企画したい。
バルサン
バースデイきっぷ
パイン
パクパク
パソコン講習
パソ工
パムパムくん
ビアガーデン
ファミリーマート
フク
フジ
フジグラン
プラグインのテスト
プラス
プログラミング
プログラム講習会
プーの森
ヘルプ
ベスト電器
ペンペンについて
マイコン勉強会
マクドナルド
マサ
マッキー
ママピス
マリシ
マリシとNAOのネット界の超時空スーパーアイドル(笑)を目指すページ
マリシライナー
マリシ容疑者(ジョーク)
ミカン
ミスタードーナツ
ミニクイズ(JSF)
メーリングリスト
モスバーガー
ヤマダ電機
ヤムキン
ユウ
ユウメ
ユースケ・サンタ
ラジオ会館
ラピュタガーデン
ランレングス圧縮
リズム天国(parody)
リッチドーナツ
リヨ
レイジ
ロッテリア
ロボット講座
ローグライクゲームを作ろう
ローゼ
ローソン
ローソン(コンビニ)
ワングー
ワールドキッチン
ヴィロット
一天張
一気コール
七厘や本店
七面鳥ぅ
万帳
両津
之達磨
企画/CSR Blog Rally
企画まとめ
個人で購入すべきパーツ
元帥
入力の使い方
入部希望の皆様へ
冷蔵庫
処分予定の雑誌リスト
初級シスアド
勝山協食
半塩
卒業生追い出しコンパ
協同ゲーム制作
単位取ったら負けかなと思ってる
単位取得率
合宿
合宿 2010/9
吉野家
喫茶マウンテンを現地指導
四国再発見きっぷネットワーク
四国再発見きっぷネットワーク(β)
四川飯店
回数券をみんなでわけて使おう
図書館のグループ学習室
圧縮を行うプログラムをつくるところについて思う所
坊ちゃん
坐・和民
埋蔵金
基数ソート
夏合宿
夏合宿の反省点2013
多恋人(だれと)
大宇宙拡大大帝国絶対永久皇帝大帝国大元帥★
大街道
大街道歯科
大阪行き移動案
学生祭2009
学生祭2012
学生祭2013
学生祭2014
学生祭2015
学生祭2016
学生祭2017
学祭
学祭2008まとめ
学祭2010
学祭2010作品
学祭2011作品
学祭2012作品
学祭2013作品
学祭2014作品
学祭2015作品
学祭2016作品
学祭2017作品
学祭用電光掲示板をつくろーの会
学際2011
宇和島の美味しいもの巡り旅
安価に旅行
定期購読雑誌
山田
島根県
市駅
幹部のおしごと
幻の春合宿
庄屋
忘年会
忠孝
情報処理技術者試験
情報処理試験
愛媛大学
手作業でやってみるエラトステネスの篩
振り子式車両傾斜角度計算
整形ルール
新入生M
新入生歓迎コンパ
新入生歓迎合宿
新勧ビラ-2009- 作成黒歴史
新年会
旅に出よう
明治ブルガリアヨーグルト
映画化アニメに対する一般人の認識
時間割表のひな形
晴れたり曇ったり
書式文字列について
書籍購入
村さ来大街道店
村さ来本店
松屋
松山−伊予上灘の時刻表
松山−大阪間の移動手段についての考察
松山市駅
松山駅
柚木
栗林公園
業務スーパー
歴代の役員
毀襲
汚物
沢庵
海洋堂ホビー館への旅
清まる
漣
炉談
焼きプリン
生協食堂
白木屋
白虎
神崎
簡易BBS
簡易BBS・過去ログ1
簡易BBS・過去ログ2
簡易BBS・過去ログ3
簡易BBS・過去ログ4
簡易BBS・過去ログ5
簡易BBS・過去ログ6
簡易BBS・過去ログ7
簡易BBS・過去ログ8
簡易BBS・過去ログ9
粋人
純歩
翔
能三食堂
自宅警備イン
自宅警備基金
自宅警備委員会
花いちもんめ
萬楽塩田屋
西条ビール工場・四国鉄道文化館の旅
要出典
説明会
講座一覧
讃岐うどんツアー
讃岐うどんツアー(高松市内コース)
豆蔵
資格をとろう
資格をとろう2006
軍曹
連絡船うどん
部則
部品のページ
部員のMSNアドレス
部員一覧
金曜日
銀
銀天街
鍵当番
関数ポインタ
青めがね
A.
JR栗林駅
O
SLやまぐち号と津和野
64
*AVRマイコンなページ [#m702a849] AVRマイコンなページにようこそ~ ここではAVRマイコン講座での内容をまとめたり,追加情報を載せたりしています~ 内容について不備,間違い,不足等あれば指摘,追記,修正等どんどんしてください~ 現在製作中のため画像等がないですが余裕ができたら作ってあげていきます~ **AVRマイコンとは? [#x1320e23] AVRマイコンとはATMEL社が生産している8bitマイコン(マイクロコントローラ)のことです~ CPU、メモリ(RAM、ROM)、I/O、データ記憶用のEEPROM、クロック発振回路、タイマーなどが~ 1チップに収められており、書き込まれたプログラムにより制御することが可能です~ よく似たものにPICがあげられますが,PICと違い内部に発信回路を持っているなど~ 使い勝手が良かったりします~ **AVRの種類 [#k8819fe1] 昔からある90Sシリーズと、大容量化、I/O拡張のMegaシリーズ、~ 高機能化・低消費電力化・低電圧対応のTinyシリーズがある~ ・90S*** ・ATMega*** ・ATTiny*** **開発環境 [#zcf926c0] 開発環境として統合開発環境の「AVR Studio」が無料で配布されている~ また,C言語用のコンパイラとして「WinAVR」も無料で配布されている **何ができるの? [#waa573c4] アイデア次第でいろんなことができますが,~ 今回の講座ではATTiny461を使ったライントレースロボットの開発をメインに~ 説明をしていく予定です~ *AVRマイコン講座 [#r7c63578] **開発環境を作る [#o31ea185] AVRマイコンを使うにあたって開発環境の準備をします~ コンピュータを使って何かをしたい場合,目的に合ったプログラムを用意しますよね?~ AVRマイコンも同様でマイコンで何かをしたい場合,プログラムを用意する必要があります~ ただし,マイコン自身でプログラムを作ることはできないのでパソコンにマイコン用のプログラムを作るための用意をします~ ~ 次のページから最新版の「WinAVR」をダウンロードしてきます~ http://sourceforge.net/project/showfiles.php?group_id=68108 ~ ダウンロードページに"WinAVR-**********-install.exe"(*はリリースされた日付)~ があるので最新の日付をダウンロードしてください~ ダウンロードが済んだら"WinAVR-**********-install.exe"を実行します~ 後はセットアップウィザードに従ってインストールしてください~ 「WinAVR」はAVRマイコン用のC言語コンパイラでC言語で組まれたプログラムを~ マイコンが理解できる形(マシン語)に変換してくれます~ 次にAVRマイコン用の総合開発環境をインストールします~ 総合開発環境はいろいろなコンパイラでの開発をサポートするための環境を提供するものです~ 今回は「AVR Studio」を使います~ 下記のページにある"Software:"コーナーの中から"AVR Studio 4.16 (build 628) "といったものをダウンロードします~ http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 ~ よく似たものに"AVR Studio 4.16 SP1 (build 638) "がありますがこちらはサービスパックなので間違えないようにしてください~ こちらは後で使うので一緒にダウンロードしておくと良いです~ "AvrStudio***Setup.exe"(*はバージョン)を実行します~ 先ほどと同様にセットアップウィザードに従ってインストールしてください~ ***純正ライターでWindows8の場合 [#lcb50b1c] デジタル証明書をインストールしないとライターを認識してくれない。~ 以下の作業をこなしてくだせぇ~ ~ 証明書いんすこ~ 1. C:\Windows\Inf\AtmelInf.catのプロパティを開く~ 2. デジタル署名のタブをクリック~ 3. 署名一覧のAtmel Norwayをクリックして詳細を開く~ 4. 証明書の表示を開く~ 5. 証明書のインストールをクリック~ 6. 保存場所⇒ローカルコンピュータを選択~ 7. 自動的に証明書ストアを配置を選択~ 8. 完了~ ~ ドライバ更新~ 1. デバイスマネージャーを実行~ 2. ライタ挿したら「Jungo」に「AVRISP mkii」が~ 3. そいつのドライバを更新~ ~ まだAtmelStudioは認識してくれなかった(筆者win8 x64)~ 2013/1/6現在あんま情報なくて、めんどいけどこれで取り敢えずできるから書いとく~ dllファイルを移動させる方法もあって、C:\Program Files (x86)\Atmel\Atmel Studio 6.0\avrdbgにあるすべてのdllを「code Cache folder」へコピーしろって書いてあったけど意味わからんので放置(笑) ~ ~ 結局できた方法は例のC:\Program Files (x86)\Atmel\Atmel Studio 6.0\avrdbgにあるavrdbg.exeを管理者で実行してAtmelStudioを起動する方法~ やってみるとわかるけどavrdbg.exeが消えないから鬱陶しいよ。~ 以下その2つを起動するバッチファイル~ avrdbg.exeのプロパティで「管理者としてこのプログラムを〜」にチェック忘れずに~ ~ @echo off start "" "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\atmelstudio.exe" cd "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\avrdbg" start avrdbg.exe ***純正ライターではなく usbaspを使用する場合 [#x14500d3] これに加えてライティングソフトであるavrdudeとライターのUSBドライバを入れないといけません。~ avrdude http://yuki-lab.jp/hw/avrdude-GUI/ ~ このページでavrdude.exeとavrdude-GUIをダウンロードしてください~ ~ USBドライバー http://www.wortelsoft.nl/english/usbasp.html ~ ~ 更に加えてOSがWindowsXPよりも上位の場合はavraspライターのファームウェアを書き換える必要があります(winXPで書き換える必要がないことは検証できてません)。~ ファームウェアはusbaspの本家サイトよりダウンロードできます。~ ~ これで開発環境が整いました~ **ライタって何ですか? [#f6ef0f28] さて,開発環境が整ったところで,どうやってマイコンにプログラムを入れるのか?~ という問題が出てきます~ ~ マイコンにプログラムを入れることを"書き込み","焼き込み"といったりします~ マイコンのROMにデータを書きもむことから来てるのですが,昔は紫外線を使って~ ROMを変質させることによって書き込んだため"焼き込む"といった言い方をします~ ~ 話が脱線してきたので元に戻しますが~ この書き込みには"ライタ"と呼ばれるものを利用します~ ライタにはパラレル,シリアル,USBに接続するものがありそれぞれで書き込み方が違っています~ 開発環境の構築で「AVR Studio」をインストールしましたが一部のライタを用いることで~ 「AVR Studio」からライタを操作してマイコンにプログラムを書き込むことが可能です~ 今回はATMEL社純正のライタである「AVRISP mk?」を使うので「AVR Studio」から書き込みが可能です~ 自分でライタを自作することも可能ですので興味がある人は調べてみてください~ **プログラムを組んでみよう [#b2a3a77b] では実際にプログラムを組んで見ましょう~ 「スタート」→「プログラム」→「Atmel AVR Tools」から「AVR Studio」を起動してください~ 次に「project」→「New Project」を選択します~ ウィンドウが開くので,AVR GCCを選択して「Project name」を決めます~ 今回は例として「sample」というプロジェクトを作ってみます ここでCreate folderのチェックを入れるとプロジェクトごとにフォルダが作成されます~ 保存先の指定もここで行います(デフォルトはマイドキュメントになっています)~ 設定したら「Next」で次にいきます~ 次の画面ではデバッグを行うためのシミュレータと使用するマイコンの選択をします~ 今回はATTiny461を使うので「Debug plogram」は「AVR Simulator」を~ 「Device」は「ATTiny461」を選びます~ 選び終わったら「Finish」を押します~ ~ 「Finish」を押した後,「sample.c」というファイルが開いた状態でエディタが立ち上がります~ この「sample.c」の中にプログラムを書いていきます~ 次にサンプルプログラムを書いておきます #include <avr\io.h> int main(void) { while(1){ } return (0); } まず, #include <avr\io.h> ですがこれはAVRマイコンの各種設定等を持っているヘッダーです~ while(1){ } ここで無限ループが発生します~ この中に処理を記述します~ 今回は何も記述されていないので,何もしません~ ~ ということで今回のプログラムは起動した後何もしないプログラムです~ **ポートとは何ですか? [#ec1f5250] さて,このままでは面白くもなんともないので次に行ってみましょう~ 先ほどのプログラムを改造していくのですが,ここで一つ重要な情報があります~ AVRマイコンには数本から数十本のピンが出ています~ このピンは何に使うかというと~ 1,電源及びグランド(0V)~ 2,入出力(H,L)~ 3,A/D変換入力~ 4,アナログ出力~ 5,シリアル通信~ 6,クロック入力~ 7,プログラム書き込み~ 他いろいろな入出力に使われます~ 今回使用しているATTiny461はDIPパッケージで20本のピンを持っており~ 内16本が入出力をサポートしています~ 但し,一本のピンが複数の機能を持っているのでどの機能を使用するか指定が必要です~ 前置きが長くなってしまいましたが~ ポートとはHightやLowの信号を出したり受けたりするピンのことです~ ATTiny461ではポートA,Bの2つがありそれぞれ0〜7の8ポート,計16ポートあります~ **LEDを光らせてみよう [#ub5ea3f9] では実際にハードを制御してみましょう~ まずは簡単にLEDを点滅させるプログラムを作ってみましょう~ 上にある何もしないプログラムを改造していきます #include <avr\io.h> int main(void) { long i; while(1){ //処理の実行を待つ for(i=0;i<20000;i++){ } //ポートAの1番を出力に設定する DDRA = 1; //ポートAの1番の出力を反転する PORTA ^= 1; } return (0); } これで後は実際に配線を行いマイコンにプログラムを書き込むことでLEDが点滅するようになります.~ まず,~ for(i=0;i<20000;i++){ } のループですが,今回使用するATTiny461は20MHzのクロックで動作するため~ 大体1秒間に200万回命令が実行されます(実際は処理内容により変わりますが).~ そのため,簡単な機能しか持たないプログラムでは処理が高速で実行され変化~ を認識することができなくなります.~ そこで,何もしない処理(といっても比較処理、加算処理を行いますが)を大量~ にさせることで目的とする命令をゆっくり実行することが可能となります.~ 次に,~ DDRA = 1; とありますが,この書き方ではポートAの0〜7に対して0b0000001という指示を出しています.~ これはポートAの0は出力,1〜7は入力として使いますという指示になります.~ これによってポートの入力,出力を設定することが可能になります.~ また,次のように書くことも可能です.~ DDRA = 0b0000001; //2進数表記~ DDRA = 0x01; //16進数表記~ ~ そして,~ PORTA ^= 1; これも同様にポートAの0〜7に対して0b0000001という指示を出しています~ しかしながら ^= となっているので排他的論理輪(XOR:AとBが等しい場合0,違う場合1を返す)~ となっています.この場合ですと,PORTAの現状に対し0b0000001と比較して同一なら0を~ 違うなら1を返すため,出力が反転したようになります.~ これが,~ PORTA ~= 1;~ となると,ポートAの0はHを,1〜7はLを出力しなさいという命令になります~ 但し,DDRAで0番のみ出力になっているので実際に出力されるのは0番のみ有効です~ **A/D変換とは [#ke10cf45] まずはA/D変換とはなんぞや?という人のために簡単に説明~ A/D変換とはアナログな入力(0〜5Vの電圧変化といったもの) をマイコン側でデジタルな値(0〜1024の値)として認識するための変換である。~ 逆にD/A変換というのもあり、こちらはマイコン内部の値を0〜5Vの電圧として出力したい際などに使われます。~ **センサを使ってみよう [#kc2818a0]
タイムスタンプを変更しない
*AVRマイコンなページ [#m702a849] AVRマイコンなページにようこそ~ ここではAVRマイコン講座での内容をまとめたり,追加情報を載せたりしています~ 内容について不備,間違い,不足等あれば指摘,追記,修正等どんどんしてください~ 現在製作中のため画像等がないですが余裕ができたら作ってあげていきます~ **AVRマイコンとは? [#x1320e23] AVRマイコンとはATMEL社が生産している8bitマイコン(マイクロコントローラ)のことです~ CPU、メモリ(RAM、ROM)、I/O、データ記憶用のEEPROM、クロック発振回路、タイマーなどが~ 1チップに収められており、書き込まれたプログラムにより制御することが可能です~ よく似たものにPICがあげられますが,PICと違い内部に発信回路を持っているなど~ 使い勝手が良かったりします~ **AVRの種類 [#k8819fe1] 昔からある90Sシリーズと、大容量化、I/O拡張のMegaシリーズ、~ 高機能化・低消費電力化・低電圧対応のTinyシリーズがある~ ・90S*** ・ATMega*** ・ATTiny*** **開発環境 [#zcf926c0] 開発環境として統合開発環境の「AVR Studio」が無料で配布されている~ また,C言語用のコンパイラとして「WinAVR」も無料で配布されている **何ができるの? [#waa573c4] アイデア次第でいろんなことができますが,~ 今回の講座ではATTiny461を使ったライントレースロボットの開発をメインに~ 説明をしていく予定です~ *AVRマイコン講座 [#r7c63578] **開発環境を作る [#o31ea185] AVRマイコンを使うにあたって開発環境の準備をします~ コンピュータを使って何かをしたい場合,目的に合ったプログラムを用意しますよね?~ AVRマイコンも同様でマイコンで何かをしたい場合,プログラムを用意する必要があります~ ただし,マイコン自身でプログラムを作ることはできないのでパソコンにマイコン用のプログラムを作るための用意をします~ ~ 次のページから最新版の「WinAVR」をダウンロードしてきます~ http://sourceforge.net/project/showfiles.php?group_id=68108 ~ ダウンロードページに"WinAVR-**********-install.exe"(*はリリースされた日付)~ があるので最新の日付をダウンロードしてください~ ダウンロードが済んだら"WinAVR-**********-install.exe"を実行します~ 後はセットアップウィザードに従ってインストールしてください~ 「WinAVR」はAVRマイコン用のC言語コンパイラでC言語で組まれたプログラムを~ マイコンが理解できる形(マシン語)に変換してくれます~ 次にAVRマイコン用の総合開発環境をインストールします~ 総合開発環境はいろいろなコンパイラでの開発をサポートするための環境を提供するものです~ 今回は「AVR Studio」を使います~ 下記のページにある"Software:"コーナーの中から"AVR Studio 4.16 (build 628) "といったものをダウンロードします~ http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 ~ よく似たものに"AVR Studio 4.16 SP1 (build 638) "がありますがこちらはサービスパックなので間違えないようにしてください~ こちらは後で使うので一緒にダウンロードしておくと良いです~ "AvrStudio***Setup.exe"(*はバージョン)を実行します~ 先ほどと同様にセットアップウィザードに従ってインストールしてください~ ***純正ライターでWindows8の場合 [#lcb50b1c] デジタル証明書をインストールしないとライターを認識してくれない。~ 以下の作業をこなしてくだせぇ~ ~ 証明書いんすこ~ 1. C:\Windows\Inf\AtmelInf.catのプロパティを開く~ 2. デジタル署名のタブをクリック~ 3. 署名一覧のAtmel Norwayをクリックして詳細を開く~ 4. 証明書の表示を開く~ 5. 証明書のインストールをクリック~ 6. 保存場所⇒ローカルコンピュータを選択~ 7. 自動的に証明書ストアを配置を選択~ 8. 完了~ ~ ドライバ更新~ 1. デバイスマネージャーを実行~ 2. ライタ挿したら「Jungo」に「AVRISP mkii」が~ 3. そいつのドライバを更新~ ~ まだAtmelStudioは認識してくれなかった(筆者win8 x64)~ 2013/1/6現在あんま情報なくて、めんどいけどこれで取り敢えずできるから書いとく~ dllファイルを移動させる方法もあって、C:\Program Files (x86)\Atmel\Atmel Studio 6.0\avrdbgにあるすべてのdllを「code Cache folder」へコピーしろって書いてあったけど意味わからんので放置(笑) ~ ~ 結局できた方法は例のC:\Program Files (x86)\Atmel\Atmel Studio 6.0\avrdbgにあるavrdbg.exeを管理者で実行してAtmelStudioを起動する方法~ やってみるとわかるけどavrdbg.exeが消えないから鬱陶しいよ。~ 以下その2つを起動するバッチファイル~ avrdbg.exeのプロパティで「管理者としてこのプログラムを〜」にチェック忘れずに~ ~ @echo off start "" "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\atmelstudio.exe" cd "C:\Program Files (x86)\Atmel\Atmel Studio 6.0\avrdbg" start avrdbg.exe ***純正ライターではなく usbaspを使用する場合 [#x14500d3] これに加えてライティングソフトであるavrdudeとライターのUSBドライバを入れないといけません。~ avrdude http://yuki-lab.jp/hw/avrdude-GUI/ ~ このページでavrdude.exeとavrdude-GUIをダウンロードしてください~ ~ USBドライバー http://www.wortelsoft.nl/english/usbasp.html ~ ~ 更に加えてOSがWindowsXPよりも上位の場合はavraspライターのファームウェアを書き換える必要があります(winXPで書き換える必要がないことは検証できてません)。~ ファームウェアはusbaspの本家サイトよりダウンロードできます。~ ~ これで開発環境が整いました~ **ライタって何ですか? [#f6ef0f28] さて,開発環境が整ったところで,どうやってマイコンにプログラムを入れるのか?~ という問題が出てきます~ ~ マイコンにプログラムを入れることを"書き込み","焼き込み"といったりします~ マイコンのROMにデータを書きもむことから来てるのですが,昔は紫外線を使って~ ROMを変質させることによって書き込んだため"焼き込む"といった言い方をします~ ~ 話が脱線してきたので元に戻しますが~ この書き込みには"ライタ"と呼ばれるものを利用します~ ライタにはパラレル,シリアル,USBに接続するものがありそれぞれで書き込み方が違っています~ 開発環境の構築で「AVR Studio」をインストールしましたが一部のライタを用いることで~ 「AVR Studio」からライタを操作してマイコンにプログラムを書き込むことが可能です~ 今回はATMEL社純正のライタである「AVRISP mk?」を使うので「AVR Studio」から書き込みが可能です~ 自分でライタを自作することも可能ですので興味がある人は調べてみてください~ **プログラムを組んでみよう [#b2a3a77b] では実際にプログラムを組んで見ましょう~ 「スタート」→「プログラム」→「Atmel AVR Tools」から「AVR Studio」を起動してください~ 次に「project」→「New Project」を選択します~ ウィンドウが開くので,AVR GCCを選択して「Project name」を決めます~ 今回は例として「sample」というプロジェクトを作ってみます ここでCreate folderのチェックを入れるとプロジェクトごとにフォルダが作成されます~ 保存先の指定もここで行います(デフォルトはマイドキュメントになっています)~ 設定したら「Next」で次にいきます~ 次の画面ではデバッグを行うためのシミュレータと使用するマイコンの選択をします~ 今回はATTiny461を使うので「Debug plogram」は「AVR Simulator」を~ 「Device」は「ATTiny461」を選びます~ 選び終わったら「Finish」を押します~ ~ 「Finish」を押した後,「sample.c」というファイルが開いた状態でエディタが立ち上がります~ この「sample.c」の中にプログラムを書いていきます~ 次にサンプルプログラムを書いておきます #include <avr\io.h> int main(void) { while(1){ } return (0); } まず, #include <avr\io.h> ですがこれはAVRマイコンの各種設定等を持っているヘッダーです~ while(1){ } ここで無限ループが発生します~ この中に処理を記述します~ 今回は何も記述されていないので,何もしません~ ~ ということで今回のプログラムは起動した後何もしないプログラムです~ **ポートとは何ですか? [#ec1f5250] さて,このままでは面白くもなんともないので次に行ってみましょう~ 先ほどのプログラムを改造していくのですが,ここで一つ重要な情報があります~ AVRマイコンには数本から数十本のピンが出ています~ このピンは何に使うかというと~ 1,電源及びグランド(0V)~ 2,入出力(H,L)~ 3,A/D変換入力~ 4,アナログ出力~ 5,シリアル通信~ 6,クロック入力~ 7,プログラム書き込み~ 他いろいろな入出力に使われます~ 今回使用しているATTiny461はDIPパッケージで20本のピンを持っており~ 内16本が入出力をサポートしています~ 但し,一本のピンが複数の機能を持っているのでどの機能を使用するか指定が必要です~ 前置きが長くなってしまいましたが~ ポートとはHightやLowの信号を出したり受けたりするピンのことです~ ATTiny461ではポートA,Bの2つがありそれぞれ0〜7の8ポート,計16ポートあります~ **LEDを光らせてみよう [#ub5ea3f9] では実際にハードを制御してみましょう~ まずは簡単にLEDを点滅させるプログラムを作ってみましょう~ 上にある何もしないプログラムを改造していきます #include <avr\io.h> int main(void) { long i; while(1){ //処理の実行を待つ for(i=0;i<20000;i++){ } //ポートAの1番を出力に設定する DDRA = 1; //ポートAの1番の出力を反転する PORTA ^= 1; } return (0); } これで後は実際に配線を行いマイコンにプログラムを書き込むことでLEDが点滅するようになります.~ まず,~ for(i=0;i<20000;i++){ } のループですが,今回使用するATTiny461は20MHzのクロックで動作するため~ 大体1秒間に200万回命令が実行されます(実際は処理内容により変わりますが).~ そのため,簡単な機能しか持たないプログラムでは処理が高速で実行され変化~ を認識することができなくなります.~ そこで,何もしない処理(といっても比較処理、加算処理を行いますが)を大量~ にさせることで目的とする命令をゆっくり実行することが可能となります.~ 次に,~ DDRA = 1; とありますが,この書き方ではポートAの0〜7に対して0b0000001という指示を出しています.~ これはポートAの0は出力,1〜7は入力として使いますという指示になります.~ これによってポートの入力,出力を設定することが可能になります.~ また,次のように書くことも可能です.~ DDRA = 0b0000001; //2進数表記~ DDRA = 0x01; //16進数表記~ ~ そして,~ PORTA ^= 1; これも同様にポートAの0〜7に対して0b0000001という指示を出しています~ しかしながら ^= となっているので排他的論理輪(XOR:AとBが等しい場合0,違う場合1を返す)~ となっています.この場合ですと,PORTAの現状に対し0b0000001と比較して同一なら0を~ 違うなら1を返すため,出力が反転したようになります.~ これが,~ PORTA ~= 1;~ となると,ポートAの0はHを,1〜7はLを出力しなさいという命令になります~ 但し,DDRAで0番のみ出力になっているので実際に出力されるのは0番のみ有効です~ **A/D変換とは [#ke10cf45] まずはA/D変換とはなんぞや?という人のために簡単に説明~ A/D変換とはアナログな入力(0〜5Vの電圧変化といったもの) をマイコン側でデジタルな値(0〜1024の値)として認識するための変換である。~ 逆にD/A変換というのもあり、こちらはマイコン内部の値を0〜5Vの電圧として出力したい際などに使われます。~ **センサを使ってみよう [#kc2818a0]
テキスト整形のルールを表示する