🐙
Arduino(6) メモリ不足対応
はじめに
実装を進めていくと、コンパイルした後に「動作が不安定になります」といった文言が表示されるようになり、実際正しく動作しなくなってました。この対応を考えます。
どうしたかというと
SD対応の為に、SD.h/SPI.hインクルードするだけで、グローバル変数のバイト数がものすごく大きくなります。ArduinoUnoは仕様を見ると、SRAMが2kバイトらしく、警告で出ているバイト数と割合的に合うので、グローバル変数のこのSRAMで保持されて、最大2kバイトって事の様です。これを回避するには、SRAMを増やすしかないか。
Arduinoには仕様の違うMegaがある様で、以下違い。
Uno | Mega | |
---|---|---|
フラッシュメモリ | 32KB | 256KB |
SRAM | 2KB | 8KB |
デジタルI/Oピン | 14本 | 54本 |
アナログ入力ピン | 6本 | 16本 |
クロック速度 | 16MHz | 16MHz |
これですね、Megaを使用しましょう。 | ||
左がMegaです。右は今まで使用してたUno |
なんとUnoとはピンコンパチなので、Ethernetシールドもそのまま使用できます。
Megaでコンパイルすると、今までの赤字の警告は消えて、
グローバル変数の使用率も21[%]に改善されました。技術的には何の面白味も無いですが、解決とします。
残件
次は、ようやく赤い警告も無くなったので、憂いなくソースを合体させて動作確認を実施してきます。
Discussion