Digispark(3) <RAMが一番大事>
DigisparkはATtiny85を使っていて、bootloaderが2k使っているので、スケッチは6k使える。はずだが、3k以上書けなかった。(Digispark(2) 2016/9/5)
GitHubにDigispark用のArduinoIDEがある。(https://github.com/digistump/DigistumpArduino/releases/)
これは Digispark用ライブラリインストール済のArduinoIDE ver1.6.7だ。
このIDEを使っていたのだが、ArduinoIDEの最新版(1.6.11)に変えて、Digispark用ライブラリを手動でインストールしてみた。
コンパイル終了時のメッセージを見ていて気が付いた。ArduinoIDE 1.6.11はRAMの使用量をレポートしてくれる。
最大6,012バイトのフラッシュメモリのうち、スケッチが4,360バイト(72%)を使っています。
グローバル変数は980バイトのRAMを使用しています。
ATtiny85のRAMは512byteしかないはず。
DigisparkはArduinoIDEを使っているので最後にavr-gccでコンパイルされる。
DigiKeyboard.println("hello, world");
と書くと文字列 "hello, world" は、CODE領域つまりフラッシュメモリに配置されると思うが、初期化済データとしてRAMに配置される。って「avr-gcc constをプログラム・メモリに配置(2013/02/08)」で書いてる。(^^ゞ
文字定数をフラッシュメモリに配置するにはF()マクロを使うとよい。
DigiKeyboard.println(F("hello, world"));
文字定数をフラッシュ・メモリに配置するように書き換えてコンパイルすると、
最大6,012バイトのフラッシュメモリのうち、スケッチが4,330バイト(72%)を使っています。
グローバル変数は96バイトのRAMを使用しています。
RAMの使用量は512byte以下に収まった。
ATtiny85はRAMが512byteしかないので、RAMの使用量を増やさないようなプログラミングが必要だ。簡単にUSBデバイスがつくれるのだけれど、初心者向きではないのかも。
F()マクロは include/avr/pgmspace.hではなく、hardware/arduino/avr/cores/arduino/WString.hで定義されている。
- Digispark(2) 2016/09/05
- Digispark(1) 2016/09/03
- Digispark(3) <RAMが一番大事> 12019/09/19
« 2段飛ばしの研修 <せめてスタート位置に> | トップページ | なぜイマドキ社員は定時で即帰ってしまうのか »
「AVR」カテゴリの記事
- Google日本語モールス入力(2020.05.01)
- Digispark(3) <RAMが一番大事>(2016.09.19)
- Digispark(2) <ATtiny85+V-USB+Arduino>(2016.09.05)
- Digispark (1)(2016.09.03)
- Atmel買収 <AVRは無くなるのか>(2016.03.01)
「プログラミング」カテゴリの記事
- GMC-4で動く3連ナイトライダー(2022.12.30)
- プログラミング言語ランキング(2022.11.19)
- AWSでサービス構築(2022.05.29)
- Excelの配列式(2022.01.06)
- ローコード・プログラミング(2021.11.07)
コメント