sanguino

2010/8/5 追記 2010/6/23付でSanguino-0018r2_1_4となっています。
FUSE設定についてはSanguino/boards.txtにある通り
LFUSE=0xFF, HFUSE=0xDC, EFUSE=0xFD
2010/3/8 追記 Sanguinoが0018r1にアップデートしたようです.
Arduino IDEから使う分には問題ありませんが,Makefileはちょっと修正が必要かも.
以下の情報はobsoleteになるかもしれません.詳しくは後日まとめます.
FUSE設定をミスってしまったので,その前にパラレルプログラマを作って石を復活させる必要が...

twitter情報で解決.
以前sanguinoがコンパイルできないと書いた問題はやはり単純なことだったようだ.
$ARDUINO/hardware/sanguino/core/sanguino/のmain.cxxをmain.cppにrenameして,

#include <Wprogram.h>

を追加するだけで,IDEのコンパイルは通るようになった.
Makefileによる方法も

diff Makefile /Applications/Arduino.app/Contents/Resources/Java/hardware/sanguino/cores/sanguino/Makefile
43,44c43
+ MCU = atmega644p
---
- MCU = atmega168
50,51c49
+ ARDUINO = $(INSTALL_DIR)/hardware/sanguino/cores/sanguino
---
- ARDUINO = $(INSTALL_DIR)/hardware/cores/arduino
145,146c143
+ 	cat $(ARDUINO)/main.cpp >> applet/$(TARGET).cpp
---
- 	cat $(ARDUINO)/main.cxx >> applet/$(TARGET).cpp

と最小限で済んだ.折角なのでブレッドボードでsanguinoクローンを動かしてみる.マニュアルによるとピン配列は以下の通り.

ポケットプログラマのISPピンを
ISP -> 644p
1 (MISO) -> 7
2 (VCC) -> 10
3 (SCK) -> 8
4 (MOSI) -> 6
5 (RESET) -> 9
6 (GND) -> 11
に接続して,sanguinoのブートローダ
hardware/sanguino/bootloaders/atmega644p/ATmegaBOOT_644P.hex
をアップロード.FUSEは調べるのが面倒なので,とりあえずAVRFuses.appを使った.
FTDI BASIC経由でのIDEからのアップロードはうまく行かず,pocket programmerを使い,
make && make uploadは問題ない.
avrdude -p atmega644p -P usb -c usbtiny -b 57600 ATmegaBOOT_644P.hex
Arduinoとしてピンの対応はどうなってるかというと

ATMega644P

                   +---\/---+
  INT0 (D 0) PB0  1|        |40  PA0 (AI 0 / D31)
  INT1 (D 1) PB1  2|        |39  PA1 (AI 1 / D30)
  INT2 (D 2) PB2  3|        |38  PA2 (AI 2 / D29)
   PWM (D 3) PB3  4|        |37  PA3 (AI 3 / D28)
   PWM (D 4) PB4  5|        |36  PA4 (AI 4 / D27)
  MOSI (D 5) PB5  6|        |35  PA5 (AI 5 / D26)
  MISO (D 6) PB6  7|        |34  PA6 (AI 6 / D25)
   SCK (D 7) PB7  8|        |33  PA7 (AI 7 / D24)
             RST  9|        |32  AREF
             VCC 10|        |31  GND
             GND 11|        |30  AVCC
           XTAL2 12|        |29  PC7 (D 23)
           XTAL1 13|        |28  PC6 (D 22)
  RX0 (D 8)  PD0 14|        |27  PC5 (D 21) TDI
  TX0 (D 9)  PD1 15|        |26  PC4 (D 20) TDO
  RX1 (D 10) PD2 16|        |25  PC3 (D 19) TMS
  TX1 (D 11) PD3 17|        |24  PC2 (D 18) TCK
  PWM (D 12) PD4 18|        |23  PC1 (D 17) SDA
  PWM (D 13) PD5 19|        |22  PC0 (D 16) SCL
  PWM (D 14) PD6 20|        |21  PD7 (D 15) PWM
                   +--------+

動作確認のため,LEDを点灯してみたが,
PORTB,PORTAはOKだが,PORTD,PORTCは点灯しないピンがある.

(追記)Serialを有効にしていたので,TX=D8,RX=D9が付かないことがわかり,SerialをやめればPORTDもOK.
残った問題はPORTCだけで,PC2-5(TCK,TMS,TDO,TDI)が点灯しない.マニュアルを見るとこれらはJTAGのポートになっていて,FUSEにJTAGENという項目があることがわかった.これをdisableすると全部のポートが使えるようになってめでたしめでたし.

そもそもSanguinoとは何かというと、
ここに来るような人は知っているからいうまでもないのだが、
ArduinoをATmega644Pで動くようにしたクローンです。
GPIOが32本、アナログ8本、PWM6本と328Pより余裕があります。328PだとPORTが6本とか中途半端で、
周辺機器をいろいろつなごうとするとポートが足りなくなります。
石は倍の500円ですが、自作すると主要部分は千円位でArduino MEGAは6千円もするので、かなり安上がり。

広告
カテゴリー: Arduino

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー
2010年2月
« 1月   3月 »
1234567
891011121314
15161718192021
22232425262728
%d人のブロガーが「いいね」をつけました。