中華な安定化電源 Wanptek NPS3010W

中国製の廉価な安定化電源買いました。 (今までケンウッドの中古を使ってたのですが壊れたので買い替え。) WanptekというメーカーのNPS3010Wという製品です。 30V/10A のスイッチング電源で、サイズは7×13×23cm、1.3Kgです。 アマゾンで7199円。アマゾン発送…

高速逆平方根(fast inverse square root)のアルゴリズム解説

高速逆平方根とは? C言語のコード 検証 アルゴリズムの要点 [1] 逆平方根の計算を対数・指数の計算に置き換える [2] 浮動小数点型の内部表現を利用した対数・指数の近似計算 [2.1] 対数の近似 [2.2] σの最適値 [2.3] 整数型での解釈 [2.4] 逆平方根の計算と…

2^x と log2(x) の高速な近似計算

C言語のfloat型のバイナリ表現形式に着目すると、2^x と log2(x) の近似値を高速に計算できます。 float型のバイナリ表現形式 float型は32ビットで、仮数部が23ビット(ケチ表現)、指数部が8ビット、MSBが符号ビットです。⇒ 単精度浮動小数点数 - Wikipediaこ…

DF11コネクタ

ヒロセのDF11コネクタは、2mmピッチ2列型のコネクタであり、基板対ケーブル、ケーブル対ケーブル、基板対基板のいずれにも対応できるのが特長です。ただ、部品のバリエーションが多いために少し分かりにくいので以下にまとめました。 コネクタのバリエーショ…

STM32F031のF0,F1の罠

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

12月のまとめ

進捗 技術書典10(オンライン)の原稿執筆 Arduino系小物ライブラリの開発 3Dプリンタの導入 イベント等 12/6 第二回 GR-ROSEもくもく会 オンライン(RMO) - connpass 12/19 第66回 本町デジもく会 12/26~ 技術書典10 GitHub公開 github.com github.com 同人…

三相インバータの黒魔術

DC電源と6つのスイッチング素子からなる三相インバータでACモータを駆動することを考える。下図上段のような単純な120°位相ずれの正弦波の相電圧(ただし実際にはPWM変調)をインバータが出力すると、モータのコイルにかかる線間電圧は下段のようになる。DC電…

Z変換から導いた漸化式で正弦波を高速に生成

マイコンで三角関数を計算するのは重い処理ですが、次の漸化式を用いると離散正弦波の数列を高速に生成することができます。漸化式なので生成を繰り返すと誤差が蓄積することに注意。 離散正弦波の数列 x(n) は 正弦波の周波数を f 、サンプリング周波数を k…

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

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

RS-422とRS-485

RS-422とRS-485の規格の本質的な差は、ドライバ(送信器)が電気的に常時出力かトライステート出力かである。ドライバが常時出力であるRS-422では、ドライバどうしを結線することは許されない。そのため1本のバスは必ず片方向通信になる。これに対し、ドライバ…

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

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

11月まとめ

進捗 GR-CITRUS用ライブラリ開発 (ロータリーエンコーダ計測) GR-ROSE用ライブラリ開発 (パルス幅計測、ESP8266ファーム書き換え、INIファイル読み書き) 技術書典10(オンライン)の原稿執筆 ガンプラ製作 (せんとくんガンダム) イベント等 11/7 第一回 GR-ROS…

e2studioでmakeが見つかりません

e2studioにプロジェクトをインポートしてビルドしようとしたとき、「Program "make" not found in PATH」あるいは「PATH でプログラム "make" が見つかりません」というエラーが発生する場合がある。「[ERROR] No toolchain set or toolchain not integrated…

GR-ROSEのタイマリソース

GR-ROSEのArduinoライブラリで使用されるタイマリソースについてまとめる。Arduino環境でRXマイコンのタイマリソースを直接使用する場合、Arduinoライブラリとの競合に注意する。またGR-ROSEのArduinoライブラリはFreeRTOS上で動作していることにも要注意。G…

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…

10月のまとめ

進捗 今月はお休み イベント等 10/24 第64回 本町デジもく会 動画 所感 今月も体調がよくなかったので一回休み

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のような安価なボードも入手性が悪くな…

9月のまとめ

進捗 今月はお休み イベント等 9/12~9/22 技術書典9 ONLINE 8/22 第62回 本町デジもく会 同人誌 techbookfest.org 動画 所感 今月は体調がよくなかったので一回休み

新しいMS IMEのカスタマイズ

以前、MS IMEで[無変換]/[変換]キーの機能をカスタマイズする方法を書いた。lipoyang.hatenablog.comところが、May 2020 Updateの新しいMS IMEでは設定がかなりシンプルなUIに変更されている。従来の「プロパティ」にかわって、新しいMS IMEでは「設定」とい…

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

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

I2CのEEPROMの容量とアドレス指定

I2C接続のEEPROMは、容量によって下記3つに分かれメモリアドレスの指定方法に違いがある。 16kビット(2kバイト) 以下 32kビット(4kバイト) ~ 512kビット(64kバイト) 1Mビット(128kバイト) 以上 16kビット(2kバイト) 以下 このクラスのものは、メモリアドレ…