マイコン

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

いまさら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.の目的に適しているのが…