2025-05-16 04:58:56 undefined reference to __assert_func の対処法(ch32fun 編)
ch32fun (旧 ch32v003fun)での開発において assert
マクロを使う場合、__assert_func
が未定義だというエラーが出ることがあります。筆者が遭遇したエラーメッセージは次のようなものでした。
make build
《中略》
/usr/lib/gcc/riscv64-unknown-elf/13.2.0/../../../riscv64-unknown-elf/bin/ld: /tmp/ccdNAgAX.ltrans0.ltrans.o: in function `TIM1_SetPulseWidth':
/home/uchan/workspace/github.com/uchan-nos/eleclab/ch32v003fun_projects/ledtester2/periph.c:81:(.text.TIM1_SetPulseWidth+0x38): undefined reference to `__assert_func'
2025-02-18 15:54:35 AliExpress で買える格安キャラクタ LCD の比較検証
筆者は電子工作でキャラクタ LCD をよく使います。例えばComProc プロジェクト のボードに使っています。
秋月電子で買えるキャラクタ液晶が段々値上がりしてきて、もう少し安価に手に入れたいなと思ったのが今回の比較企画のきっかけです。AliExpress で探したら安価なものが有ったので、幾つか購入して比較してみました。
2025-01-26 18:06:07 チップ抵抗に 280V を印加したら火花が出た
本記事では、チップ抵抗やリード抵抗に 280V のパルス電流を与える回路と実験結果を紹介します。実験の結果、チップ抵抗は火花が出て故障し、リード抵抗は無事でした。この実験は、自作の電源回路の抵抗が焼けた(電源装置向け突入電流保護&検出回路 )のをより深く検証するためにやりました。
2025-01-25 10:47:12 電源装置向け突入電流保護&検出回路
自作した電源回路に AC100V を繋い瞬間、バチン!とブレーカーが落ちた、という経験はありませんか?私はあります。つい先日、簡易な電源回路を実験しようとしたら部屋が真っ暗に。ブレーカーを復帰し、もう一度恐る恐る通電してみたところ、今度は「バチバチバチッ」という音とともに抵抗が焼け、故障しました。
本記事では、安価な部品を使い、そのような危険な実験を安全に行えるようにする装置をご紹介します。突入電流でブレーカーが落ちることを防止し、さらに突入電流があることをお知らせします。
2024-12-23 14:03:54 電子辞書と自作 CPU を通信させたい
自作 CPU(ComProc MCU)のための入出力端末として電子辞書を使ってみたいと思い、ちょっと試してみました。USB-UART 変換器の変換がうまく行かず、まだ通信できていませんが、本記事では試したシステム構成をご紹介します。
2024-12-02 17:48:18 自作 CPU 同士で通信してみた
「第 4 回 自作 CPU を語る会」で数台の自作 CPU をネットワークで接続し、メッセージをやり取りする試みをしました。本記事では通信実験の結果報告と、私の CPU での処理で改良すべきところの考察を述べます。
2024-10-01 17:21:20 Gowin FPGA の OPEN_DRAIN の挙動
Tang Nano 9K に搭載されている Gowin の FPGA(GW1NR-9)について、I/O に設定可能な OPEN_DRAIN
というオプションの挙動を確認しました。結論としては、OPEN_DRAIN
の ON/OFF によらずプルアップ抵抗の有無が選択できること、0 を出力すると 0V が出力されることが分かりました。
2024-09-29 21:14:23 微小電流計の設計:主要部品の選定
10pA の分解能で ±20nA まで計れる電流計を設計してみました。本記事ではその設計の一部を紹介します。本記事で紹介する設計は、トランジスタ技術 2024 年 8 月号別冊付録「保存版 実験お役立ち回路の製作」の「第 3 章:分解能 1pA!微小 1nA 電流測定回路」(以下「トラ技の記事」)を大いに参考にしています。
2024-07-28 16:25:57 CH32V003 の IO プルアップ設定は周辺機能でも有効
多くのマイコンと同様、CH32V003 の I/O ピンにはプルアップ/プルダウン抵抗が内蔵されています。それらが GPIO 以外の周辺機能使用時にも有効なのかを調べてみました。結論は周辺機能でも有効です。
2024-07-26 15:34:06 CH32V203 の RTC の使い方
CH32V203 には RTC (Real-Time Clock)が搭載されています。時刻を利用するような電子工作をしたいなと思い、この RTC の使い方を調べてみました。
2024-07-26 10:48:23 CH32V203 のブートローダーを使ってプログラムを書き込む
WCH-Link を用いたプログラム書き込みができないときに、ブートローダーを使うことで書き込めるようになる、というお話です。
2024-07-17 21:12:16 ComProc プロジェクト
筆者(uchan)が主導する ComProc プロジェクトの各種情報をまとめるためのページです。載せるべき情報が出るたびに追記していこうと思います。
2024-07-15 11:30:04 バックライト付きキャラクタLCDのコントラストと電圧の関係
キャラクタ LCD のコントラスト調整端子に与える電圧とコントラストの関係を実測しました。対象の LCD は秋月電子通商 で買える ACM1602K-NLW-BBW(販売コード 110185)です。この LCD はバックライト付きの 16 桁 2 行表示のものなのに、たった 400 円で買えるので結構お得と思います。
2024-05-17 14:05:50 IB-DUAL の Circuit Python 環境を開く方法
IoTマルチ無線ユニット IB-DUAL の説明書によると「本製品を PC に接続しコンソールに Ctrl+C を(動作中は 2 回連続)入力することで、コードを 1 行ずつ入力して即実行できる REPL での動作も可能です。」とありますが、具体的な方法がイマイチ分からなかったので探求しました。
2024-05-10 10:27:55 Raspberry Pi Pico と Arduino IDE で割り込みを使うとハングアップ
この記事では Raspberry Pi Pico + Arduino IDE の組み合わせで割り込みを使うとハングアップする現象の原因を説明します。結論からいえば、割り込みハンドラ内で digitalWrite
を使うとハングアップすることがあります。この原因は digitalWrite
がメモリ確保(new
や malloc
)を行うことです。
2024-04-25 21:37:17 ブログ開発:ブログ内トラックバック
自作ブログ内でリンク先記事に被リンクを表示するトラックバック的機能を設計します。ブログ機能のアイデア に書いた機能の 1 つです。
2024-04-20 10:37:22 ブログ機能のアイデア
ブログに実装したい機能をリストアップしました。随時更新予定。
2024-04-13 21:35:11 プログラミングで 3D モデリングの魅力
筆者は最近、プログラミングによって 3D モデルを作っています。3D プリンタで印刷するモデルや KiCad の 3D ビューで表示するためのモデルです。本記事では、Autodesk Fusion 等のグラフィカルな 3D CAD ではなく、プログラミングによってモデルを作ることの魅力を語ってみたいと思います。
2024-03-14 15:02:36 ComProc プロジェクトの進化アイデア
ComProc プロジェクト は筆者が主導するコンパイラと CPU を両方作るプロジェクトです。
ComProc CPU は当初はシンプルでしたが、タイマや UART 通信などの周辺機能が追加されていき、この春に A/D コンバータも仲間入りしました。そのため、最近では ComProc マイコン(MCU)と呼ぶことも多くなってきました。この記事では、マイコンとしてさらに高性能化・高機能化するために欲しい機能を考えてみました。
2023-11-17 21:23:25 ふじみんロボット修理プロジェクト その2
前回 はふじみんロボットの大まかな構造やモータードライバの型番を調べました。今回はその続きで、ロボットの制御方法を解析していきます。まず回路図を復元し、次にモータードライバの制御信号などから制御方法を推測します。
2023-11-10 16:42:17 ふじみんロボット修理プロジェクト
ふじみんロボットの調子が悪いということで電子工作ラボに運び込まれました。動くには動くけど、ふとした瞬間に止まってしまう、というのです。このロボットの回路を調査し、復旧を試みることになりました。
修理が完了するまで、進捗があるたびに記事化していこうと思います。本記事はシリーズ 1 回目ということで、現在のロボットの状態を観察していきます。
2023-09-18 16:58:23 PCBgogo で基板を作った
PCBgogo さんからプリント基板をご提供いただきました。作った基板の用途や製造品質について紹介します。基板提供のきっかけは、PCBgogo の広報担当の方が私の記事 CH32V003 マイコンの PA1 や PA2 が使えないときに確認すること by uchan | elchika のコメント欄にで連絡をくださったことです。技術記事を継続的にアウトプットしておくと、いいことがありますね。
2023-07-01 17:12:15 CH32V003 マイコンの PA1 や PA2 が使えないときに確認すること
CH32V003J4M6 は秋月電子でたった 40 円で買える 、STM32 風の周辺機能を持ったマイコンです。このプログラムを開発していたところ、PA1 や PA2 から信号が出せないことに気付いたので、原因を探求しました。本記事では原因、回避策、原因調査の詳細を説明します。
2023-03-05 17:36:10 Arduino Due のメモリ消費量を測定する
Arduino Due の実行時のメモリ消費量を確認したいと思い、方法を調査しました。スタック領域とヒープ領域の消費量を測定する方法を紹介します。メモリ量が限られる Arduino の別機種(Arduino Uno など)への移植のために、メモリ消費量を削減する場合などに役立つと思います。
2023-02-27 15:26:50 圧着ペンチ PA シリーズをレビュー
株式会社エンジニア製の圧着ペンチ PA-21 と PA-24 を買って使ってみました。圧着品質の参考にしてください。なお、筆者は圧着の専門家ではなく、正しい圧着が出来ている保証はありません。
PA-24 で AWG #22~#28 を QI コネクタに圧着してみた
上図は左から AWG #28、#26、#24、#22 の電線を QI コネクタのコンタクトに圧着したものです。使った工具は PA-24 です。ダイス選択は後述します。
2023-02-18 12:57:30 PIC で FVR を超えた電圧を印加しても問題がない
PIC16F1786 のアナログ入力端子に、FVR を超える電圧を印加したときの挙動を測定しました。ADC の VREF+ には FVR(×4 モード、4.096V)を設定しています。
結果、FVR を超える電圧を印加した端子は ADC の最大値に張り付き、その他の端子の ADC 値には特に影響を及ぼさないことが分かりました。
2023-02-16 11:30:35 オペアンプ電流制御では突入電流に注意
オペアンプを使うと手軽に電圧で制御できる定電流回路を作ることができます。原理は簡単ですが、使い方によっては大きな突入電流により素子が破壊されたり回路が不安定になることがあります。この記事ではどんな場合に突入電流が流れるかを見て、その対策を考えてみます。
2022-12-31 15:33:02 NextPCB 基板発注記
NextPCB さんからプリント基板をご提供いただいたので、発注から到着までの経緯や製造品質について紹介してみようと思います。基板提供のきっかけは NextPCB の広報担当の方が elchika で私の記事を読んだことだそうです。ありがたや~。この記事はスポンサードではありますが、悪かったところも含めて正直に報告します。
2022-12-28 06:45:36 Analog Discovery 2の波形発生器出力が安定するまでの時間
Analog Discovery 2 には波形発生器(Waveform Generator)とオシロスコープ(Oscilloscope)が搭載されており、任意の周波数・電圧の波形を出力したり、回路の電圧波形を観測したりできます。JavaScript による自動化機能を使えば、波形発生器の出力設定を変えつつオシロスコープで自動的に観測するようなことが可能です。例えば MOSFET の Id-Vgs 特性の測定ではゲート電圧を変えながらドレイン電流を測る必要がありますが、自動化機能を使って「ゲート電圧の変更」と「ドレイン電流の測定」を自動的に行えば、素早く多くのデータを得ることができます。
本記事では自動化の際に問題になり得ることとして、波形発生器の出力電圧が安定するまでの時間を検証しました。スクリプトから出力電圧を設定しても、実際の出力がその電圧になるまでには多少時間がかかります。どの程度の時間を待てば出力が安定するのでしょうか。
2022-11-30 16:36:33 reTerminal で L チカしてみた
先日 elchika AWARD 2022 | elchika を受賞しました。賞品として reTerminal をいただいたので、本格的な製作に使う前にとりあえずセットアップと L チカ1 をやってみました。
2022-11-17 16:16:34 負荷が軽いとは負荷抵抗が小さいこと?
電子回路によく「負荷抵抗」や、単に「負荷」という言葉が良く出てきます。関連して「負荷が軽い」や「負荷が重い」という表現も良く見ます。負荷が軽いと言った場合、それは負荷抵抗が小さいことを意味するのでしょうか。大きいことを意味するのでしょうか。この記事ではアンケートや文献の調査を行い、人々がどんなイメージを抱くのかを調査しました。
結論としては人によってイメージが異なることが分かりました。誤って伝わる可能性のある「負荷が軽い」というような表現の代わりに「負荷抵抗が大きい(小さい)」とか「負荷電流が少ない(多い)」と表現した方が良いかもしれません。
2022-11-15 06:42:02 Raspberry Pi の UART で MIDI 送信
MIDI 信号の送受信は基本的には UART 機能を使うだけなので簡単です。しかし、よくある MIDI の記事では大体 5V で MIDI 信号を生成している一方、Raspbery Pi の GPIO 入出力電圧は 3.3V ですので、それを解決するのがこの記事のキモです。結論から言えばアップデートされた MIDI 規格に 3.3V での送受信回路が規定されており、その通りの回路で無事に動きました。
2022-10-11 06:53:37 ステッピングモータ加速のためのパルス速度計算
この記事ではステッピングモータを加減速させる場合のパルス速度を計算してみます。こんな話題はきっと他に解説してる記事や書籍があろうかと思いますが、ぱっとは見つからず自分で計算してみたのでメモ程度に残しておきます。紹介する計算式は、マイコンの非力な計算能力でもタイマに設定する値を計算するのに十分計算可能な速さであることを検証済みです。
2022-10-09 09:26:57 リンク集
uchan の独自の判断で面白い、あるいは役立つサイトを集めようと思います。掲載しているコメントは uchan の勝手なコメントです。リンク先サイトの公式見解ではありませんのでご注意ください。
2022-10-06 10:42:13 ブログの数式対応
KaTeX を使って数式(LaTeX 記法)の表示に対応させました。テキストで $E = mc^2$
と書くと次のように表示されます:$E = mc^2$
2022-09-30 04:37:45 ステッピングモータを三角波で回してみた
ユニポーラステッピングモータ SPG27-1101 を矩形波と三角波(を模した簡易 PWM 信号)で駆動し、コイルに流れる電流を計測してみました。三角波で制御した方が駆動音が小さくなりました。
駆動音を録音してみましたので興味のある方は聞いてみてください。 SPG27-1101を矩形波と三角波で回したときの駆動音 - YouTube
2022-09-28 09:42:15 ブログの画像対応
そろそろ記事に画像を表示する方法を考えないといけないですね……。この自作ブログの記事は Obsidian で書いているので、その画像管理方式と互換性を保ったまま、自作ブログにも画像を表示したいです。
まずは Markdown の画像記法 
を考えます。この記法に対しては、alt 属性に「夕方に撮影した東京駅の丸の内駅舎」が設定された <img>
タグを出力します。こんな感じに:
2022-09-23 09:36:44 STM32CubeIDE で PRIu8 が使えない
STM32CubeIDE 1.10.1 で作成した C 言語プログラムにおいて PRIu8
マクロや %hhu
書式指定子が使えないことが分かりました。また、その解決方法も分かりましたので記事にまとめてみました。
2022-09-17 13:41:17 STM32CubeIDE で生成されたファイルのライセンス
STM32CubeIDE 1.10.1 で生成したコードには次のような著作権表示が含まれます。それを読むと、ルートディレクトリの LICENSE というファイルに従ってライセンスされる、とあるのですが、LICENSE ファイルは生成されません。いったい、どのように解釈したらいいのでしょう?
2022-08-17 16:43:01 Rust の時刻ライブラリ選定
Rust で時刻文字列をパースしたくなったのでどんなクレートがあるかを調べました。strptime
のようなことが出来れば満足です。
適当にググると Rustで日時を扱う - Qiita や Rustの日付時刻処理(stdtime, time, chrono) - 簡潔なQ などがヒットしました。これらは共通して Chrono を使いましょうと主張しています。Chrono が Rust で時刻表現を取り扱うデファクトスタンダードのようです。
2022-07-04 23:23:22 OGP の設定方法
Open Graph protocol は SNS で記事をシェアした際、タイトルや概要文、サムネイル画像等を適切に表示するための仕組みだそうです。uchan は今ちょっとこの仕組みを調べただけなので詳しくないのですが、とにかく、各記事の HTML にこの仕組みを導入することで、Twitter や Facebook で良い感じに記事がシェアできるみたいです。
設定方法は主に上記公式サイトと OGPの正しい設定方法を解説!Facebook・Twitter対応 という記事で調べました。
2022-06-04 22:10:12 記事データの設計
ブログエンジンを作るにあたり、記事データをどのように作り、管理するかを決めます。記事のマークアップ言語は Markdown にしようと思います。特別な Wiki 文法のようなものを独自に考案するのも面白いですが、Markdown を採用するメリットは次のようにたくさんあります。
2022-05-07 23:05:34 自作ブログ始めました
実はこの記事を書いているのは、まだブログシステムが完成していないときです。完成どころか、CGI でハローワールドをやってみた段階です。だから、ブログシステムがお披露目できるまで作れるかどうかさえ分からないときに書いてることになります。