ラベル プログラミング の投稿を表示しています。 すべての投稿を表示
ラベル プログラミング の投稿を表示しています。 すべての投稿を表示

2023年9月25日月曜日

C#のTimer精度と挙動

Timerの精度云々

 C#のTimerはSystem.Timersのもの、System.Threadingのもの、GUI用のもの(Forms, WPF)があって云々とかは特にここでは触れません。とりあえずUI用じゃなければTimersのものを使っときましょう。
 また、いずれのタイマーも精度はよろしくありません。実測では15ms程度の分解能しかありませんでした。本当に精度が欲しいならwhileループでStopwatchの監視するのが一番手っ取り早いと思います。
 以下では意外と見向きされないTimerの特徴を実測で調べたので、Q&A形式で紹介していきます。なおタイマーはフリーラン状態(AutoReset==true)とします。実測環境は.NET6.0です。

2022年12月17日土曜日

TB62709をArduinoで動かす

TB62709とは

 TB62709は7セグメントLEDのコントローラ及びデコーダとして機能する東芝のICです。アノードコモンの最大4セグメントまでを制限抵抗なく1チップでドライブできます。データシートを見るに2008年かそれ以前に生産されたICで、今や単体では手に入らないと思われるものですが、このIC(TB62709NG)が搭載された7セグメントLEDボードを某所で入手したので動かしてみます。ポンバシのあの店です。
 

ICシリーズ

 今回入手したのはTB62709NGですが、非常にシリーズが多くややこしいです。調べてわかった範囲で記します。

TB62709

N, NG, F, FGがあります。GがついているとDINのみならずDOUTが使え、カスケード接続できるようですが詳細不明。NとFはパッケージ違いです。鉛フリー。

TB62785

パッケージ違いでNG, FTGがあります。TB62709と酷似しており、絶対Vddがやや低いことと、鉛フリーが記載されていない点しか違いが見つけられませんでした。少なくとも通信フォーマットはTB62709と同じなので、同一ライブラリで動くと思われます。

TB62705

パッケージ違いでCP, CF, CFNがあります。
8ビットシフトレジスタ+ラッチ+定電流のみです。62709のようにデコード機能や明度変更といった便利機能はありません。ロジックICらしく、CLK, DIN, LAT, ENピンがあります。

TB62706

16ビットシフトレジスタであり、それ以外は62705と同じ。
 

通信

 通信はCLK、DIN、LOADの3本。電源は5Vです。通信規格はI2CでもSPIでもないですが至極シンプル…というか古き良き普通のシフトレジスタ+ラッチです。当然ACKもエラー訂正もないので、向こうが正しくリッスンしてくれていると信じて一方的に送りつけるだけです。まあ古いICですし。
 お陰でクロックは16MHzまでOKらしいです。
 

Arduinoライブラリ

 マイコンは何で開発してもいいのですが、ライブラリ化することを考えてArduinoとしました。TB62709とTB62785に対応しています。カスケード接続には非対応です。
 
 
 大して複雑な操作もないので、Exampleで使い方を察してください。それなりに使える関数を作ったつもりです。
 
 

2022年2月24日木曜日

PIC32MX210F016BでUSBデバイスは作れるか

PIC32MX210F016BとHarmony

 秋月で190円(2022年1月現在)で売っている、USB搭載最安PICです。半導体不足の影響か、PICが軒並み値上げになっているので昔はもっと安かったと思います。ともかく、この値段で32bitアーキテクチャであり、ハードウェア乗算機を積んでいる超賢い石がこの値段で手に入るのはすごいですね。
 さて、USB積んでるならUSB機器作れて当たり前だろという感じですが、210F016Bはメモリ4kB, フラッシュ19kB という(PIC32としては)地を這うようなリソースの制限があります。加えて、Microchip社はPIC32、特にMXシリーズ以上でHarmonyというフレームワークを使用して開発することを想定しており、FreeRTOSが否応なしに走るのでリソースを馬鹿食いします。
 MHC(Microchip Harmony Configurator)を使ってプロジェクトを作った方なら分かると思いますが、USBの適当なクラス(HIDとかCDCなど)を搭載したプロジェクトを作ると、メモリアロケーションできずにビルドが通りません。ヒープとかスタックのサイズを調整してもどこかしらのアロケーションエラーが出ます。少なくともフリー版XC32では最適化レベルを変更してもどうやっても通りません。
 使っていない機能の変数割当をエラーが出なくなるまで削るといいんでしょうが、本当に使っていない変数ならコンパイル時に除去されるので、いい感じに容量削減するのは骨が折れそうです。
 いくらググっても32MX210でUSB機器開発した情報が出てこないので、今回はこれをなんとかしてみたいと思います。

2022年2月19日土曜日

XC32 ver4.00 Free版でMIPS16コードが生成できる

ついに解禁か?

 最近ずっと32MXの開発をしていて、XC32 v3.01 フリー版ではMIPS16コード作成オプションを使えないことを確認していました。v4.00が2022年1月に出たのでアップデートしてみたところ、なんとMIPS16オプションが効いて、実際かなりのサイズダウンができているではありませんか!

2021年10月26日火曜日

MPLABのシステムドライブ圧迫を回避する

MPLABさんの困った仕様

MPLABは"C:\Users\ユーザー名"に勝手にDFPのデータやらMCCのデータやらを置いてくれます。(※Windowsの想定です)
環境によりますが、数GBあるので知らぬ間にCドライブを圧迫してくれる困った仕様です。当然保存先を指定できるオプションはありません。
肥大しがちなフォルダは".mchp_packs" ".mcc"なので、こいつらをなんとかしたいと思います。

2021年6月17日木曜日

MPLABのシミュレーターで"No source code lines..."が出る場合の対処法

 No source code lines were found at current PC 0x0

PIC向け統合開発環境MPLAB Xのv5.40, v5.50ともに出くわしたエラーです。
シミュレータを起動すると初回は正常に動くものの、2~3回デバッグを繰り返すと上記エラーが出てMPLABを再起動するまで直りません。エラーの内容は文字通りプログラムカウンタの0番地にコードが見当たらないというものですが、コードは正常ですし、そもそも初回は成功しているのでMPLAB側の問題としか思えません。
同じ問題で困っている人がいないのかググっても情報は見つかりませんでしたが、自力で原因と解決法を見つけたので記します。

2020年2月29日土曜日

WebViewのレイアウトがずれるときの対処法(C# WPF)

リサイズ時にWebViewのレイアウト崩壊

メインWindowに対して、左ペインに操作パネル、右ペインにWebViewを含むアプリケーションを作りました。普通に走らせるだけでは問題ありませんが、WindowをリサイズするとWebViewの中身の表示が崩壊します。
WebViewを親Gridに対してどうレイアウトするかによって、リサイズ時に崩壊するかどうかが決まるようで、試しに左右ペインのコントロールを入れ替え、左ペインにWebViewを表示させてみたところ、リサイズしても表示が崩れることはありませんでした。

※WebViewはEdge版(非Chrome)のものを使用しています。他のWebBrowser系のコントロールでも有効かどうかは不明です。

2019年3月13日水曜日

ArduinoでBME280とBH1750を使う

BME280

BME280は温度、湿度、気圧が測れるセンサーです。Aliexpressにて2.23ドルで買いました。
Amazonでも日本発送のPrime対象商品が売っているので、Aliに抵抗があったり直ぐに欲しい場合はAmazonでもいいかもしれません。
似たような名前ですが、BMP280には湿度センサーが付属していないので注意してください。値段がぜんぜん違うので調べててわかるとは思いますが。BMPの方だと0.75ドルくらいです。

2019年2月28日木曜日

自作植物育成ライト 調査編

←前回

最適な光源

光源としては植物育成用のLEDを使うこととします。
しかしこれをただただ点灯するだけでいいのでしょうか?もっと効率的な方法は無いのでしょうか?

実はこんな報告があります。
http://www.mext.go.jp/b_menu/shingi/gijyutu/gijyutu3/toushin/attach/1333537.htm
なんと.go.jpドメインです。文部科学省です。

2018年12月5日水曜日

自作植物育成ライト 構想編

窓際ガーデニング


私はガーデニングが好きで、ベランダながらいろいろ育ててきました。しかしここ数年は、なぜかハダニの被害が酷く、育成規模は年々縮小傾向にあります。対して、害虫の被害が皆無という意味では、室内栽培はとても優秀です。とはいえなにぶん窓際でも光量が不足気味。窓際でチランジアを十数個育てていますが、花が咲いて子株をつけても、100%一子相伝になってます。心苦しいばかりですが、栄養が足りないようです。ということで、チランジアを育て始めて今年で5年目で、今更感はありますが、補助光源を用意することとしました。
(実際のところ、育成ライトは今年の8月には完成し、4ヶ月程度安定運用できていることを確認しています)

2018年11月19日月曜日

高DPI環境で作るフォームアプリケーション(C#)

フォームアプリケーションの高DPI対応

高DPI対応のアプリケーションを作りたいならWPF使えって話ですが、なにかとフォームアプリケーションの方が重宝したり。高DPI対応の方法はググればいくらでも出てきますが、それでもレイアウトが崩れたりすることがありました。今回はそれに対する対処法をなんとか見つけました。