マイコン

XIAO nRF52840 のソフトウェアリセットとスリープ

リセット NVIC_SystemReset(); スリープ ウェイクアップ信号でリセットがかかることに注意。 (復帰ではない) バッテリー駆動でスリープ時にUSB接続してもリセットがかかる。 #define PIN_WAKEUP 7 // ウェイクアップピン pinMode(PIN_WAKEUP, INPUT_PULLUP_S…

XIAO nRF52840 のVBUS判定

Seeed Studio XIAO nRF52840 (以下、XIAO nRF) で、USBが接続されているか (VBUSが給電されているか) を判定する方法を調査した。 何がしたいか? XIAO nRFにはLiPoバッテリーを接続して給電/充電するパッドがある。USB接続されているときはマイコンにはUSB…

Seeed XIAO BLE nRF52840を試す

1. Seeed XIAO BLE nRF52840とは 2. Arduino開発環境 2.1 ボードの追加 2.2 ライブラリの追加 2.3 (捕捉) ボードとライブラリについて 3. Lチカ 3.1 オンボードのLED 3.2 NeoPixel 4. BLE 4.1 スケッチ 4.2 スマホで動作確認 5. 参考記事 1. Seeed XIAO BLE …

ArduinoでGPS

GPSモジュール 秋月でアンテナ付キットを購入。(2022/8/20現在、在庫切れ) GNSS(GPS・GLONASS・QZSS)受信機キット 1PPS出力 みちびき3機対応 アンテナセット付キット: 組立キット(モジュール) 秋月電子通商-電子部品・ネット通販 G…

メモ:ESP32(Arduino環境)のデバッグログ出力

ツール > Core Debug Level で出力を制御でき、printf()の書式が利用できる。 デフォルト(Core Debug Level が 「なし」のときはどれも出力されない) log_e() – Error (最低レベル) log_w() – Warn log_i() – Info log_d() – Debug log_v() – Verbose (最高…

メモ:IARのライセンス切り替え

ヘルプ > ライセンスマネージャ 製品リストから製品(IAR Embedded Workbench)をダブルクリック もし製品リストが表示されていなかったら、表示 > 製品リスト ライセンスの詳細で、選択されたライセンスをドロップダウンから選択してOK 製品リストで製品名の…

メモ:IAR EWARMで関数の最適化指定

#pragma で optimize の値を指定する。 none, low, medium, high, size, speed 等から指定する。 直後の関数にのみ影響する。 最適化レベルを下げる方向にのみ有効。(コンパイラオプションで指定した最適化レベルよりも高い場合は無視される。) size や spee…

Arduino IDE や IDE for GR のビルド出力先を固定する

Arduino IDE や IDE for GR のビルド出力先を固定したい場合、設定ファイル( preferences.txt )で build.path を指定する。 build.path=C:\tool\tempWindowsの場合、Arduino IDE の preferences.txt は下記のフォルダにある。 %LOCALAPPDATA%\Arduino15\ (通…

GR-ROSEのブートとプログラム書き込みの仕組み

この記事は がじぇるねGR Advent Calendar 2021 の18日目です。GR-ROSEのブートとプログラム書き込みの仕組みは、公式の資料がやや分かりにくかったので調査しました。 (ふつうに使うぶんにはほぼ必要ない知識です。)まず、起動時のシーケンスを概観すると下…

GR-ROSEで FreeRTOS vs Azure RTOS

この記事は がじぇるねGR Advent Calendar 2021 の14日目です。 GR-ROSEでは、FreeRTOSとAzure RTOSという2つのRTOSをお手軽に使うことができます。 この記事ではGR-ROSEでこの2つのRTOSを比較します。 FreeRTOSとAzure RTOSについて GR-ROSEでFreeRTOSとAzu…

Raspberry Pi PicoでPWM出力

ピン機能の設定 gpio_set_function()でピン機能をGPIO_FUNC_PWMに設定する。 RP2040には8つのPWMスライスがあり、各スライスにA/Bの2つのPWMチャンネルがある。 つまり最大8×2=16チャンネルのPWM出力が可能。 PWM周波数や分解能はスライスごとに設定できる。…

Raspberry Pi Picoの2つのArduinoサポートを比較

Raspberry Pi PicoはArduino環境で開発することもできる。Raspberry Pi Pico用のボードサポートパッケージはArduino公式版以外にフィルハワー伯爵版(?)なるものが存在するようだ。公式版はMbedの上にArduinoの皮かぶせたちょっとやっつけ仕事気味なかんじな…

UARTおじさんの帰還

※ この記事は極めて偏った超保守的思想で書かれています。BLEは新技術のツラをしてありがたいものとして出てきたわりには使うのに手間がかかるしそこまでありがたがるほどの技術でもないが、開発の引き合いが来ることがしばしばなので案件が発生し、そうこう…

ノート:ESP32(Arduino core)でWebサーバ&WebSocketサーバ

(1) Webサーバ (1.1) ライブラリのインクルードとオブジェクトの定義 Arduino core for the ESP32に含まれるライブラリを使用する。 ポート番号を指定してオブジェクトを定義する。 #include <WebServer.h> WebServer webServer(80); (1.2) 初期化 (setup()での処理) URL</webserver.h>…

PSoC Creatorの注意点あれこれ

PSoC Creatorで落とし穴を踏みまくったのでメモ。 (1) バージョン違いの共存 お仕事では開発環境を古いバージョンに合わせないといけない場合がある。PSoC Creatorは複数のバージョンをインストールして共存できる。デフォルトで、C:\Program Files (x86)\Cy…

メモ:デバッグプローブのピン配置

デバッグプローブのピン配置はだいたい各社共通になっているが、同じ20ピンのコネクタでもフルピッチの20ピンとハーフピッチの20ピンではピン配置が異なるので要注意。ケーブルを自作しやすいフルピッチ20ピンのピン配置(JTAGおよびSWD)は下図の通り。

IARのC-SPYマクロでSTM32マイコンのライトプロテクトを解除する

やりたいこと IAR EWARM環境でSTM32マイコンにプログラムをダウンロードするときに、STM32マイコンのライトプロテクトを自動的に解除する。 経緯 STM32マイコンの内蔵フラッシュメモリにはライトプロテクト機能があります。プロテクトがかかっていると、プロ…

IAR EWARMでバイナリファイルのダウンロード

基本的に、IAR EWARMでプログラムをFlashにダウンロードするには *.sim ファイルが必要となる。 デバッグ情報の無い生のバイナリファイル(*.bin)をEWARMでダウンロードすることはできない。 (例えばSTM32マイコンであればSTM32CubeProgrammerのようなツール…

IAR EW / I-jetのデバッガ設定の注意点 (リセットとWDT)

以前、SW4STM32 / ST-Link 環境でのデバッガのリセットモードの注意点について書いた。 同様のことが、IAR EW / I-jet 環境でもあったので、メモ。問題となるのは、マイコンとI-jetとの信号接続がSWCLK と SWDIO だけで RESETが接続されていない場合。WDTを…

STM32F031のF0,F1の罠

STM32F031のF0,F1ピンは外部クロックのピン(OSC_IN, OSC_OUT)を兼ねている。この切り替えはRCCレジスタのHSEONビットでおこなわれる。リセット値は 0 すなわち外部クロック無効なので、デフォルトではGPIOとして使える。…のだが、環境によっては、main関数よ…

Arduino/がじぇるね用お役立ちライブラリ

Arduino/がじぇるね用のお役立ちライブラリをいろいろ作りました。 GR-CITRUS用ロータリーエンコーダライブラリ (位相計数) GitHub - lipoyang/RotaryEncoder: Rotary Encoder Library for GR-CITRUS GR-CITRUS/GR-ROSE用パルス幅計測ライブラリ GitHub - li…

RX65Nマイコンの割り込みベクタについて

RX65Nマイコンには「選択型割り込み」という仕組みがあり、一つの割り込みベクタに複数の割り込み要因が割り当てられているものがある。MTU割り込みなどがこれに割り当たっている。これは従来のRX63Nなどにはなかった仕組みであり、割り込み要因の数が増えす…

GR-CITRUSのMTU/TPU機能ピン

GR-CITRUSはピン数の少ないボードに機能を詰め込むため、1つのピンがRXマイコンの複数のピンに接続されていることがある。またDAC出力の9番ピンおよびADC入力のA0~A3ピンは、ジャンパJ1~J5をショートすることでRXマイコンの他のピンにも接続される。(アナ…

GR-SAKURA/GR-CITRUSのタイマリソース

GR-SAKURAおよびGR-CITRUSのArduinoライブラリで使用されるタイマリソースについてまとめる。Arduino環境でRXマイコンのタイマリソースを直接使用する場合、Arduinoライブラリとの競合に注意する。GR-ROSEについてはこちら ↓ GR-ROSEのタイマリソース - 滴了…

MCUXpressoでUART printfの改善

前回の記事でUARTでのprintfの速度は実装しだいと書いた。UARTの送信をブロッキング処理でおこなうと相応の時間を要するが、バッファにためて割り込みやDMAで送信すればprintf関数の処理時間を短くすることができる。ただし、当然ながら通信のスループットは…

ARMで4種類のprintfデバッグ方式まとめ

これまで4回にわたってARMマイコンでデバッグプローブにprintf出力する方法を説明した。 LPCXpressoでセミホスティング - 滴了庵日録 LPCXpressoでITM printf - 滴了庵日録 MCUXpressoでRTT printf (その1) - 滴了庵日録 MCUXpressoでRTT printf (その2) - …

MCUXpressoでRTT printf (その2)

前回はMCUXpressoでRTTを使用する方法を説明した。今回はprintf等の標準入出力関数をRTTにリダイレクトする方法を説明する。前回の内容の準備を前提とする。 MCU Xpressoで標準入出力をRTTにリダイレクトする設定 (1) 標準入出力をUARTへリダイレクトしない …

MCUXpressoでRTT printf (その1)

前々回と前回でセミホスティングによるprintfとITM printfについて説明した。 LPCXpressoでセミホスティング - 滴了庵日録 LPCXpressoでITM printf - 滴了庵日録 今回はITM printfよりもさらに高速なRTT printfについて説明する。 RTT printfとは? RTT(Real…

LPCXpressoでITM printf

前回(LPCXpressoでセミホスティング - 滴了庵日録)はセミホスティングによるprintfデバッグについて説明した。しかしセミホスティングは速度がものすごく遅く、またデバッガを接続していないときにはprintf関数でスタックしてしまうという問題があった。そこ…

LPCXpressoでセミホスティング

セミホスティングとは? ARMマイコンでprintfデバッグをする場合、デバッグ用UART等に出力するのではなくデバッガのコンソールに出力する仕組み。標準出力だけでなく標準入力にも対応する。ターゲットにデバッグ用UARTが無い場合や、ソフトウェアを用意でき…