その4
ElekinoCanDo/Stdはお蔵入りかと思ったのですが、悪あがきをしています。
コマンドとしては、最低限メモリー書き込みと確認だけあればいいので、その他のコマンドは思い切って削除することにしました。
コマンドを1つずつ削除すると、プログラムサイズが小さくなって行きますが、適当に削除しているので、必要な動作に影響する部分を削除しているかもしれません。
そこで「びんぼうでいいの」でテスト環境を構築して、動作の確認をしながら不要コマンドを削除するこにしました。
Pコマンド以外のコマンドと、メモリー内容確認コマンドのP4以降(なぜかP5までしか実装されていないようです)を削除した時点で目標達成です。
--
スケッチが プログラムストレージ領域の 15,978バイト (49%) を使用しています。最大は 32,256バイト です。
--
コマンドの削除は void command_mode () 内の削除したいコマンドのcase文をbreak文までコメント化すればいいようです。
--
// case 12: // A - Iambic mode
中略
// break;
--
ATmega328Pの「びんぼうでいいの」では、メモリー書き込み、再生、送信は動作しています。
ボードをATmega168P/Int.4MHzに変更してコンパイルした結果は、なぜか4バイト小さくなりました。
--
スケッチが プログラムストレージ領域の 15,974バイト (97%) を使用しています。最大は 16,384バイト です。
--
あとは実機でのテストです。
---------------------------------------------------------------------------------------
追記です。
実機でのテストはOKで、ブログ用の撮影も終わったのですが、スリープしません。
そういえば、テストのためにスリープ機能を入れていないのを忘れていました。
スリープ機能を入れたら124バイトオーバーしています。
--
スケッチが プログラムストレージ領域の 16,508バイト (100%) を使用しています。最大は 16,384バイト です
--
もう少しダイエットに励みます。
---------------------------------------------------------------------------------------
追記です。
メモリ リピート機能を削除して、ギリギリですが押し込みました。
送信機系統切替機能も不要なので削除したかったのですが、どこを削除するか分かりませんでした。
送信機系統2は無効にしてありますので、送信機系統は1のママです。
--
スケッチが プログラムストレージ領域の 16,374バイト (99%) を使用しています。最大は 16,384バイト です。
--
使用率は99.93%でATmega168Pの容量をほぼつかいきりました。
というわけで紆余曲折しましたが、ElekinoCanDo/Stdは封印から覚めることができました。
中身です。
送信回路の確認ができるように、パドル側のコネクタに送信確認用のLEDを付けました。
LEDの電源はElekinoCanDo/Stdから拝借しています。半田付けはせず、抵抗の足のテンションで5V端子に接続しています。
ElekinoCanDo/Stdはお蔵入りかと思ったのですが、悪あがきをしています。
コマンドとしては、最低限メモリー書き込みと確認だけあればいいので、その他のコマンドは思い切って削除することにしました。
コマンドを1つずつ削除すると、プログラムサイズが小さくなって行きますが、適当に削除しているので、必要な動作に影響する部分を削除しているかもしれません。
そこで「びんぼうでいいの」でテスト環境を構築して、動作の確認をしながら不要コマンドを削除するこにしました。
Pコマンド以外のコマンドと、メモリー内容確認コマンドのP4以降(なぜかP5までしか実装されていないようです)を削除した時点で目標達成です。
--
スケッチが プログラムストレージ領域の 15,978バイト (49%) を使用しています。最大は 32,256バイト です。
--
コマンドの削除は void command_mode () 内の削除したいコマンドのcase文をbreak文までコメント化すればいいようです。
--
// case 12: // A - Iambic mode
中略
// break;
--
ATmega328Pの「びんぼうでいいの」では、メモリー書き込み、再生、送信は動作しています。
ボードをATmega168P/Int.4MHzに変更してコンパイルした結果は、なぜか4バイト小さくなりました。
--
スケッチが プログラムストレージ領域の 15,974バイト (97%) を使用しています。最大は 16,384バイト です。
--
あとは実機でのテストです。
---------------------------------------------------------------------------------------
追記です。
実機でのテストはOKで、ブログ用の撮影も終わったのですが、スリープしません。
そういえば、テストのためにスリープ機能を入れていないのを忘れていました。
スリープ機能を入れたら124バイトオーバーしています。
--
スケッチが プログラムストレージ領域の 16,508バイト (100%) を使用しています。最大は 16,384バイト です
--
もう少しダイエットに励みます。
---------------------------------------------------------------------------------------
追記です。
メモリ リピート機能を削除して、ギリギリですが押し込みました。
送信機系統切替機能も不要なので削除したかったのですが、どこを削除するか分かりませんでした。
送信機系統2は無効にしてありますので、送信機系統は1のママです。
--
スケッチが プログラムストレージ領域の 16,374バイト (99%) を使用しています。最大は 16,384バイト です。
--
使用率は99.93%でATmega168Pの容量をほぼつかいきりました。
というわけで紆余曲折しましたが、ElekinoCanDo/Stdは封印から覚めることができました。
中身です。
送信回路の確認ができるように、パドル側のコネクタに送信確認用のLEDを付けました。
LEDの電源はElekinoCanDo/Stdから拝借しています。半田付けはせず、抵抗の足のテンションで5V端子に接続しています。
関数 void switch_to_tx(byte tx)
ですが、すでにある程度はオプチマイズ済(この関数は無用と判断)かも知れません。
関連で、ボタン長押しを感知している部分は、
void check_command_buttons() 内で、
// we got a button hold
...
...
// if no paddle was hit, this was a button hold to change transmitters
のあたりを探ってみてください。ここは人間がオプチマイズできるかも..。
送信機系統切替の情報ありがとうございました。
少し解析してみます。
相変わらず難解ですが、何度も眺めていると少し分かってきたような気がします。
また、ElekinoCanDoワード単位編集機能版のTmega168P化も目処が付いたので、進めています。