2024/01/12(金)Arduinoボード 3品種のLDO駆動能力
搭載LDOの最大電流は下記の通り、自作の回路やシールド基板では1割程度余裕を見ておいたほうが良いと思う。
ボード | 搭載LDO | 最大電流 |
---|---|---|
Arduino UNO R3 | LP2985-33DBVR | 150mA |
Arduino Uno R4 Minima | マイコン内蔵LDO | 100mA |
Arduino Nano Every | AP2112K-3.3 | 600mA |
がっつり3.3Vが必要な場合はVINから自前でDCDCで作るのが順当。
2023/08/21(月)Arduino Nano Everyの挙動
Arduino Nano Everyになってから、UNO R3と違ってタイマ/カウンタが盛りだくさんになった。
その挙動を調べていて使ってるところ使ってないところなどの確認。
とりあえず起動時のTCA0周りを一覧
TCA0.SINGLE.INTCTRL = 0b0 TCA0.SINGLE.CTRLA = 0b1011 TCA0.SINGLE.CTRLB = 0b11 TCA0.SINGLE.CTRLC = 0b0 TCA0.SINGLE.CTRLD = 0b0 TCA0.SINGLE.CTRLECLR = 0b0 TCA0.SINGLE.CTRLESET = 0b0 TCA0.SINGLE.CTRLFCLR = 0b0 TCA0.SINGLE.CTRLFSET = 0b0 TCA0.SINGLE.EVCTRL = 0b0 TCA0.SINGLE.INTCTRL = 0b0 TCA0.SINGLE.PER = 255 TCA0.SINGLE.CMP0 = 128 TCA0.SINGLE.CMP1 = 128 TCA0.SINGLE.CMP2 = 128TCA0.SINGLE.CTRLCなのですが、起動時は0b0だがtone()実行中は0b111になっています。
比較一致(Compare) CMP2OV CMP1OV CMP0OV 出力ですね。なぜ全部?
あと、この記事がすごく役立ちました。
@CoTechWorks さん
Arduino Nano Everyのタイマー割り込み機能について
この記事を参考に進めています。
2022/08/20(土)Nordic SoftDevice S132 v17.1.0にSerializeFWでアクセス
NordicはSerialization FWというのを提供しており、これはSoftDeviceと一緒に書き込むことでそのチップはBLEモジュールとして扱い(Connectivity Chipと言う)ホストMCU側(Application Chipと言う)からUARTを通してすべて操作できるというものです。
となると、UART通信仕様が必要になりますし通信フォーマットが知りたいのですが、なんとこの情報がまともに掲載されていません。v11.0.0のバージョンに無くはないのですが
https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v11.0.0%2Fble_serialization_s130_functions.ble_serialization_s130_functions
命令バイトとなるopcodeがv17系と違っていてバージョン違いで平気で仕様を変えてきます。(なんなんですかこれ…。)
調べているなかで本家のコミュニティのDevZoneに同じ悩みの人がいたのですが、誰も知らないみたいなまともな回答がなくもうなんだか…。(なんなんですかこれ…。2回目)
SDKの中を覗いてみると
nRF5_SDK_17.1.0_ddde560\components\serializationというのがあって、どうやらMCU側はこのライブラリを使って「よろしく動かしましょう。通信プロトコルやパケットフォーマットは気にしなくてよいです。」ということが言いたそうな空気を感じました。
でも自分は、生の通信を見ながらある程度の動きを把握したいので、解析を頑張りました。
- TX_RAW_PACKET = [TX_HEADER][TX_PAYLOAD] の構成
[TX_PAYLOAD]の1byte目は、0x00がMCU→BLEで0x01がMCU←BLEの方向、UARTの場合TX,RXで分かれているので各デバイスからは固定で送出されますね
2byte目はcommand code(opcode)、これがバージョンによって変わる。変わるなよ。例えばv17でsd_ble_version_get = 0x65ですが、v11ではsd_ble_version_get = 0x66です。
3byte目以降はopecodeによります。
*** sd_ble_version_get --> 03 00 00 65 00 <-- 06 00 01 65 10 00 00 00
上記を送るとこんな感じで帰ってきます。10 00 00 00が返信内容でBLEからは4byteが標準的に返ってきます。あとは命令によって様々。
まずは基本はこんな通信みたいです。
肝心のv17.1.0のopcodeですが
\nRF5_SDK_17.1.0_ddde560\components\serialization\common\ser_dbg_sd_str.cの中にありました。どうやらこれが一覧っぽいです。
S132 v17.1.0 static const char * sd_functions[] = { /* 0x60 offset */ "SD_BLE_ENABLE", /*0x60*/ "SD_BLE_EVT_GET", /*0x61*/ "SD_BLE_UUID_VS_ADD", /*0x62*/ "SD_BLE_UUID_DECODE", /*0x63*/ "SD_BLE_UUID_ENCODE", /*0x64*/ "SD_BLE_VERSION_GET", /*0x65*/ "SD_BLE_USER_MEM_REPLY", /*0x66*/ "SD_BLE_OPT_SET", /*0x67*/ "SD_BLE_OPT_GET", /*0x68*/ "SD_BLE_CFG_SET", /*0x69*/ "SD_BLE_UUID_VS_REMOVE", /*0x6A*/ "SD_UNKNOWN", /*0x6B*/ ...抜粋。
全然まとまらない。もう自分用備忘録ということで。
あと、UARTは、速度1Mですが、みんな115200に変更して書き込んでいる模様。
それと、パリティありって、Odd/Evenどっちなのか不明確でしたが、Evenのようです。RTS/CTSも標準で必要。
Arduino風に書くならSERIAL_8E1 | SERIAL_RTSCTSです。
【訂正・追記】2022/8/21
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ライセンスとしました。】