2013/01/23 Atmega1284PをArduino化しました。

 ============== 
自作のまとめページ 
http://emaken.com/project/2012/2012.html 
============== 
秋月の電光掲示板モジュールを2枚挿せるベースボードの基板を作りました。
このベースボードに載るマイコンは、秋月電子で販売されているマイコン、ATmega1284Pを使っています。
ATmega1284Pを採用したのは、1)Flashメモリの容量が128kバイト、2)SRAMの容量が16kバイトと大容量のメモリを積んでいたためです。
また、SanguinoプロジェクトでATmega1284PをArduino化するブートローダーが公開されていたのが決め手になりました。

今日、秋月電子 電光掲示板用シールド(1枚)のファームウェアの実装もひと段落したので、2枚版の作業をしました。
・・・気分転換ともいいます:)

秋月で購入したATmega1284Pにはファームウェアが書き込まれていませんので、Atmega1284Pにブートローダーを書き込む作業をします。
ブランク状態のAVRにファームウェアを書き込むには、STK500やAVR ISPmkIIといったAtmel社のツールを使いますが、Arduino IDEとArduinoマイコンで代用できます。
手順については、Kosakaさんのページに詳細な説明がのっていて大変参考になりました。

今回は、ATmega1284PをArduino化する際、下記手順で作業しました。

○ソフトウェアの準備
1)Arduino IDE 1.0.3をダウンロード、展開(arduino-1.0.3フォルダが生成)
2)Sanguinoプロジェクトでファイル一式をダウンロード、展開
3)arduino-1.0.3¥hardware¥arduino¥boards.txtに2)で展開したboards.txtを追加。
4)arduino-1.0.3¥hardware¥arduinoに2)の残りのファイルを上書き移動。
5)arduino-1.0.3¥arduino.exeをダブルクリック
6)ツール→マイコンボード→Sanguino W/Atmega1284p 16mhzがあることを確認。

○Arduino UNOを書き込み装置にします。
Arduino UNOをPCに接続し、起動したArduino IDE上で下記のように作業します。
1)ツール→マイコンボード→Arduino UNO
2)ツール→シリアルポート→(Arduino UNOのCOMポート番号)
3)ファイル→スケッチの例→Arduino ISPを選択。
4)スケッチ→検証・コンパイル
5)ファイル→マイコンボードに書き込む
6)動作確認
LEDを7、8、9ピンに接続すると、Arduino ISPの状況がわかります。

// Put an LED (with resistor) on the following pins:
// 9: Heartbeat - shows the programmer is running
// 8: Error - Lights up if something goes wrong (use red if that makes sense)
// 7: Programming - In communication with the slave

9ピンに接続されたLEDピンが(ゆらぎ)点灯すれば、Arduino ISP化が完了です。

○Arduino UNOとAtmega1284Pを接続します。
1)Arduino ISPスケッチのコメントを参考にArduino UNOとAtmega1284Pを接続します。

信号名 Arduino UNO
ピン番号
Atmega1284P
ピン番号
slave reset 10 9
MOSI 11 6
MISO 12 7
SCK 13 8

2)オートリセットの無効化
リセット端子に150オームの抵抗を+5Vでプルアップしました。

○Atmega1284Pにブートローダーを書き込みます。
1)ツール→マイコンボード→Sanguino W/ATmega1284p 16mhzを選択。
ツール→シリアルポートの設定は、Arduino UNOのCOMポート番号のままです。
2)ツール→ブートローダーを書き込む。

すると、Arduino IDEは、Arduino ISP化されたArduino UNOのSPI端子経由でAtmega1284Pにブートローダーを書き込みはじめます。
このときのLED端子の状態ですが、
ピン9:ゆらぎ点灯します。
ピン8:正常時は、消灯します。エラーが発生すると点灯するようです。
ピン7:Atmega1284Pと通信を行っているときに点灯します。

しばらく待っていると、Arduino IDEのコンソール上に書き込み完了通知が表示されます。

○Atmega1284Pにスケッチを書き込みます。
ブートローダーが正常にAtmega1284pに書き込まれ、Arduino化されたか動作確認します。

1)今回は、UARTのスケッチを使い動作確認しました。
ファイル→04.Communication→ASCIITableを選択

Atmega1284pのUARTの信号線とAKI232CWriterを接続します。

Atmega1284p
ピン番号
信号名
14 RX
15 TX


2)ツール→マイコンボード→Sanguino W/ATmega1284p 16mhzを選択。
3)スケッチ→検証・コンパイル
4)ツール→シリアルポート→(ATmega1284pのCOMポート番号=AKI232CWriterのCOMポート番号)
5)ファイル→マイコンボードに書き込む

正常に書き込まれることを完了後、シリアルモニタを起動し、ASCII文字列がAtmega1284pから出力されることを確認します。

コメント

Arduinoからメモリー不足を感じて自作のSanguinoを作りました
がSDカードが動作しません
他のグラフィックLCDとかI2Cは動作します
RTCとかINA226PRCのデータを表示しますので確認はしています
ただこのデータをSDに保存しようとするとプログラムが停止(どこかへ・・)
Sanguinoはもう古いのですかね。
IDEは1.0.3 SanguinoはAtmega1284で5V16MHzで動かしています
何かしらのご教授をお願いします
なお,SDのサンプルプログラムでも動きません

  • 2018/01/31 14:33
トラックバック
この記事のトラックバックURL