chottoshitahanashi’s diary

基本的に間違ったことばかり書いてるブログ。検索ひっかかるな

Targetマイコンへの書き込みまとめ

A. arduinoISPとしてtargetにブートローダを書き込む時、およびtargetのブートローダを使わないでtargetにスケッチを書き込む時(ISPとして動くarduinoがシリアル通信し、ISPがICSPを介してtargetのFUSE, SDRAM, EEPROMに書き込む。IDEではメニューから(スケッチを書き込む時はツール(Tools)->書き込み装置(Programmer)->Arduino as ISPを選び、更に「ファイル->書き込み装置を使って書き込む」を選んでISPにTargetへの書き込みをお願いする)。「ファイル->書き込み装置を使って書き込む」はArduino IDE 2.0にはなかった。統合されたのかも。

USB --- FTDI変換アダプタ----------  arduino  ---------------------- targetマイコン
           DTR->RESET               (ISP)           (ICSP端子)
           CTS->GND                                 GPIO->MISO
           VCC->VCC                                 GPIO->MOSI
           GND->GND                                 GPIO->SCK
           RX->TX                                   GPIO->RESET
           TX->RX                                   VCC->VCC
                                                    GND->GND

B. targetのブートローダを使ってtargetにスケッチを書き込む時(ブートローダがシリアル通信をしてスケッチを書き込む。IDEはtargetをArduinoとして認識する)

USB --- FTDI変換アダプタ---------- targetマイコン
           DTR>RESET
           CTS>GND
           VCC>VCC
           GND>GND
           RX->TX
           TX->RX

           (Aと同じ)


知りたいこと
1) シリアル通信するためにFTDIボードとブートローダをどのように接続すればよいか、および各端子の意味 -> 上のとおり。RX, TXはいつもの。DataはTerminal Readyで出力でよくわからんけどマイコンのリセットに使われる、CTSはClear To Sendで入力だそうな。CTSはGNDと繋げるのは未使用ってことかな。VCCとGNDはUSBから接続ボード(Arduino Pro Miniとか)への給電。

2) ATTinyへの書き込み方法
3) ブートローダを使わないでスケッチを書き込んだ時のスケッチ実行手順(ブートローダSDRAMのプログラムをRAMに転送してたはず、ブートローダが存在しないなら誰が代わりにそれをやる?)-> あ、そうかリセットされるとブートローダというプログラムが自動で実行されるんだからブートローダが存在しない場合それがそのままスケッチになっただけか。Arduinoのブートローダって何?(1) - しなぷすのハード製作記。ここの話の一般論でSDカードからRAMにプログラム転送して、て話をそのまま当てはめてしまってた、AVRではRAM転送とか必要ないんだね。ハーバードアーキテクチャどうのこうのと関係がある話か。じゃRAM容量はそのまま全部ユーザーが使えるってことか。


ArduinoでATtiny85を内部8MHzにしてスケッチを書き込む | パソコン・スマホ備忘録。こちらで使える命令がほんの少しでびびったけどArduinoが用意してる関数ってことか。じゃあソフト的にはATTinyでも今あるものは全て使えると考えてよさそう(そうじゃないと困る)。


スケッチが書き込めるなら無理にArduinoブートローダを介して書き込まないでも良さそう。その方がいろんなマイコンに同じ方法で対応できるし、将来マイコンの最大性能を生かすことができる。その時にはavrdudeの使い方を覚える。あるいは素直にmarkIIを買ってしまう?一番やりたいことが何か考えねば。


[ブートローダを使って簡単に書きこみ]


[ブートローダを使わない本格派、avrdude/ArduinoIDEを使う]

  • 開発ボード自作
  • 試作はArduino UNO R3で行う
  • Arduino IDEを使って開発、Arduino UNO R3にISPスケッチ書いてIDEからFUSEとスケッチ書き込み


[ブートローダを使わない本格派、なんとかmarkIIを使う]

  • 試作はArduino UNO R3で行う
  • スケッチ書き込み方法はこれから調べる


なんとかmarkIIを買うのはいいけどブートローダ入りのArduinoを買うのは負けた気がする。追記:なんとかmarkII(AVRISP mkⅡだった)は販売終了、後継機はこれだが秋月価格で16800円!ATMEL−ICE−BASIC: マイコン関連 秋月電子通商-電子部品・ネット通販。SpeedStudioってとこからそれっぽいのが出てるけどたぶんこれは互換品だろうなATMEL AVRISP STK500 USB ISP PROG 105990010 SeeedStudio製|電子部品・半導体通販のマルツ。USBのベンダーIDはどうしてるんだろう、あるいはシリアル変換?マルツとdigikeyが絡んでるんでヘタレなものではなさそう。
Microchip Studio for AVR® and SAM Devicesをインストール。あれ、これを見るとUSBaspてのがあったらatmel studio改めMicrochip Studioを使ってプログラムを書き込めるらしいぞ?しかも何もしなくてもavrdudeが使われてくれる?->じゃなかったこちらの方の以前のブログでやりかた紹介してた。Atmel Studio + USBasp + avrdude でAVRに書き込む。たぶんUSBaskはシリアル変換してて原理は上の奴と同じかな。AVRISP IIでなくて I 相当。スイッチサイエンスの似た製品
Pololu USB AVRプログラマ v2.1 - スイッチサイエンス



ちょっとややこしくなってきたのでまとめ。疲れたんで手書きで
f:id:name-3333:20220409013804j:plain
1つ間違い(ではないけど)発見。Arduino IDEはUsbaspを初めからサポートしてた。書き込み装置(Programmer)に初めからある。なのでavrdudeを自分で実行して.hexファイルを送らなくても良い。


FT232RLでATmega328Pにスケッチを書き込む方法 | あつラボ。こっちの人はFTDIからのVCCを使ってないけど別電源でArduinoを動かしてるってことかな。電流供給に難があったとか?GNDを繋げてるから大丈夫なんだろうけど。


Arduino用ブートローダ/スケッチライタの製作(8) - しなぷすのハード製作記。ATTiny13は1Mの方が省電力だけどソフトウェアシリアル使う場合は8MHzで動かすとのこと。16Mで動かすこともできるが内部発振子を使えないからピンを2つ損してしまう。