ページ更新: 2015-10-15 (木) (1286日前)

関連:

(2015-07-03 新規作成)

ATMEL AVR, および Arduino とその互換機について。

目次

[編集]

情報源 #

[編集]

ATMEL #

(TODO: MCU とデータシート、プログラマ、JTAG-ICE などのリンクを記入する)

[編集]

Arduino #

(TODO: arduino.cc, arduino.org などのリンクを記入する)

[編集]

#

[編集]

MIDI #

[編集]

avrdude #

[編集]

メモ #

[編集]

aitendo あちゃんでいいの, ぶれぼでいいの (2015-10-12) #

ATMega328P Arduinoブートローダ書き込み済み(内蔵RC発振8MHz)を用いた。

USBシリアルI/F には 秋月電子 AE-UM232R秋月電子 AE-FT231X を用いた。

あちゃんでいいの (AKIT-ADINO)

  • LEDの電源制限抵抗330ΩがVCCに繋がっているので、DigitalOut = LOWでLEDが点灯する。 (Arduinoは、この逆で、DiditaiOut = HIGH のときLEDが点灯する)

表面実装部品のはんだ付け。テープで仮固定してはんだ付けした。

AKIT-ADINO-001.jpg

動作確認。スケッチ書き込みOK。

AKIT-ADINO-002.jpg

ぶれぼでいいの (BBDeiino)

動作確認。スケッチ書き込みOK。

BBDeiino-001.jpg

小さいブレッドボードにも収まる。ただ、このブレッドボードにATMega328Pを挿すと、抜くのが大変:

BBDeiino-002.jpg

左側:ぶれぼでいいの×2台, 右側:あちゃんでいいの×2台:

AKIT-ADINO-BBDeiino.jpg

[編集]

Arduino のリセット動作 (2015-07-27) #

Arduino の IDE が DTR を low にしてAVRをリセットしてArduinoブートローダーにスケッチを読みませるときの DTR と RESET 信号 の波形を見てみた。

Arduinoブートローダ書き込み済みATMega328P-PU(内蔵CR発振8MHz版)で電源と信号の電圧は3.3V。

DTR と RESET の間のコンデンサーの容量は 0.1uF (100nF)

オシロスコープの ch1=DTR, ch2=RESET:

arduino-reset-001.jpg

RESET SW (タクトスイッチ) を押したとき。SWを押すと 3.3V → 0V になったあと、60us 後に2V、250us 後には3.3Vに戻る。

arduino-reset-sw-001.png

Arduino IDE で ctrl-U を押してスケッチを描き込んだとき。DTR はしばらく (3秒くらい) 0V になるが、RESET は 2ms 未満。0.5ms くらいで2Vに達する。

arduino-reset-ctrlU-001.png

オシロスコープの ch1=RESET, ch2=RX:

arduino-reset-002.jpg

Arduino IDE で ctrl-U を押してスケッチを描き込んだとき:

arduino-reset-ctrlU-002.png

[編集]

Arduinoブートローダ書き込み済みATMega328P-PU(内蔵CR発振8MHz版) (2015-07-20) #

Arduinoブートローダ書き込み済みATMega328P-PU(内蔵CR発振8MHz版) - スイッチサイエンス をブレッドーボード上で使ってみた。

Arduino 1.6.5 (arduino.cc 版) にて、boards.txt (C:\Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt) に以下の設定を追加して、コンパイルと書き込みOK。

  • (2016-04-24) Arduino 1.6.8 (arduino.cc 版) 用に「ATmega328P_RC8MHz.build.board=AVR_ATMEGA328P_RC8MHZ」を追加した。

boards.txt の Duemilanove や Arduino Pro Mini 8MHz を参考にした。

##############################################################
## https://www.switch-science.com/catalog/1414/ , for Arduino 1.6.8 (arduino.cc)

ATmega328P_RC8MHz.name=Arduino ATmega328P 8MHzRC

ATmega328P_RC8MHz.build.mcu=atmega328p
ATmega328P_RC8MHz.build.f_cpu=8000000L
ATmega328P_RC8MHz.build.core=arduino
ATmega328P_RC8MHz.build.variant=standard
ATmega328P_RC8MHz.build.board=AVR_ATMEGA328P_RC8MHZ

ATmega328P_RC8MHz.upload.tool=avrdude
ATmega328P_RC8MHz.upload.protocol=arduino
ATmega328P_RC8MHz.upload.maximum_size=30720
ATmega328P_RC8MHz.upload.maximum_data_size=2048
ATmega328P_RC8MHz.upload.speed=57600

ATmega328P_RC8MHz.bootloader.tool=avrdude
ATmega328P_RC8MHz.bootloader.low_fuses=0xE2
ATmega328P_RC8MHz.bootloader.high_fuses=0xDA
ATmega328P_RC8MHz.bootloader.extended_fuses=0x05
ATmega328P_RC8MHz.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex
ATmega328P_RC8MHz.bootloader.unlock_bits=0x3F
ATmega328P_RC8MHz.bootloader.lock_bits=0x0F

メニューの「ファイル」→「環境設定」→「より詳細な情報を表示する」→「書き込み」をon して、スケッチを描き込んだときのログ:

スケッチが プログラムストレージ領域の 450バイト (1%) を使用しています。最大は 30,720バイト です。
グローバル変数が 9バイト (0%) の 動的メモリを使用しており、ローカル変数に 2,039 バイトが残っています。最高は 2,048バイトです。
C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude
 -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf 
 -v -patmega328p -carduino -PCOM9 -b57600 -D -Uflash:w:E:\TEMP_C\build4716417777868401376.tmp/sketch_jul20a.cpp.hex:i 

avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM9
         Using Programmer              : arduino
         Overriding Baud Rate          : 57600
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 2
         Firmware Version: 1.16
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f
avrdude: reading input file "E:\TEMP_C\build4716417777868401376.tmp/sketch_jul20a.cpp.hex"
avrdude: writing flash (450 bytes):

Writing | ################################################## | 100% 0.26s

avrdude: 450 bytes of flash written
avrdude: verifying flash memory against E:\TEMP_C\build4716417777868401376.tmp/sketch_jul20a.cpp.hex:
avrdude: load data flash data from input file E:\TEMP_C\build4716417777868401376.tmp/sketch_jul20a.cpp.hex:
avrdude: input file E:\TEMP_C\build4716417777868401376.tmp/sketch_jul20a.cpp.hex contains 450 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.21s

avrdude: verifying ...
avrdude: 450 bytes of flash verified

avrdude done.  Thank you.

回路:

リセット信号周り (DTRと100nF (0.1uF) でリセットする):

Arduino IDE の boards.txt 設定:

USBシリアルI/F 秋月電子 AE-UM232R, 電源電圧 5V, IO電圧 5V (青=GND, 赤=5V, 緑=RXD-TX, 黄=TXD-RX, 白=DTR#-RST):

arduino-RC8MHz-009.jpg

USBシリアルI/F 秋月電子 AE-FT231X, 電源電圧 3.3V, IO電圧 3.3V, TD,RDの抵抗1kohmを省略 (青=GND, 赤=3.3V, 緑=RXD-TX, 黄=TXD-RX, 白=DTR#-RST):

arduino-RC8MHz-010.jpg

USBシリアル=秋月電子 AE-FT234X, 電源電圧 5V, IO電圧 3.3V, TD,RDの抵抗1kohmを省略, DTRなし (青=GND, 赤=5V, 緑=RXD-TX, 黄=TXD-RX):

  • AE-FT234X には DTRがないので、スケッチ書き込み時にリセットスイッチを操作する必要がある。手順は、(1) Arduino IDE で ctrl-R でビルドしておき、(2) ブレッドボードのタクトスイッチを押し続けて、(3) タクトスイッチを離しつつ、Arduino IDE ctrl-Uを押す、でOK。
  • CBUS0 に DTR を割り当てられるかどうか調べたが、無理だった → http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT234XD.pdf#page=9

arduino-RC8MHz-011.jpg

[編集]

IoT ハンズオン勉強会 〜Arduinoでセンサーに触れてみよう〜 (Lite版) (2015-07-03) #

IoT ハンズオン勉強会 〜Arduinoでセンサーに触れてみよう〜 (Lite版) をやってみた。

CDSは CDSセル 5mmタイプ:秋月電子通商 を用いた。

LED、抵抗、タクトスイッチは手持ちから適当なのを用いた。

IOから20mA (5V時) も流せるのはちょっと便利かも。

LED (青=GND, 赤=5V):

led.jpg

LED点滅 (青=GND, 赤=8 pin):

led-blink.jpg

LED PWM (青=GND, 赤=~3 pin):

led-pwm.jpg

スイッチ とLED (青=GND, 赤=5V, 緑=8 pin, 黄=3~ pin):

switch-and-led.jpg

CDS (青=GND, 赤=5V, 緑=A0 pin):

cds.jpg

Arduino UNO R3 (ATmega328P 16MHz, SRAM 2KB, Flash 32KB, EEPROM 1KB), ATmega328P Arduinoブートローダー内部発信8MHz版書き込み済み, mbed STM32 Nucleo F411RE (内側のピン配置が Arduino と同一):

UNO-RC8MHz.jpg