マイコン

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が無い場合や、ソフトウェアを用意でき…

いまさらLPC-Link2について

LPC-Link2について LPC-Link2は、ファームウェアを書き換えることでCMSIS-DAP / J-Link / Redlink の3種類のデバッグプローブになれるボードです。LPC4370マイコンボードとしても使えます。J-linkとして用いる場合、ターゲットのデバイスはNXP社のマイコンに…

メモ:LPC18xxマイコンのデバッグモード、ブートモード

デバッグモード DBGENピンがHIGHのときSWDモード、LOWのときJTAGモード。 DBGENピンは内部で50kΩでプルアップされている。 ブートモード (内蔵Flashを持つ型番の場合) 通常は内蔵Flashからブートする。 UART, NOR Flash, SPI Flash, Quad SPI Flash, USBから…

LPCマイコン各種のIO設定について

LPCマイコンはローエンドからハイエンドまで規模がさまざまなので、基本的なIO設定もファミリによって微妙に異なる。以下、簡単にメモ。※ すでにLPC8xxとLPC55xx以外はNXPの主流ラインナップから外れており、LPCXpressoのような安価なボードも入手性が悪くな…

メモ:LPCXpressoでハードフォールトしたとき

LPCXpressoでハードフォールトが発生すると、HardFault_Handler()に飛ぶ。どこでフォールトが発生したかは、「Registers」で「faults」のところを見ると分かる。「Fault PC」にフォールト発生箇所のソースと関数名が示される。 エラー要因は「Faults」に示さ…

今さらLPCXpressoメモ (3)

割り込み禁止 __disable_irq(); // 割り込み禁止 __enable_irq(); // 割り込み許可 リセット NVIC_SystemReset();

メモ:LPC18xxマイコンのタイマ類

LPC18xxマイコンにはいろんな種類のタイマがあって分かりにくいので簡単にメモ。 名前 説明 System Tick Timer ARMコアが持ってるタイマ。システムタイマとして使うやつ Timer 汎用のタイマ。タイマ割込みとか時間カウントとかに使うやつ Repetitive Interru…

MCC(MPLAB Code Configurator)の使い方

MCC(MPLAB Code Configurator)は、MPLABに無理やり統合されたUIのため、使い方がすこぶる分かりにくい。「MPLAB Code Configurator v3.xx ユーザガイド」をよく読むこと。ここでは要点をメモする。 MCCの起動 MPLABのツールバーのMCCボタンを押す。MCCが起動…

メモ: M5Stack ATOM Matrix を Arduino で使う

クイックスタートにしたがって環境を設定する。以下、ポイントをメモする。 ライブラリマネージャで M5Atom と FastLED を追加 ボードは ESP32 Pico Kit を選択 Upload Speed を 115200 に落とす

PSoC6でFatFs

やりたいこと PSoC6でSPI接続でSDカードにアクセスしたい。 経緯 PSoC3 や PSoC5 には emFile というコンポーネントが用意されています。emFile は、SDカードのSPIモードI/FとFATファイルシステムをカプセル化した便利なコンポーネントです。しかし、PSoC6 …

メモ: PSoC6のUART

PSoC6のUARTは、送受信各128バイトものFIFOを持っています。 つまり、128バイト以下のコマンドの対話型通信であれば割り込みもDMAも要らないということです。 参照 「PSoC 6 MCU: CY8C63x6, CY8C63x7 Architecture Technical Reference Manual」より

PIC24FでUARTのDMA転送

やりたいこと PIC24FでUARTの送受信をDMA転送をします。開発環境はMPLABで、MCC (MPLAB Code Configurator) によるコード生成を用います。 MCCでUARTの設定 まず、MCCでUARTの設定します。MCCはUIがゴチャゴチャして分かりにくいツールなので、大きいモニタ…

メモ:ESP32のOTA

ESP32でOTA(Over The Air)、つまり無線経由のプログラム書き込みは下記の記事が詳しい。lang-ship.comそもそもOTAの動機としては大きく二通りがある。 開発時のプログラム書き込みの便宜のため 運用時のプログラム更新の便宜のため 1.の目的に適しているのが…

PSoC Creatorの .gitignore

*.cywrk.* *.cydsn/codegentemp/ *.cydsn/CortexM0p/ *.cydsn/CortexM3/ *.cydsn/CortexM4/ *.cydsn/Export/ *.cydsn/Generated_Source/ *.cydsn/*.cyprj.* *.cydsn/*.cycdx *.cydsn/*.cyfit *.cydsn/*.rpt *.cydsn/*.svd *.cydsn/*_datasheet.pdf *.cydsn/*…

Mbed OS 5を静的ライブラリとしてビルドする

やりたいこと 背景 開発環境 Mbed OS 5用プロジェクトの作成 Mbed OS 5の静的ライブラリをビルド ユーザープログラムのプロジェクトを作成 ユーザープログラムをビルド 【2020/05/21 追記】 本記事の手順で作成したMbed OS 5の静的ライブラリを使用すると正…

__wrap__free_rが無いと言われたら

MbedのプロジェクトをGCC環境にエクスポートしてビルドすると、リンクの段階で下記のようなエラーが発生する場合があります。(どういう場合に発生するのか不明。) undefined reference to `__wrap__free_r' undefined reference to `__wrap__malloc_r' undef…

PSoC CreatorでPDLが無いと言われたら

PSoC Creatorをアップデートした場合(?)に、下記のようなエラーが出ることがあります。PDLとは「Peripheral Driver Library」で、PDL v2はFM0+やFM4に、PDL v3はPSoC6に対応しています。(PSoC4やPSoC5はそんなライブラリ要らないってこと?)PDLは C:\Progra…

SW4STM32での謎の不具合

Windows版のSW4STM32でデバッグを実行しようとすると、「OpenOCD Binary not found」というエラーが発生した。いろいろ試行錯誤したところ、デバッグの構成で「OpenOCD Command」の指定に拡張子「.exe」を付ければ解決した。「.exe」が無いとエラーが発生。 …

メモ:追加のボードマネージャのURL

Arduino IDEでサードパーティー製ボードのパッケージをインストールするためのボードマネージャのURLをメモ。ESP32 https://dl.espressif.com/dl/package_esp32_index.json ESP8266 https://arduino.esp8266.com/stable/package_esp8266com_index.json chipK…

メモ:Eclipse CDTでMakefile生成を抑制

Eclipse CDT系のマイコン開発環境であるSW4STM32でMbed OS5のプロジェクトをビルドすると、毎回Makefileの生成が行われ数分を要するということがある。Mbed OS5のソースファイル数が膨大なためである。このMakefile生成を次回から省略するには、プロジェクト…