各チャネルのポートの電圧が浮いている状態を防ぐ為につけたプルダウン抵抗の大きさに注意。
抵抗値が大きすぎるとマイコンからの漏れ電流でポートの電圧に影響する。
1MΩのプルダウン抵抗をつけいていたら信号電圧にその影響があった。
マイコンから出力した矩形波をスピーカーに直接出力する場合は圧電スピーカーを用いる。
圧電スピーカーは高インピーダンスなので5V程度の電圧ならばマイコンで扱えるほどの電流しか流れない。
ATMEGA 328p Arduino化などの備忘録。
fuse & lock bit
http://baticadila.dip.jp/arduino_205.html
上記のページのlock bitの詳細で記述されているSPMとLPMについて
SPM命令はプログラム メモリのページ消去、(消去済みの)プログラム メモリのページへの書き込み、ブート ローダ施錠ビットなどの設定に使用することができる。
LPM命令はレジスタ ファイルのZレジスタ(アドレスが格納)によって示されるプログラム空間の1バイトの内容を汎用レジスタに取得する(間接アドレス指定)。自己書き換え時などにヒューズ ビットや施錠ビットの値を読み出すのに使用することもできる。
Arduino 日本語リファレンス
http://www.musashinodenpa.com/arduino/ref/
arduino duemilanove 自作
自分がやった手順を一つ一つ記述してるのでわかっている人は飛ばしてください
用意するもの
・OS(Windows or MAC OS X or Linux)の入ったパソコン(PC)
・ATMEGA 328p
・AVRISP mk��
・USBケーブル
・ジャンパー線
・5V電源
・ブレッドボード
・16MHzの水晶発振子(値が違うと書き込みできません)
・22pF前後のコンデンサ2個(発振回路に使用)
・0.1uFのコンデンサ3個(パスコンとリセット回路に使用)
・FTDI232RLを使ったUSBシリアル通信モジュール
※秋田先生が設計された基板を流用、以下それを用いて話をすすめる
※他に、モジュールを秋月等で購入することもできる
USBシリアル変換モジュール:http://akizukidenshi.com/catalog/g/gK-01977/
【Arduino IDEのインストール】
1.下記のURLにアクセス
・http://www.arduino.cc/
2.Downloadタブをクリック
3.Arduino IDEのリンクをクリック
4.インストール先のマシンに合わせてソフトをダウンロード
5.ダウンロードしたソフト(Arduino IDE)をインストール
6.インストールしたArduino IDEのフォルダにブートローダが入っているのでそのディレクトリを開く(デフォルトのパスだと下記のパス?)
C:\Program Files\Arduino\hardware\arduino\bootloaders\atmega
7.ATmegaBOOT_168_atmega328.hexが存在することを確認(各ファイルの詳細を以下に示す)
・ATmegaBOOT_168_atmega328_pro_8MHz.hex:Arduino Pro(ATMEGA 328)
・ATmegaBOOT_168_atmega328.hex:Arduino Duemilanove(ATMEGA 328)
・ATmegaBOOT_168_atmega1280.hex:Arduino MEGA(ATMEGA 1280)
・ATmegaBOOT_168_diecimila.hex:Arduino decimila(ATMEGA 168)
・ATmegaBOOT_168_ng.hex:Arduino NG(ATMEGA 168)
・ATmegaBOOT_168_pro_8MHz.hex:Arduino Pro(ATMEGA 168)
・参照URL
http://arduino.sugakoubou.com/%E3%83%96%E3%83%BC%E3%83%88%E3%83%AD%E3%83%BC%E3%83%80%E3%83%BC
【Atmel Studio IDEのインストール】
8.下記のURLにアクセス
・http://www.atmel.com/ja/jp/
9.設計サポートタブからAtmel Studio IDEをクリック
10.Atmel Studio x.x(xxxx) Installerと書かれた文の左のアイコンをクリック
11.名前等を入力しSubmitをクリック
12.ソフトをダウンロードしインストール(詳細は割愛)
【AVRISP mk�兇離疋薀ぅ个鬟ぅ鵐好函璽襦�
13.AVRISP mk�兇�PCに接続する(Atmel Studio IDEのインストールが終了していれば、自動的にドライバがインストールされる)
【回路の組み立て】
14.ブレッドボードにATMEGA 328を挿す
15.ATMEGA 328のデータシートを参照しAVRISP mk�供⊃緇夙�振子とコンデンサからなる発振回路、電源を接続
・ATMEGA 328のデータシート:http://www.atmel.com/Images/doc8161.pdf
・AVRISP mk�兇�pin配置
・発振回路
※図はPIC16F87Xと接続しているが、ATMEGA 328に置き換えて接続すること
【ブートローダの書き込み】
16.インストールしたAtmel Studioを起動
※以降、Atmel Studio 6.2を使って話をすすめます(2014/8/26現在)
17.ToolsタブからDevice Programmingをクリック
18.以下の設定を確認後、Applyをクリック
Tool:AVRISP mk��
Deice:ATmega328p
Interface:ISP
19.ISP Clockが125kHzになっていることを確認
20.左の欄のMemoriesをクリック
21.…ボタンをクリックし、7.で確認したATmegaBOOT_168_atmega328.hexを選択してProgramをクリック
※パスに日本語が混じっていると書き込めない
22.左の欄のFusesをクリックし、以下の設定後Programをクリック
EXTENDED:0xFD
HIGH:0xDA
LOW:0xFF
参照URL:http://trac.switch-science.com/wiki/ArduinoFuse
23.左の欄のLock bitsをクリックし、以下の設定後Programをクリック
LOCKBIT:0xCF
参照URL:http://trac.switch-science.com/wiki/ArduinoFuse
※Verifyをクリックすれば設定と同一がどうか確かめることができる
※一連の流れでエラーが出た場合、ハードウェアの接続を確認すること
【FTDI232RLを使ったUSBシリアル通信モジュールのドライバの導入】
24.以下のサイトからFTDI232RLのドライバをダウンロードしインストール
http://www.ftdichip.com/Drivers/VCP.htm
※以下Windows7での説明
25.コントロールパネルからデバイスマネージャーをクリック
26.ポート(COMとLPT)をクリック
27.ドライバのインストールが正常に終わっていればUSB Serial Port(COM[X])と表示されているので[X](数字)をメモしておく
※他に接続している機器がある場合、複数表示されている可能性がある。今回使用するUSBシリアル通信モジュールのポートをメモすること
【スケッチの書き込みのためのセットアップ】
28.USBシリアル通信モジュールのDTR#端子とATMEGAの/RESET端子を0.1uFのコンデンサを介して接続する。また、ATMEGAの/RESET端子には内部プルアップがあるらしい(未確認)が念のため10kの抵抗でプルアップしておく
29. USBシリアル通信モジュールのRXDとATMEGAのTXD、USBシリアル通信モジュールのTXDとATMEGAのRXDをそれぞれクロスして接続する
30. USBシリアル通信モジュールのグラウンド及び電源を接続
【Lチカのセットアップと書き込み】
31.ATMEGAの19番のPin(PB:SCK/PCINT5)にLEDと抵抗を接続
31.Arduino IDEを起動
32.上のファイルのタブから「スケッチの例」を選択し、「01.Basics」とすすみ、「Blink」をクリック (Lチカのソースファイルがひらく)
33.上のツールのタブから「マイコンボード」を選択し、Arduino Duemilanove W/ ATMEGA328を選択
34. 上のツールのタブから「シリアルポート」を選択し、27.でメモしたポートの番号を選択
35.ファイルのタブから「マイコンボードに書き込む」を選択し、スケッチをアップロード
36.1秒ごとにLEDが点滅すれば成功です、お疲れ様でした。
※ソースファイルでが13番のピンに出力となっていますがArduino Duemilanoveのスケマを確認したところATMEGAの19番のピンに接続されています
※Arduino Duemilanoveのスケマ
http://arduino.cc/en/uploads/Main/arduino-duemilanove-schematic.pdf
※もし、「avrdude: stk500_getsync(): not in sync: resp=0x00」というエラーが出た場合、
USBシリアル通信モジュールとATMEGAが通信できていないので接続(RXDとTXDのクロスやリセット回路、発振回路等)やブートローダが正しくインストールできているか等、確認すること、上記のスケマを見ながら接続するとわかりやすい
今回は起きなかったが、このエラーはオリジナルのArduinoで書き込みする際にも起こるエラーらしく、原因はリセット回路で0.1uFのコンデンサの電圧+電源電圧が加わることが原因らしい(ネット情報)。エラーが出たらリセットスイッチでコンデンサの電圧を放電してから書き込みするといいらしい(未確認)