HOME | Raspberry Pi | 時事 | ビジネス書籍紹介 | 2022-12-01 (Thu) Today's Access : 93 Total : 559768. Since 10 Sep. 2019

ATMEGA328P-PU 3.3V/8MHz駆動
ブートローダーなしにプログラムを起動する
2021.12.25


YouTube でも紹介しています。画像をクリックすると再生できます。

今回は、ATmega328Pにプートローダーを書き込むことなしに、3.3V 8MHzで動作するようにプログラムを書き込みます。

■ATMEGA328P-PU

・電源電圧:1.8~5.5V ・コア:megaAVR ・コアサイズ:8bit ・クロック:20MHz ・プログラムメモリ:32kB ・EEPROM:1kB ・RAM:2kB ・GPIO:23pin ・ADC:6Ch ・UART/USART:1Ch ・I2C:1Ch ・SPI:1Ch ・タイマ:3Ch ・オシレータ:内蔵/外付


Arduino Nano をAVRライターとして用い、ラズベリーパイからATMEGA328P用のコードをNanoに流し込み、 ATmega328Pへの書き込みを行います。

■PlatformIOのインストール

プログラムのビルドには、Platformioを使用しています。
Arduino開発環境構築 PlatformIO


■ArduinoISP

通常は、ATMEGA328PなどのLSIにプログラムを書き込みは、AVRプログラマを使ってアクセスします。

今回は、手持ちのArduino Nano をAVRプログラマ代わりに使用して、対象のLSIにシリアルプログラミングモードでアクセスします。

シリアルプログラミングモードは、ATmega328のRESET端子をLOWにアサート中に、SPI端子を使ってATmega328の内部情報(ヒューズビットやフラッシュ、EEPROMなど)へアクセスする仕組みのことです。

Arduino Nano をAVRライターとして使用するために、ISP(In System Programming)をビルドします。


ラズベリーパイとArduinoをUSBでつなぎます。

プロジェクトを作成して、Arduino ISPをビルドします。

$ mkdir ispNano328
$ cd ispNano328
$ pio init -b nanoatmega328
$ pushd src
$ wget https://raw.githubusercontent.com/rsbohn/ArduinoISP
/master/ArduinoISP/ArduinoISP.ino


ArduinoISPは、Arduinoを、AVRライタにするためのスケッチです。
Ref.https://github.com/adafruit/ArduinoISP/blob/master/ArduinoISP.ino

$ popd
$ pio run -t upload

■Atmel AVR開発ツール

PlatformIO用のAtmel AVR開発プラットフォームとツールをインストールします。
AVRDUDE は、ISP(In System Programing)を使用して、ターミナルモードでのさまざまなメモリ領域のインタラクティブな検査と変更を行うためのユーティリティです。
Ref.https://www.nongnu.org/avrdude/ AVRDUDE - AVR Downloader/UploaDEr

$ pio platform install atmelavr --with-package tool-avrdude
Platform Manager: atmelavr @ 3.3.0 is already installed
Tool Manager: toolchain-atmelavr @ 1.70300.191015 is already installed
Tool Manager: tool-avrdude @ 1.60300.200527 is already installed
The platform 'atmelavr' has been successfully installed!
The rest of the packages will be installed later depending on your build environment.

■Arduino Nano と ATMEGA328Pの接続





以下の画像の通りArduino Nano と ATMEGA328Pを接続します。

ATMEGA328P    Nano
GND ←→ GND
5V ←→ 5V
D13 ←→ 13 SCK
D12 ←→ 12 MISO
D11 ←→ 11 MOSI
RESET ←→ 10
      GND - 10uF - RST
     9 - 1KΩ - 緑色LED(Heartbeat) - GND
     8 - 1KΩ - 赤色LED(Error) - GND
     7 - 1KΩ - 黄色LED(Programing) - GND

NanoのGNDピンとRSTピンを10uFのコンデンサーを挟んで接続します。
9番、8番、7番ピンは10KΩの抵抗を介して、緑、赤、青のLEDを接続し、GNDに流します。
9: Heartbeat - shows the programmer is running
8: Error - Lights up if something goes wrong
7: Programming - In communication with the slave



■Pro Mini ATmega328 (3.3V, 8 MHz)

ATMEGA328P を Arduino Pro Mini のように、3.3V 8MHz 仕様にします。

$ pio boards "Pro Mini"
Platform: atmelavr
=====================================================================================================
ID                 MCU         Frequency  Flash  RAM  Name
-----------------  ----------  ---------  -----  ---  -----------------------------------------------
pro8MHzatmega168   ATMEGA168   8MHz       14KB   1KB  Arduino Pro or Pro Mini ATmega168 (3.3V, 8 MHz)
pro16MHzatmega168  ATMEGA168   16MHz      14KB   1KB  Arduino Pro or Pro Mini ATmega168 (5V, 16 MHz)
pro8MHzatmega328   ATMEGA328P  8MHz       30KB   2KB  Arduino Pro or Pro Mini ATmega328 (3.3V, 8 MHz)
pro16MHzatmega328  ATMEGA328P  16MHz      30KB   2KB  Arduino Pro or Pro Mini ATmega328 (5V, 16 MHz)
sparkfun_megamini  ATMEGA2560  8MHz       252KB  8KB  SparkFun Mega Pro Mini 3.3V

PlatformIOに定義されているPro miniのボードIDを取得します。

$ mkdir ~/ATmega328ProMini
$ cd ~/ATmega328ProMini
$ pio init -b pro8MHzatmega328

ビルド用の設定ファイルを開いてみます。
$ cat platformio.ini
[env:pro8MHzatmega328]
platform = atmelavr
board = pro8MHzatmega328
framework = arduino

$ cat ~/ispNano328/src/ArduinoISP.ino
void setup() {
 Serial.begin(9600);

先ほどのArduinoISP.inoのソースをみてみると、通信速度が9600になっているので、 環境設定ファイル内のアップロード・スピードをそれに合わせて追記します。

$ vi platformio.ini
.....
upload_speed = 9600
.....

■ブートローダーとFuse(ヒューズ)ビット

真っ新なATMEGA328Pを購入した際、一般的には最初にブートローダの書き込みを行います。 ブートローダは、USB経由でパソコンから送られてくるAVRマイコン用のプログラムをマイコンに書き込み、さらにそのプログラムを先頭アドレスから実行する」、という機能を提供します。


この表のように、最初にブートローダが書き込まれている先頭アドレス 0x3C00 が呼び出され、 ブートローダはアプリケーションプログラムが格納されている先頭アドレス 0x0000 を呼び出します。



例えば、Arduino IDE でブートローダを書き込むと、Fuseビットと呼ばれるマイコンの設定情報も書き込まれます。
BOOTRSTが0の場合、リセットベクタは Boot Flash Addressの先頭番地(0x3C00)に配置され、1の場合、0x0000に配置されます。
つまり、ブートローダーを経由しないで、直接アプリケーションプログラムを実行したい場合には、BOOTRSTに“1”をセットします。
そして、このBOOTRSTの情報はFuseビットとして管理されています。
Ref.ArduinoUnoのブートシーケンス

Fuseビットは、AVRマイコンの動作の設定を書き込む不揮発性メモリで、フラッシュメモリやEEPROMとは別のメモリ空間にあります。 Fuseビットは、「拡張」「上位」「下位」の3つのバイトで構成されており、それぞれのビットにマイコン設定の機能が割り当てられています。

今回はATMEGA328Pを、3.3V, 8MHz駆動の、Pro mini 仕様で使いますが、データシートをみて、すべてのヒューズビットを判断するのは大変ですので、 Pro Mini ATMEGA328 (3.3V, 8 MHz)ブートローダ書き込みの際のヒューズビットを参考にします。

$ cat ~/.platformio/platforms/atmelavr/boards/pro8MHzatmega328.json
  ......
  "bootloader": {
    "efuse": "0xFD",
    "file": "atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex",
    "hfuse": "0xDA",
    "lock_bits": "0x0F",
    "lfuse": "0xFF",
    "unlock_bits": "0x3F"
  },
  ......
hfuseは上位バイトの値で、"0xDA"をビットに展開すると、"11011010"となり、BOOTRSTを示す0ビットの値が"0"なのでブートローダーが起動されます。
そこで、BOOTRST=1として、"11011011"とすると、"hfuse": "0xDB" になります。

これをもとにして、設定ファイルに反映させると下記のようになります。

$ vi platformio.ini
[env:pro8MHzatmega328]
platform = atmelavr
board = pro8MHzatmega328
framework = arduino
upload_protocol = custom
upload_port = /dev/ttyUSB0
upload_speed = 9600
board_build.f_cpu = 8000000L
board_fuses.lfuse = 0xFF
board_fuses.hfuse = 0xDB
board_fuses.efuse = 0xFD
upload_flags =
	-C
	; use "tool-avrdude-megaavr" for the atmelmegaavr platform
	$PROJECT_PACKAGES_DIR/tool-avrdude/avrdude.conf
	-p
	$BOARD_MCU
	-P
	$UPLOAD_PORT
	-b
	$UPLOAD_SPEED
	-c
	stk500v1
upload_command = avrdude $UPLOAD_FLAGS -U flash:w:$SOURCE:i
Ref.Atmel AVR Ateml Configuration

■テストコード作成

Lチカ・プログラムです。

$ vi ~/src/led.ino
#define LED_PIN 9

void setup() {
	pinMode(LED_PIN, OUTPUT);
}

void loop() {
	digitalWrite(LED_PIN, HIGH);
	delay(1000);
	digitalWrite(LED_PIN, LOW);
	delay(1000);
}
先に示した配線に追加して、9番ピンに抵抗を介してLEDを取り付けます。

■プログラムの書き込み

ラズベリーパイとArduino NanoをUSB接続すると、ISPプログラム稼働中の Heart Beat の緑色LEDが点滅します。


$ pio run -t upload
(抜粋)
Processing pro8MHzatmega328 (platform: atmelavr; board: pro8MHzatmega328; framework: arduino)
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/pro8MHzatmega328.html
PLATFORM: Atmel AVR (3.4.0) > Arduino Pro or Pro Mini ATmega328 (3.3V, 8 MHz)
HARDWARE: ATMEGA328P 8MHz, 2KB RAM, 30KB Flash
PACKAGES:
 - framework-arduino-avr 5.1.0
 - tool-avrdude 1.60300.200527 (6.3.0)
 - toolchain-atmelavr 1.70300.191015 (7.3.0)

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.11s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file ".pio/build/pro8MHzatmega328/firmware.hex"
avrdude: writing flash (922 bytes):

Writing | ################################################## | 100% 1.98s

avrdude: 922 bytes of flash written
avrdude: verifying flash memory against .pio/build/pro8MHzatmega328/firmware.hex:
avrdude: load data flash data from input file .pio/build/pro8MHzatmega328/firmware.hex:
avrdude: input file .pio/build/pro8MHzatmega328/firmware.hex contains 922 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.53s

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

avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)

avrdude done.  Thank you.

書き込まれたヒューズの値をみてみると
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
0xDB(11011011)ではなく、0xD9(11011001)になっていて、ブートサイズ設定も変更されるようです。


ATmega328Pへのプログラム書込み中は、黄色のLEDが光ります。


書込みが終了するとATmega328p内のプログラムが実行され、青色のLEDが点滅します。

■動作確認


ATMEGA328Pに、3.3Vを供給することで単体でLEDが点滅します。
しかし、ソースコードでは1秒間隔の点滅のはずですが、点滅間隔が非常に長いです。

■ヒューズビットの確認

$ ~/.platformio/packages/tool-avrdude/avrdude -C ~/.platformio/packages/tool-avrdude/avrdude.conf -p m328p -P /dev/ttyUSB0 -b 9600 -c avrisp

avrdude: AVR device initialized and ready to accept instructions
Reading | ########################## | 100% 0.11s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
avrdude done. Thank you.

ローヒューズの値が、0x62(0b01100010)で第7ビット CKDIV8=0により、クロックが8分周されてしまっています。

■ヒューズビットの変更

ローヒューズの第7ビットCKDIV8を1にして8分周を無効にします。
0x62(0b01100010) → 0xE2(0b11100010)に変更します。


$ ~/.platformio/packages/tool-avrdude/avrdude -C ~/.platformio/packages/tool-avrdude/avrdude.conf -p m328p -P /dev/ttyUSB0 -b 9600 -c avrisp -U lfuse:w:0b11100010:m
avrdude: AVR device initialized and ready to accept instructions
Reading | ######################### | 100% 0.11s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "0b11100010"
avrdude: writing lfuse (1 bytes):
Writing | ######################### | 100% 0.12s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0b11100010:
avrdude: load data lfuse data from input file 0b11100010:
avrdude: input file 0b11100010 contains 1 bytes
avrdude: reading on-chip lfuse data:
Reading | ######################### | 100% 0.03s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: safemode: Fuses OK (E:FF, H:D9, L:E2)
avrdude done. Thank you.

デバイスIDを確認しておきます。
$ ~/.platformio/packages/tool-avrdude/avrdude -C ~/.platformio/packages/tool-avrdude/avrdude.conf -p m328p -P /dev/ttyUSB0 -b 9600 -c avrisp
avrdude: AVR device initialized and ready to accept instructions
Reading | ######################### | 100% 0.11s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: Fuses OK (E:FF, H:D9, L:E2)
avrdude done. Thank you.

■ロックビットの確認

AVRマイコンにはロックビットという記憶領域があり、フラッシュメモリの内容や ヒューズバイトの内容を間違って書き換えないようにロックするための設定です。
0x3f であれば、書き込み可能です。ヒューズビットの設定を誤ると文鎮化する危険があります。
Ref.文鎮化した自作キーボードをArduinoを使って復帰させる

$ ~/.platformio/packages/tool-avrdude/avrdude -C ~/.platformio/packages/tool-avrdude/avrdude.conf -p m328p -P /dev/ttyUSB0 -b 9600 -c avrisp -U lock:r:con:h
avrdude: AVR device initialized and ready to accept instructions
Reading | ######################### | 100% 0.11s
avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading lock memory:
Reading | ######################### | 100% 0.04s
avrdude: writing output file "con"
avrdude: safemode: Fuses OK (E:FF, H:D9, L:E2)
avrdude done. Thank you.

$ cat con
0x3f

■その他・ヒューズビット (ATmega328 3.3V, 8 MHz)

◇拡張バイト efuse (低電圧検出リセットと復帰)



低電圧検出 BODLEVEL (Brown Out Detect) / BOT (Brown Out Threshold)

電源電圧がMin Vbot値よりも低くなった瞬間にリセットが発生し、Max Vbotよりも電圧が高くなったらリセットから復帰します。

◇上位バイト hfuse


Name Bit Description Value
RSTDISBL 7 PC6(1番ピンの用途)
1:RESETピン / 0:I/Oピン
シリアルプログラミングモードを
使用するので必ず1とする。
1(RESET)
DWEN 6 デバッグWIRE機能許可 1(無効)
SPIEN 5 シリアルプログラミングの許可 0(有効)
WDTON 4 ウォッチドッグタイマ常時有効 1(無効)
EESAVE 3 チップ消去からEEPROM内容を保護 1(初期化)

下位バイト lfuse


名称 ビット 意味 Value
CKDIV8 7 内蔵8MHzシステムクロック選択(8分周)
0:有効 / 1:無効
出荷時1/8に分周されているため、
1MHzになっています。
1(8MHz)
CKOUT 6 システムクロック出力許可
0:PB0に出力 / 1:出力しない
1(不許可)
SUT1..0 5-4 起動時間選択
下記 Table 9-6.参照
11
CKSEL3..0 3-0 クロック種別選択
“111*”の場合
外付け水晶振動子使用
“0010”の場合
OSCCAL(発振校正レジスタ)値による較正
“0000”の場合
XTAL1端子のみ使用、XTAL2はポートB7に割当
1111


■Arduino UNO (ATMEGA328P 5V/16MHz)にブートローダーを書き込む場合

あまりないと思うのですが、真っ新なUNOにブートローダーを書き込む場合には以下のようになります。
$ pio boards "UNO"
Platform: atmelavr
=========================================================================
ID              MCU          Frequency    Flash    RAM     Name
--------------  -----------  -----------  -------  ------  --------------
uno             ATMEGA328P   16MHz        31.50KB  2KB     Arduino Uno
elektor_uno_r4  ATMEGA328PB  16MHz        31.50KB  2KB     Elektor Uno R4
the_things_uno  ATMEGA32U4   16MHz        28KB     2.50KB  The Things Uno

UNO用のブートローダーの内容を確認します。

$ cat ~/.platformio/platforms/atmelavr/boards/uno.json
  .....
  "bootloader": {
    "efuse": "0xFD",
    "file": "optiboot/optiboot_atmega328.hex",
    "hfuse": "0xDE",
    "lock_bits": "0x0F",
    "lfuse": "0xFF",
    "unlock_bits": "0x3F"
  },
  .....

$ mkdir ~/ATmega328Uno
$ cd ~/ATmega328Uno
$ pio init -b uno

$ vi platformio.ini
[env:uno]
platform = atmelavr
board = uno
framework = arduino
upload_protocol = custom
upload_port = /dev/ttyUSB0
upload_speed = 9600
upload_flags =
	-C
	; use "tool-avrdude-megaavr" for the atmelmegaavr platform
	$PROJECT_PACKAGES_DIR/tool-avrdude/avrdude.conf
	-p
	$BOARD_MCU
	-P
	$UPLOAD_PORT
	-b
	$UPLOAD_SPEED
	-c
	stk500v1
upload_command = avrdude $UPLOAD_FLAGS -U flash:w:$SOURCE:i

$ pio run -e uno -t bootloader -v

■参考文献
ATmega328/P DATASHEET
ATmega328Pの調査 ~Fuseビットについて調べてみた~
 Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
2019.12.13 モバイルバッテリーによる瞬間停電対策
2020.01.01 1280x800 HDMI MONITOR
2020.01.12 micro:bitをコマンドラインで使う
2020.02.04 サーマルプリンタを使う
2020.03.27 M5Stackキーボードを利用する
2020.04.10 電卓を制御して数字を表示する
2020.05.06 箱庭回路 蓄電&昇圧回路
2020.06.29 液晶キャラクターディスプレイLCD1602A
2020.08.03 Seeeduino XIAO
2020.08.09 LGT8F328P - Arduino clone
2020.09.18 電流計測モジュール INA219
2020.09.04 箱庭回路 センサーライト
2020.09.29 シガーライターIC s090c
2020.10.13 自動給水装置 LM393+NE555
2020.12.05 FM放送受信 TEA5767
2021.01.30 DVD Player LED
2021.02.16 癒しの電子回路
2021.03.06 疑似コンソール
2021.04.13 GPIO拡張
2021.08.08 電子ペーパー
2021.09.04 AVRマイコン・ATTiny85
2021.09.25 pH測定
2021.10.23 低周波発振回路
2021.11.06 増幅回路
2021.11.13 NTP時刻取得と活用
2021.11.27 GPS情報取得
2021.12.11 GR-KURUMI
2021.12.25 ATMEGA328P 3.3V/8MHz
2022.01.11 AS-289R2 プリンタシールド
2022.01.25 TM1637 & ATtiny85
2022.02.22 Raspberry Pi Zero 小道具
2022.03.01 ATTinyCore
2022.03.18 Adafruit QT Py + XIAO Expansion board
2022.07.31 サーマルプリンター番外編:通信筒
2022.09.03 l' art en circuit (回路でアート)


Interface 2022年12月号
◎実用レベルのデータ・サーバを個人で作れる時代 ☆特集 [AWS/ブロックチェーン/Docker]IoTデータ・サーバ入門
◎モニタリングはもちろん異常検知や画像認識,外部装置駆動まで!


日経Linux 2022年11月号
【特集1】「Ubuntu 22.04 LTS」リリースの今こそ! Windowsを捨てない!Linuxへの引っ越し術
【特集2】話題のChromeOS Flexなど8種を厳選! 軽量Linux TPO別 選択&活用術
【特集3】 Linuxで旧型PCを復活! ファンレスの静音・小型PC「Ubuntu Server 22.04 LTS」でオンラインストレージサーバー化
【特集4】 個人なら無料で使える! Red Hat Enterprise Linux 9を触ってみよう


トランジスタ技術 2022年11月号
★特集◎科学の魅力をとことん追求!計測,パワー応用技術 ☆実験サイエンス!超音波×エレキの世界


ラズパイマガジン2022年秋号
特集:5大人気ボード 電子工作超入門
「半導体不足で在庫が不足し、電子工作のボードがなかなか買えない…」。そんな今にふさわしい特集を企画しました。5種の人気ボードにすべて対応した電子工作の入門特集です。「GPIO」や「I2C」を使った電子パーツの制御方法は、どのボードでも同じです。手に入れられたボードを使って、今こそ電子工作を始めましょう。

地方で稼ぐ! ITエンジニアのすすめ
学歴、理系の知識、専門スキル……全部なくてもITエンジニアになれる! 地方でも高収入でやりがいをもって働ける!ITエンジニアの魅力を一挙大公開

ハッカーの学校 IoTハッキングの教科書
生活にとけこみ、家電機器を便利にするIoT技術。 Webカメラなど、便利の裏側に潜むセキュリティの危険性をハッキングで検証。 専門家がパケットキャプチャからハードウェアハッキングまで、その攻撃と防御を徹底解説。 本書は2018年7月に刊行された「ハッカーの学校IoTハッキングの教科書」に一部修正を加えた第2版です。

攻撃手法を学んで防御せよ! 押さえておくべきIoTハッキング
本書は、経済産業省から2021年4月にリリースされた、IoTセキュリティを対象とした『機器のサイバーセキュリティ確保のためのセキュリティ検証の手引き』の『別冊2 機器メーカに向けた脅威分析及びセキュリティ検証の解説書』をもとに、IoT機器の開発者や品質保証の担当者が、攻撃者の視点に立ってセキュリティ検証を実践するための手法を、事例とともに詳細に解説しました。

ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS… 全WEB媒体で効果バツグン! カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術

プログラマーは世界をどう見ているのか 西村博之著
イーロン・マスク(テスラ)、ジェフ・べゾス(Amazon)、ラリー・ペイジ(Google)…etc. 世界のトップはなぜプログラマーなのか?

Arduino Nano 33 IoT


サンハヤト モジュール MM-TXS01


ニーア オートマタ PLAY ARTS改 <ヨルハ 二号 B型 DX版> PVC製 塗装済み可動フィギュア
「NieR:Automata」より、ヨルハ二号B型こと2BがPLAY ARTS改に新たに登場! 高級感の感じられるコスチュームや髪の質感、洗練されたボディバランス、細かなデティールに至るまでこだわり抜かれた逸品。 DX版には通常版のラインナップに加え2Bの随行支援ユニット ポッド042などをはじめ“純白の美しい太刀"白の約定やエフェクトパーツ、自爆モードを再現できる換装用ボディパーツ、シーンに合わせて変えられる顔パーツ2種も付属する豪華な仕様に。 作中のあらゆるシーンを再現することが可能なファン必見の一品となっている。

DIPスイッチで動作電圧を3.3Vと5Vに切り替えられるUNO互換ボード
KEYESTUDIO Plus Board for Arduino UNO R3 with Type-C USB Cable, 3.3V 5V 1.5A Output Current, More Powerful Controller Board USB-シリアルチップ:CP2102 / 動作電圧:5Vまたは3.3V(DIPスイッチ制御)/ 外部電源:DC 6-15V(9V推奨)/ デジタルI / Oピン:14(D0〜D13)/ PWMチャネル:6(D3 D5 D6 D9 D10 D11)/ アナログ入力チャネル(ADC):8(A0-A7)/ DC出力機能の各I / Oポート:20 mA / 3.3Vポートの出力能力:50 mA / フラッシュメモリ:32 KB(うち0.5 KBはブートローダーによって使用されます)/ SRAM:2 KB(ATMEGA328P-AU)/ EEPROM:1 KB(ATMEGA328P-AU)/ クロック速度:16MHz / オンボードLEDピン:D13

Newtonライト2.0 ベイズ統計
ベイズ統計は,結果から原因を推定する統計学です。AIや医療などの幅広い分野で応用されています。その基礎となるのは18世紀に考えだされた「ベイズの定理」です。 この本では,ベイズ統計学のきほんをやさしく紹介していきます。

白光(HAKKO) ダイヤル式温度制御はんだ吸取器 ハンディタイプ FR301-81


サンハヤト TTW-203 テストワイヤ
ブレッドボードとスルーホール間の接続に便利なワイヤですブレッドボード用のオスピンと基板のスルーホール用のバネ性のある端子を組み合わせたテストワイヤです

無水エタノールP 500mlx2個パック(掃除)


ケイバ(KEIBA) マイクロニッパー MN-A04


熱収縮チューブφ1.5
印字無しで綺麗☆ シュリンクチューブ 絶縁チューブ 防水 高難燃性 収縮チューブ (2m, ブラック(黒))


サンハヤト SAD-101 ニューブレッドボード


白光(HAKKO) HEXSOL 巻はんだ 精密プリント基板用 150g FS402-02


【Amazon.co.jp限定】エーモン 電工ペンチ 全長約255mm (1452)


[Amazon限定ブランド]【指定第2類医薬品】PHARMA CHOICE 解熱鎮痛薬 解熱鎮痛錠IP 100錠


Copyright © 2011-2022 Sarako Tsukiyono All rights reserved®.