2021/10/01(金)VSCodeでArduino開発するときのメモリ使用量の確認
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-size" -A "R:\\/test.ino.elf" 最大32256バイトのフラッシュメモリのうち、スケッチが20776バイト(64%)を使っています。 最大2048バイトのRAMのうち、グローバル変数が896バイト(43%)を使っていて、ローカル変数で1152バイト使うことができます。そこで、VSCodeのtask.jsonを書いて同等の情報出力をファイルに出すようにした。手順は以下の通り。
- Ctrl+Shift+Pでコマンドパレットを開く
- コマンドパレットに"task"と打ったら「タスクの構成を開く」とあるのでそれを選択
- 次に「テンプレートからtask.jsonを生成」とあるのでそれを選択
- そして「Others」を選択するとtask.jsonファイルが生成される
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "メモリ状況", "type": "shell", "presentation": {"echo": true}, "command": "C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr\\bin\\avr-size.exe", "args": [">", "memory.txt", "-C", "--mcu=atmega328p", "R:\\test.ino.elf"] } ] }なお、ドライブレターやパス、ターゲットelfファイル名などすべてハードコーディングしているので適宜変更が必要。まずは動くことを重視した。task.jsonを保存したらメニューからターミナル->タスクの実行を選択すると「メモリ状況」という項目が増えているのでそれを選択して「タスクの出力をスキャンせずに続行」で実行する。
するとmemory.txtにFlashとSRAMの使用量が出力される。この処理はコンパイル直後に行う。
2020/11/19(木)8x8ドット キャラクターコード フォント
本当は.hファイルにしてマイコンプログラミングで扱いやすくしてGithubにでも上げたらいいんですが、エクセル方眼紙で作ったやつをとりあえずそのまま置きます。(備忘録)
それでもなるべくソースコードにコピペしやすいように、16進数表記になった文字列のセルを作っています。
ダウンロード:8x8_dot_font.zip
【使用、複写、変更など自由にできるようにMITライセンスとしました。】
2020/11/18(水)秋月電子 AE-ATMEGA-UNO-R3
値段は1940円、本家が2940円で売られていますからかなり安いですね。
パッケージは本家と違って簡易包装でした。本体とシリカゲルのみ。
シルクなど見た目を除き裏面も特に本家と変わりなし、USBコネクタのショート半田修正とコテで引きずったあとがある以外は気になるところはありません。DCジャック部分の大きなPADのところで確認してわかる通り鉛フリー半田です。
実物は明らかですが、本家は洗浄していますがこちらは無洗浄仕上げ。テカり具合がわかるショット。
ピンソケットのフラックス残渣からスプレーフラクサーを通していることがわかります。
USBシリアル部には同様にATMEGA16U2が搭載されています。互換ボードであればFTDI系やCP2102、中華系チップならCH340あたりが載ってそうですがUSBデバイスとしてどのように認識するのか気になります。
結果、Arduino IDEでは本家と同じ認識。USBデバイスも「Arduino UNO」と認識されています。ちなみに、VID=2341は"Arduino SA"でPID=0043は"Uno R3 (CDC ACM)"です。結論としては互換ボードではなくクローン製品のようです。
互換品を買うならamazonでとにかく安いのが売られていますね。
VKLSVAN UNO R3コントロールボード ATmega328P Arduinoと互換性 + USBケーブル
2017/09/14(木)Arduino optibootのmakeが通らないのを直した(10MHz版を作りたかった)
まずは、ラズパイにArduinoIDEをインストール
sudo apt-get install arduinoこれだけ、これが終わればGUI環境の「プログラミング」に「Arduino IDE」が追加されているはず。起動できればOK、そして次にoptibootは、
cd /usr/share/arduino/hardware/arduino/bootloaders/optibootここにある。ここで
sudo nano Makefileしてatmega328の16000000Lを10000000Lに書き換えただけ、書き換えた場所は2箇所、ほんとにいけるかわかんない、これから試す。
それで書き換えたMakefileを保存したら、
sudo bash omakeでいけるはずがなにやらエラーが出る。ここで躓いていたのだがこれコンパイラ(?)に廃止されたオプションを渡していたかららしい。
Doesn't compile with gcc4.7 or gcc4.8
ここを参考にして
OPTIMIZE = -Os -fno-inline-small-functions -fno-split-wide-types -mshort-callsを
OPTIMIZE = -Os -fno-inline-small-functions -fno-split-wide-types -mrelaxに変更する。あとはもう一度
sudo bash omakeすれば出来上がり。
2016/11/23(水)ArduinoのI2C
I2C使うときはTWIライブラリも標準で持ってて(Wire.h)かなり便利なのだが、これI2Cのクロック速度はいくらなんだろう、と。検索ではいまいちパッと出てこなかったのらライブラリの中身を直接確認した。中身はtwi.cとtwi.hで.cのほうに記載されてた。
TWBR = ((F_CPU / TWI_FREQ) - 16) / 2; /* twi bit rate formula from atmega128 manual pg 204 SCL Frequency = CPU Clock Frequency / (16 + (2 * TWBR)) note: TWBR should be 10 or higher for master mode It is 72 for a 16mhz Wiring board with 100kHz TWI */(Arduino IDE1.6.12より)
atmega128とあるけどatmega328pも同様のはずで、これだとArduino UNO 16MHz標準で100kHzということらしい。もう少し早い400kHzで使いたいところだから、そういうときはコード内のどこかでレジスタ直接いじればいけそうかな。
ともあれここに書いてるよってことの備忘録。