STM32G0使ってみる2 -I2Cを使ってみるていうかそれぐらいしか思いつかない-

本年度も後半に入ってしまいましたが今年最初に紹介したSTM32G0をもうちょっと使って
見ようと思います。



さて…本来はこのような構成でI2Cデバイスを使う予定でしたが…
残念ながらリマップの関係上かなり難しいことが判明…オプションバイトを弄らず
自由に使えるのはたったの3ポートのみ!


しかもSTM32G031-Discovery互換ではI2CのSDAで使うPA12(6Pin)がLEDに取られて
しまっているのでお辛い…


そんなわけで折半でこのような回路構成にしてみました。LEDとI2CのSDA干渉させない
ようにわざわざ高速バッファを挟む本末転倒…だがそれがいい
SWCLK,SWDIO,nResetはいつでも使えるようしておきました。先人の方々もI2C専用で
動かすことを前提でこれ使ってる感じですね。

それとあまったPC14(1Pin)は1wireでもぶら下げるとしますか…



ピンの選定については今回は下記の方の記事を参考にしました。
ありがとうございます。

Crescent様
http://meerstern.seesaa.net/article/477348927.html
システム関連ピンのGPIO化に際する注意を詳しく解説されています。

caa45040様
https://qiita.com/caa45040/items/a6ca28ae4b1dfa5c489c
オプションバイトをいじりリスクを負ってたくさん製作されておられます


ねむいさんもS-5851A持っているのでせっかくだからまねさせてもらいます
液晶はもちろんドットマトリクスな中華I2C液晶です!
ROMが32Kbyteあるのでfontx2でankフォントくらいは表示できますね!
液晶については過去記事のこちらをご参照ください。
一時期aitendoで売ってたので持ってる方はまだいるかも!?




特にリマップとかは行わず、パワーオンリセット後のGPIOポートをそのまま
使用するので5PinがI2C2のSCL,6PinがI2C2のSDAとします。


また、S-5851AのアドレスはAD1=1,AD0=0として0x94(7ビットアドレスだと0x4A)に。



あとはSTM32F03のプロジェクトからI2Cライブラリをサクっと移植し動作完了☆
すごいやっけつ感ですがあっけなくできてしまいました。さすが私

STM32G0のI2C周りはSTM32F3やF0系とほぼ同じレジスタ構成なのでややこしい
タイミングレジスタの設定値もタイミング値計算機で算出可能です。



STM32のHSIは16MHz,そこからSysClockの64MHzにします。
この設定で100kHzのI2Cクロックを生成する数値を代入します。


オシロスコープで実際の波形をキャプチャしたところです。きっかり100kHzは
出ませんがまぁだいたい近いですね。画像はSTTS751との通信(I2Cアドレス0x72、
7ビットアドレスでは0x39)です。こんな感じでI2Cの解析にPicoscope大活躍ですわ
そうだね宣伝だね。



そんなわけで重い腰を上げでSTM32G0の続きやってみましたがあとから来た人に
どんどん先を越されてしまいましたがいつもの感じでやっていこうと思います。

そして…小さな巨人STM32G0で次動かすデバイスは…


こいつだ!
つづく!


おっとーその前に久々の新規プロジェクトになりますがこちらにアップロードして
おりますので自己責任でどうぞ。

いろいろ試す49

●OpenOCDでマルチコアデバッグするやり方
竹本様よりコメントでお題をいただいたのでトリプルコア搭載のLPC4370ボード、
LPC-Link2を使って実践してみました。


まずねむいさんのOpenOCDバイナリの/tcl/targetlpc4370_lpclink2_spifi.cfgを
編集します。デフォルトはm4コアしか有効にしていませんがm0subを有効にします。
,鉢△良分が編集した部分です。
m0appは電源投入直後は寝ているので今回は省きます。
なお順番が重要でm4コアを必ず先頭に持ってきておきましょう。


まずOpenOCDを起動したらm4コアにアタッチします。insightでつなぎます。
insightではTCPポート3333のm4コアがつながります。

openocd -s C:/Devz/ARM/OCD/tcl -f interface/ftdi/jtagkey2.cfg -f target/lpc4370_lpclink2_spifi.cfg -c "reset halt" -c"arm semihosting enable"
C:/Devz/ARM/insight/bin/arm-none-eabi-insight --eval-command="target remote localhost:3333" --eval-command="tbreak main" --nx main.elf
Open On-Chip Debugger 0.11.0+dev-00365-g9a9e9e2c6 (2021-08-31-11:31)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "jtag". To override use 'transport select '.
Info : clock speed 2000 kHz
Info : JTAG tap: lpc4370.m4 tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd), part: 0xba00, ver: 0x4)
Info : JTAG tap: lpc4370.m0_APP tap/device found: 0x0ba01477 (mfg: 0x23b (ARM Ltd), part: 0xba01, ver: 0x0)
Info : JTAG tap: lpc4370.m0_SUB tap/device found: 0x0ba01477 (mfg: 0x23b (ARM Ltd), part: 0xba01, ver: 0x0)
Info : lpc4370.m4: hardware has 6 breakpoints, 4 watchpoints
Info : lpc4370.m0_SUB: hardware has 2 breakpoints, 1 watchpoints
Info : starting gdb server for lpc4370.m4 on 3333
Info : Listening on port 3333 for gdb connections
Info : starting gdb server for lpc4370.m0_SUB on 3334
Info : Listening on port 3334 for gdb connections
Info : JTAG tap: lpc4370.m4 tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd), part: 0xba00, ver: 0x4)
Info : JTAG tap: lpc4370.m0_APP tap/device found: 0x0ba01477 (mfg: 0x23b (ARM Ltd), part: 0xba01, ver: 0x0)
Info : JTAG tap: lpc4370.m0_SUB tap/device found: 0x0ba01477 (mfg: 0x23b (ARM Ltd), part: 0xba01, ver: 0x0)
Warn : Only resetting the Cortex-M core, use a reset-init event handler to reset any peripherals or configure hardware srst support.
Warn : VECTRESET is not supported on this Cortex-M core, using SYSRESETREQ instead.
Warn : Set 'cortex_m reset_config sysresetreq'.
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
target halted due to debug-request, current mode: Thread
xPSR: 0xc0000000 pc: 0x555d36cc msp: 0x675f04e0
Info : JTAG tap: lpc4370.m4 tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd), part: 0xba00, ver: 0x4)
Info : JTAG tap: lpc4370.m0_APP tap/device found: 0x0ba01477 (mfg: 0x23b (ARM Ltd), part: 0xba01, ver: 0x0)
Info : JTAG tap: lpc4370.m0_SUB tap/device found: 0x0ba01477 (mfg: 0x23b (ARM Ltd), part: 0xba01, ver: 0x0)
Warn : Only resetting the Cortex-M core, use a reset-init event handler to reset any peripherals or configure hardware srst support.
Warn : VECTRESET is not supported on this Cortex-M core, using SYSRESETREQ instead.
Warn : Set 'cortex_m reset_config sysresetreq'.
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
target halted due to debug-request, current mode: Thread
xPSR: 0xc0000000 pc: 0x555d36cc msp: 0x675f04e0
semihosting is enabled

Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : accepting 'gdb' connection on tcp/3333
Info : JTAG tap: lpc4370.m4 tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd), part: 0xba00, ver: 0x4)
Info : JTAG tap: lpc4370.m0_APP tap/device found: 0x0ba01477 (mfg: 0x23b (ARM Ltd), part: 0xba01, ver: 0x0)
Info : JTAG tap: lpc4370.m0_SUB tap/device found: 0x0ba01477 (mfg: 0x23b (ARM Ltd), part: 0xba01, ver: 0x0)
Warn : Only resetting the Cortex-M core, use a reset-init event handler to reset any peripherals or configure hardware srst support.
Warn : VECTRESET is not supported on this Cortex-M core, using SYSRESETREQ instead.
Warn : Set 'cortex_m reset_config sysresetreq'.
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
target halted due to debug-request, current mode: Thread
xPSR: 0xc0000000 pc: 0x555d36cc msp: 0x675f04e0, semihosting
Info : Found flash device 'win w25q80bv' (ID 0x001440ef)
Info : New GDB Connection: 1, Target lpc4370.m4, state: halted
Warn : Prefer GDB command "target extended-remote :3333" instead of "target remote :3333"
Error: JTAG-DP STICKY ERROR
Error: Failed to read memory at 0xfffff000

接続時のログになりますがTCPポート3333に加えてインクリメントされた値の3334が追加
されます。この3334がm0subのコア用のポートとなります。

お次はgdbを別口で起動します。 target extended-remote localhost:3334とします。


m0用のプログラム走らせてないのでsticky-errorは出てますがm0コアには
しっかりアタッチできております!

こんな感じでマルチコア当たり前になった昨今ですがOpenOCDを駆使してバンバン
デバッグしていきましょう!


●KYF39でSBIネット銀行のアプリ"スマート認証NEO"をインストールする
ねむいさんは元来よりSBIネット銀行を利用しております。
利用状況に応じて振込手数料が無料になる回数が増えるスマートプログラムなるものが
あるのですが今年の4月に大改悪しやがりましてスマホでSBIのアプリを入れてスマート
認証NEO
なるものを導入しないと自動的に最低ランクになってしまう事態となりました!!

まぁ素直にスマホにインストールすればと思いでしょうが、ねむいさんが持っている通信
端末KYF39は旧世代の人間向けのガラホでこれは普通の方法ではSBIアプリをインストール
できません!!FUCK!!

というわけでこいつに無理やりSBIアプリをインストールしてスマート認証NEOを設定する
方法を紹介します。windows10環境下で行います。
ここから先は自己責任でお願いします!
(注:私も手探りで行いましたので内容は適宜増強していきます)

1.APKをダウンロードする
まずはAPKをダウンロードしないと話になりません。
KYF39はgoogleplayが使えないのでapkcomboというサイトからapkをダウンロードします。
https://apkcombo.com/ja/zhu-xinsbinetto-yin-xing/jp.co.netbk/

それとSMS認証突破するためにSMSforwarderが必要なのでこれも落とします。
https://apkcombo.com/ja/sms-forwarder-auto-forward-sms-to-pc-or-phone/enstone.smsfw.app/

2.APKインストールまで
すみません超手抜きですがとりあえずこちらの方のわかりやすい手順に倣います
KYF35をお使いですがandroidなのでやってることは一緒です。

SBIアプリとSMSforwarderのインストール順は特に気にしなくてもよいですが
設定は必ずSMSforwarderから行います。

3.SMSforwarderの設定を先に行う
SMS認証のメッセージを自分のPCのメールアドレスから出すようにフォワードさせます。
メールの送付先は送信に使ったメールアドレスにしておきましょう。

なんでこんなめんどくさいことするかというとKYF39デフォルトの+messgaeで見ようとするとなんと今までやったSBIスマート認証NEOの設定がキャンセルされたことに
なってしまい、先に進めなくなるからです!!!!

4.SBIスマート認証の設定を行う
ログイン名とパスワード、認証用PINコードの設定を行います。
SMSforwarderがちゃんと機能していればPCのメールアドレスにsms認証の内容が
来ますのでそれを打ち込み認証完了です!!!



SBIの管理画面からもちゃんとスマート認証NEOが登録されています。
できた…長い戦いだった…


なお、残念ながらKYF39からは残高確認ができずエラー画面となりますが
肝心の振込操作の時の認証操作については何も問題はないのでご安心ください。


そんなわけで時代から取り残されるとこんな不便な目に遭遇するというほとんどの
方にとってはどうでもいい旧世代型レプリロイドのぼやきでした。かしこ。

いろいろ試す48

●最近のOpenOCD更新事情
今年の2月に即効飽きて罪基板になってしまったRaspiPico。
こちらは複数コアを持つCortex-M0+のMCUを搭載しているわけですが、OpenOCDで
使う為にはSWDマルチドロップに対応しないといけません。

現状ではまだRaspiPico専用のOpenOCDを使用することになりますが、OpenOCDの
gerritにはマルチドロップのパッチが上がっており検証が繰り返されております。
なんかもうそろそろmergedになりそうな雰囲気ですので首を長くして待つことに
しましょう。それとねむいさんとこのOpenOCDバイナリは本家とESP32とRaspiPico
の3つに分裂してしまっているのですべて統合してすっきりさせたいものです。


●モノがない…
・半導体製品がない
皆様ご存じの通り、コロナショック以来半導体需要が異常に増加しており半導体
特にマイコンの納期がやたらと延びています。
ねむいさんのところも打撃を受けていて旧三菱系ルネサスマイコンの納期が来年とか
言われてしまい必死になって流通在庫をかき集め何とか糊口をしのいでいる次第です。
STM32とかのCortex-M系ARMマイコンももちろん波及しており品切れになったり納期
延長とかになっていると商社の方に話を聞きました。
電脳おじ様のブログにおいてSTM32の枯渇問題について深く言及されており非常に
参考になりました。

来年になったら状況変わるかも?って楽観的に構えてましたが…

・マテリアルがない
ないわけじゃないんですけどなんかすごい値段が跳ね上がっているのです。
特に銅。先物チャート見ていただければわかりますがこちらもコロナショックを
皮切りに2021年7月末現在も超爆上げしており
実物も糞みたいに上がっています。
で、銅の値段が上がると影響するのが電線です!特に太い電線の価格がころっころ
変わっている!もう勘弁してくだち!111!!!
そして電線の値段が上がるということは…

・ナイロンもないろん
す み ま せ ん
ワイヤハーネスとか基板接続用コネクタでよく使用される66ナイロンとかが
ないろんとのことです…
こちらについてはころすけさまのコネクタ納期遅れについてのブログ記事解説に
詳しいです…ちなみにコネクタだけじゃなくってリレーやスイッチとかの機構
がある電子部品やはたまたプラスティックのカバーがあるメカパーツすら納期
が遅れているそうでしかも上にあげた通り金属系も値段上がっているのでプライス
ツインターボ上げ状態で最終製品はマルチプルターボ上げになり我々の給与に
マイナスに作用するといたるがしんじゃうルナ先生理論となっております。
なお最終製品の納期はマルチプルターボにならなくてそのぶんだけねむいさんの
休日が減ります。

そんなわけでワイヤハーネスの制作費用も値段が上がってしまったので自分で
ハーネス打つ機会がなんか増えた気がします…
ころすけ様は2022年まで半導体不足が落ち着かないと予想されておりますが
各企業がパニックになって過剰に抱えた在庫が何年かたって秋月とかに大量に放出
されるんじゃないかなと私も思ってます。特にルネサス。


●FatFsのディレクトリ破壊問題を追う
ねむいさんじつは数年越しでだらだら調査している問題があります。
内容は"FatFsでファイルコピーしたらディレクトリが破壊される"という内容で
下記の条件で起こります。
・128MByteのMMCv3カード
・FAT16でフォーマット(FatFs・Windowsでフォーマットしても同じ結果)
・512Byte以上のファイルをコピーすると発生。それ以下では壊れない。
・SPI互換モード/ネイティブモードの両方で発生する。
・気づいたのは2019年の夏。R0.13から最新のR0.14bまで発生確認済み。


CQ誌のMB618T付録基板のSPIで試したときはこんな感じにです
コピーしたらぐっちゃぐちゃ。


2014年ごろのMB618T向けのプログラム引っ張り出してきても同じ。


STM32H7のSDMMC使ったいつものでも同じ結果に…

FatFs module test terminal for STM32H747XIH6
LFN Enabled, Code page: 932
AppVersion : W.I.P
Build Date : Jul 30 2021
>fs

FAT type = FAT16
Bytes/Cluster = 16384
Number of FATs = 1
Root DIR entries = 512
Sectors/FAT = 32
Number of clusters = 7836
Volume start (lba) = 63
FAT start (lba) = 64
DIR start (lba,clustor) = 96
Data start (lba) = 128

Volume name is 128MB
Volume S/N is 4F45-2E91
...
1 files, 558702 bytes.
125376 folders.
124816 KiB total disk space.
96 KiB available.
>fl

----A2020/09/13 22:02 558702 2613.jpg
1 File(s), 558702 bytes total
0 Dir(s), 127811584 bytes free
>fx 2613.jpg 1713.jpg

Opening "2613.jpg"
Creating "1713.jpg"
Copying file...
524288 bytes copied at 772 kB/sec.

>fl

DR-SA2019/10/01 11:22 524288 ウキコテア,;ユ.eソゥ
D-H-A2056/06/21 03:38 140824249 マノエ鹵}.、zE
-RHS-2041/09/15 12:51 3292342498 イy ャォ.モ。
-R-SA2046/06/09 14:32 4013330094 Eッ・.ネソ
--HS-2026/08/05 29:30 2671303503 g6ゥニ=j゚.3
--HSA1991/04/24 14:63 1051517575 y゙j赧ヤ。・
DR---2062/02/16 30:21 2454358133 ・xv!ウリン.」O・
-R-SA2032/15/27 22:61 1018623284 @・・セ・.ヌW
DR--A2029/04/07 13:40 2681369147 ヲn・ニq;キ.ーm
D---A2026/14/27 19:29 2945400368 キkヒ[n>xk.・
-RH-A2068/15/21 07:47 1796965267 }イョソc_イコ.
DRH-A2015/11/05 09:00 3404787036 &Kvヒン・. 
-R-SA1993/03/19 20:14 1157293741 タカ8ユ・.トモm
D-HS-1980/00/00 00:00 0 :u鈎4_ro.z盧
7 File(s),2116474074 bytes total
7 Dir(s), 127287296 bytes free
>fm 0 1 16384

The volume will be formatted. Are you sure? (Y/n)=Y

rc=0 FR_OK
>

ううむよくわからない。
フォーマットとかはちゃんとできるしSTM32F7とかのマスストレージのサンプル
つかってWindows上でコピーは全く問題なしだからローレベルの書き込み操作は
問題ないみたいです。

ていうか今日び128GBのSDの時代なのに128MBの1bitモードしかないMMCとかに
こだわるなよって言われそうですがやっぱ気になっちゃいます。


↑とは関係ないですがGCCバージョンアップにともなうビルド時のワーニング
 発生の問題はR0.14aで修正されておりました。ありがとうございます。

中国自然歩道を往く -GoGoWest! 岡山を突っ走る!-

中国自然歩道…それは東海自然歩道や近畿自然歩道と同じく土建屋に定期的に税k
ゲフンゲフフン日本の自然や文化・歴史を知り、国民の健康維持を促進するために作られた
国家的プロジェクトの一つである…!

さて、なんでねむいさんが近畿自然歩道と同じく中国自然歩道を進んでるかというと
今年初めに近畿自然歩道の西端に早々に達してしまい、同時に下関まで続くきわめて
広大なエリアマップが展開してしまったわけでこれが中国自然歩道だったのですが
本当に思いつきの行動なのですがそれなら下関まで行ってやろうじゃないか!
ということで目下攻略中なのでございます。


●2021.06.26 中国自然歩道(柵原・吉が原〜誕生寺)


虹裏メイドの夜は遅い。
仕事が終わって弾丸で津山行のバスに乗り込んで現地で一泊です…
津山はB'zのヴォーカルの稲葉さんの故郷らしくウルトラソウルなお出迎えですね☆



ねむいさんのリサーチ不足で津山よりも美作の湯郷温泉で泊ったほうが
翌日のバスの便も早くて安かったorz
仕方ないので市内循環バス->英田の福本行のバス(2枚目画像参照)で乗り継ぎます…



おぅぃ出発時間もう5分すぎてるぞぃ!
さらに1分後に後ろのバスから出てきたおじいちゃんの運転で福本に向かいます…


何はともあれ福本のバス停に到着です。
しかしながらエントリポイントの柵原の藤原橋はここから7.5kmほど先にあります。



前回通過した中国自然歩道の道標と落ち合いました。
かつてこの地区は片山鉄道なる列車が走っていたそうです。




はぁはぁ…なんかルートミスしたような気がするけど気のせい…
片山鉄道の路線跡、吉ヶ原駅は当時の列車や施設がそのまま残されていました。
コロナで閑散としてますが以前は動態保存された列車が柵原まで走っていた
そうです。とりあえずここで大休憩(まだスタートですらない)



前回のエントリポイント藤原橋を渡って吉井川をクロスしてようやく
今回の中国自然歩道のルートがスタートです!


また道間違えたわクソァ!!!
こんな道標も何もない丁字路右折とか気付くか!!1111!!!!!!



と情けない自分に怒りをぶつけつつ山道を上っていきます…
湿度は常に100%で汗が吹き出しますがきれいな山アジサイに癒されます♥



標高がだいぶ高くなったところで宗形神社です。
水道水があるのでありがたく補給します。粉ポカリと天日塩でミネラル補給も
万端です!


道は再び細くなっていきますが一本道なので迷いません。
今のところ中国自然歩道は舗装された山道の比率が多い感じがします。


おどろどろしい名前の血洗の滝にやってきました。
ねむいさんうっかり道標を見落としていて・・




血洗の滝はそこまでうっそうとしておらずなかなか良い感じの滝でした。
この季節はこういう場所ではに注意ですがどうやらこの辺りは蛭が生息して
いないようで助かりました…


そしてまた道間違えて延々と南下してしまう愚かな私…
本当はさっきの看板のところでV字ターンが正解でした…くそぁ!!



さて、ひたすら山道を進んでいくと吉井高原なる場所の分岐に出会います。
ねむいさん度重なるルートミスで寄ってる暇ないので直進です!



本日の最高地点金毘羅山の頂上を迂回する地点です。
あとは下りですがぴんぼけがきつい・・・・


下りに転じた道を駆け降りると道が開けて本山寺三重塔に出ました。



本山寺の境内を通って門前で少し休憩です。


快適な下りの道が続きます。
時折見える路傍の花にも癒されまくりです🌸


ですが飛ばしすぎ要注意。
中国自然歩道の道標は御覧の通り電柱の高所にある場合が多くうっかり
見落としがちです!



そして本日最後のトレイルに挑む…!
天津神社御旅所なるピークを越えてさらに進む!



天津神社本殿です。
ここをこえたら後は下りのみ!



ダートの道を駆け下りて舗装路に変わったら一気に視界が開けます!
吉備高原はまだまだひろいですね〜


かめ。


さっきのかめさんがいた池が誕生寺池です。
あとは道路に沿って南下します。


次のルートの分岐までやってきました。
焦ってかなりのぺースで進んできたせいか15:10発の電車までかなり時間が
余ってしまい、ついでだから誕生寺に寄ってみます。



誕生寺です。境内はかなり広く敷地外にもたくさん施設がありました。


浄土宗法然上人の霊廟です。南無阿弥陀仏。


大佛様も鎮座しております。



十分余裕をもって予定時間前に誕生寺駅に到着して妙におんぼrレトロな車両で
津山駅に帰還しました。


津山駅に着きましたが帰りのバスは17:30、時間もたっぷりあるので市内を
買い物がてら散策してみますが…ついでに飯食っておこうと思いましたが
みんな閉まっててまったく飯屋がない!


結構探して津山城下で唯一営業してたレストランで名物のホルモンうどんに
ありつけました!


なんか"てっちゃん"つながりで津山はホルモンが名物なんだとか
それでホルモンを合えた焼うどんもソウルフートとなってるようですね!



そしてお土産もたくさん買い込んで(これが今回の目的)JRバスで無事に大阪に
帰還しました…!


というわけで近畿自然歩道に加えて中国自然歩道が追加されて攻略マップが
2倍以上に広がってしまいましたがライフワークのつもりでこれからもガンガン
進んでいこうと思います!

もちろん近畿自然歩道や東海自然歩道の復路も今年の構想に入っており、そちらも
がんばって進んでいきます!

●2021.06.26 中国自然歩道(柵原・吉が原〜誕生寺) GPSログ


今回の走行距離49kmとありますがGPSログがあちこちにすっ飛んでるせいなので
実際の距離は30kmほどとなります。

AVR128DA/DBシリーズとかATMega4809とか使ってみる

●買ったはいいものの肥やしになりそうなのでやるなら今しかねぇ…

昨年末に正統進化系のAVR128DAシリーズを入手しましたがようやくいじる機会が
出来たので紹介します。

AVR128DA48 Curiosity Nanoというキットで購入しました。値段は2000円ちょっとです。

AVR DA/DBファミリーに位置付けられるこの品種はなんと動作電圧1.8V~5.5Vの範囲で
24MHz駆動を保証しておりUARTとかも待望のフラクタルディバイダなんかも装備して
おりなにより過去の品種と比べてもはるかに安価であるという超進化を遂げております。

が、フラッシュメモリアクセス(後述します)とI/Oのトレラントは従来のままなのでもう
ちょっとがむばってほしいですね。


なお今回のブログ記事作成に当たり下記先達のサイトを参考にさせていただきました。
みなぎ様
なんでも独り言様
KemushiComputer様



●最初に立ちはだかるUPDI難民問題
そしてフラッシュの書き込み方式はAVR-0/1系と同じくUPDIというプロトコルに従って
書き込みを行います。これ実態は半二重のUARTなのですがLUFAとか簡単に対応が
できるんじゃないのと思っていたのですがXMEGAのPDIとも勝手が違うらしく、従来の
自作系ライタとは相性が悪くて実装例はあまりなくて普及が進まない状態となっている
と感じております。

でその中でとれる方法は大きく分けて4つ
ヾ冉阿靴ATMELICE/PICKITを買ってMicrochipの開発環境から読み書きする
安価な評価ボード(XPlained/Curiosity)のファームを書き換えてUPDI専用にする
jtag2updiで専用のavrdudeで書き込む
ぜ詑屬枠焼鷭UARTなので仮想COMでせこせこ自作する(pyUPDIとかも一例)


ねむいさんは値段対費用効果が高いと思われる△諒法をとりました。ATTINY202の
時にATTINY104XplainedをUPDIプログラマ化してAvrdudeで書き込んでいます。
い硫樵COM使う方法でavrdudeが対応するのが最良なのですが首を長くして待ってます。
みなぎ氏のサイトではそれに近いことにちゃれんぢされているようですごく期待してます☆
ぁ、なんかいつの間にか薄い本同人のネタにしますって書き換わってる・・・・


avrdudeは現状はAVR128DA/DBなどの128kbフラッシュを持つ品種に対応しておらず、
パッチを充てる必要があります。ちなみにCuriosityNanoにも対応してくれてすごく
助かります♥

avrdudeを使って書いてみたところはこんな感じになります

> "C:¥Devz¥Coreutils¥bin¥make.exe" program
C:/Devz/AVR/avrdude/avrdude -v -p avr128da48 -P usb -c pkobn_updi -U flash:w:main.hex

avrdude: Version 6.3-20171130
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch

System wide configuration file is "C:¥Devz¥AVR¥avrdude¥avrdude.conf"

Using Port : usb
Using Programmer : pkobn_updi
avrdude: Found CMSIS-DAP compliant device, using EDBG protocol
AVR Part : AVR128DA48
Chip Erase delay : 0 us
PAGEL : P00
BS2 : P00
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 0
StabDelay : 0
CmdexeDelay : 0
SyncLoops : 0
ByteDelay : 0
PollIndex : 0
PollValue : 0x00
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
prodsig 0 0 0 0 no 125 125 0 0 0 0x00 0x00
fuses 0 0 0 0 no 9 16 0 0 0 0x00 0x00
fuse0 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse1 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse2 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse4 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse5 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse6 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse7 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse8 0 0 0 0 no 1 0 0 0 0 0x00 0x00
lock 0 0 0 0 no 4 1 0 0 0 0x00 0x00
data 0 0 0 0 no 0 0 0 0 0 0x00 0x00
flash 0 0 0 0 no 131072 512 0 0 0 0x00 0x00
eeprom 0 0 0 0 no 512 1 0 0 0 0x00 0x00

Programmer Type : JTAGICE3_UPDI
Description : PKOB nano (nEDBG) in UPDI mode
ICE hardware version: 0
ICE firmware version: 1.17 (rel. 514)
Serial number : MCHP3280031800001375
Vtarget : 3.31 V
JTAG clock megaAVR/program: 0 kHz
JTAG clock megaAVR/debug: 0 kHz
JTAG clock Xmega: 0 kHz
PDI clock Xmega : 100 kHz

avrdude: Partial Family_ID returned: " "
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9708 (probably avr128da48)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "main.hex"
avrdude: input file main.hex auto detected as Intel Hex
avrdude: writing flash (2462 bytes):

Writing | ################################################## | 100% 0.79s

avrdude: 2462 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex auto detected as Intel Hex
avrdude: input file main.hex contains 2462 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.44s

avrdude: verifying ...
avrdude: 2462 bytes of flash verified

avrdude done. Thank you.


> Process Exit Code: 0
> Time Taken: 00:02



CuriosityNanoに搭載されているnEDBGはpkobn_updiと指定するようですね。
また、Xplainedの時みたいに無理やりファーム書き換えなくてもupdiがそのまま
使用可能なのもうれしいです。これで2000円ちょっとならよい買い物かも!?


●今度はAVR128DB28だ!

さて今度はキット上ではなく別の品種にも書けるか確かめてみました。
AVR128DB28です!!これもかつてのmega8系の上位互換となっていくでしょう。

と思いきやはじめはXplainedから改造したupdiプログラマから書き込み失敗して
焦りました。どうやらCuriosityNanoのファームではないとAVR128DA/DBシリーズの
フラッシュ書き込みに対応していないと考えられます。


CuriosityNanoで書いたところです。
> "C:¥Devz¥Coreutils¥bin¥make.exe" program
C:/Devz/AVR/avrdude/avrdude -v -p avr128db28 -P usb -c pkobn_updi -U flash:w:main.hex

avrdude: Version 6.3-20171130
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch

System wide configuration file is "C:¥Devz¥AVR¥avrdude¥avrdude.conf"

Using Port : usb
Using Programmer : pkobn_updi
avrdude: Found CMSIS-DAP compliant device, using EDBG protocol
AVR Part : AVR128DB28
Chip Erase delay : 0 us
PAGEL : P00
BS2 : P00
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 0
StabDelay : 0
CmdexeDelay : 0
SyncLoops : 0
ByteDelay : 0
PollIndex : 0
PollValue : 0x00
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
prodsig 0 0 0 0 no 125 125 0 0 0 0x00 0x00
fuses 0 0 0 0 no 9 16 0 0 0 0x00 0x00
fuse0 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse1 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse2 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse4 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse5 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse6 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse7 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse8 0 0 0 0 no 1 0 0 0 0 0x00 0x00
lock 0 0 0 0 no 4 1 0 0 0 0x00 0x00
data 0 0 0 0 no 0 0 0 0 0 0x00 0x00
flash 0 0 0 0 no 131072 512 0 0 0 0x00 0x00
eeprom 0 0 0 0 no 512 1 0 0 0 0x00 0x00

Programmer Type : JTAGICE3_UPDI
Description : PKOB nano (nEDBG) in UPDI mode
ICE hardware version: 0
ICE firmware version: 1.17 (rel. 514)
Serial number : MCHP3280031800001375
Vtarget : 3.31 V
JTAG clock megaAVR/program: 0 kHz
JTAG clock megaAVR/debug: 0 kHz
JTAG clock Xmega: 0 kHz
PDI clock Xmega : 100 kHz

avrdude: Partial Family_ID returned: "AVR "
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e970e (probably avr128db28)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "main.hex"
avrdude: input file main.hex auto detected as Intel Hex
avrdude: writing flash (2398 bytes):

Writing | ################################################## | 100% 0.79s

avrdude: 2398 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex auto detected as Intel Hex
avrdude: input file main.hex contains 2398 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.43s

avrdude: verifying ...
avrdude: 2398 bytes of flash verified

avrdude done. Thank you.


> Process Exit Code: 0
> Time Taken: 00:02



●最後にATMega4809を試す

こちらは3月くらいに秋月さんから販売されだしたmegaAVR-0シリーズの品種になります。
AVRDA/DBと比べると1世代前の品種になります。こちらもフラッシュ書き込みはUPDIと
なっています。


とりあえずCuriosityNanoで書いてみる
> "C:¥Devz¥Coreutils¥bin¥make.exe" program
C:/Devz/AVR/avrdude/avrdude -v -p atmega4809 -P usb -c pkobn_updi -U flash:w:main.hex

avrdude: Version 6.3-20171130
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch

System wide configuration file is "C:¥Devz¥AVR¥avrdude¥avrdude.conf"

Using Port : usb
Using Programmer : pkobn_updi
avrdude: Found CMSIS-DAP compliant device, using EDBG protocol
AVR Part : ATmega4809
Chip Erase delay : 0 us
PAGEL : P00
BS2 : P00
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 0
StabDelay : 0
CmdexeDelay : 0
SyncLoops : 0
ByteDelay : 0
PollIndex : 0
PollValue : 0x00
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
prodsig 0 0 0 0 no 61 61 0 0 0 0x00 0x00
fuses 0 0 0 0 no 9 10 0 0 0 0x00 0x00
fuse0 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse1 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse2 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse4 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse5 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse6 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse7 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse8 0 0 0 0 no 1 0 0 0 0 0x00 0x00
lock 0 0 0 0 no 1 0 0 0 0 0x00 0x00
data 0 0 0 0 no 0 0 0 0 0 0x00 0x00
usersig 0 0 0 0 no 64 64 0 0 0 0x00 0x00
flash 0 0 0 0 no 49152 128 0 0 0 0x00 0x00
eeprom 0 0 0 0 no 256 64 0 0 0 0x00 0x00

Programmer Type : JTAGICE3_UPDI
Description : PKOB nano (nEDBG) in UPDI mode
ICE hardware version: 0
ICE firmware version: 1.17 (rel. 514)
Serial number : MCHP3280031800001375
Vtarget : 3.31 V
JTAG clock megaAVR/program: 0 kHz
JTAG clock megaAVR/debug: 0 kHz
JTAG clock Xmega: 0 kHz
PDI clock Xmega : 100 kHz

avrdude: Partial Family_ID returned: "mega"
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.07s

avrdude: Device signature = 0x1e9651 (probably m4809)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "main.hex"
avrdude: input file main.hex auto detected as Intel Hex
avrdude: writing flash (5344 bytes):

Writing | ################################################## | 100% 2.07s

avrdude: 5344 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex auto detected as Intel Hex
avrdude: input file main.hex contains 5344 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.02s

avrdude: verifying ...
avrdude: 5344 bytes of flash verified

avrdude done. Thank you.


> Process Exit Code: 0
> Time Taken: 00:03



最後にファーム入れ替えたXplainedから。えらいにぎやかになりました。
ATmga4809はXplainedでも書けます。
> "C:¥Devz¥Coreutils¥bin¥make.exe" program
C:/Devz/AVR/avrdude/avrdude -v -p atmega4809 -P usb -c xplainedmini_updi -U flash:w:main.hex

avrdude: Version 6.3-20171130
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch

System wide configuration file is "C:¥Devz¥AVR¥avrdude¥avrdude.conf"

Using Port : usb
Using Programmer : xplainedmini_updi
avrdude: Found CMSIS-DAP compliant device, using EDBG protocol
AVR Part : ATmega4809
Chip Erase delay : 0 us
PAGEL : P00
BS2 : P00
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 0
StabDelay : 0
CmdexeDelay : 0
SyncLoops : 0
ByteDelay : 0
PollIndex : 0
PollValue : 0x00
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
prodsig 0 0 0 0 no 61 61 0 0 0 0x00 0x00
fuses 0 0 0 0 no 9 10 0 0 0 0x00 0x00
fuse0 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse1 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse2 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse4 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse5 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse6 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse7 0 0 0 0 no 1 0 0 0 0 0x00 0x00
fuse8 0 0 0 0 no 1 0 0 0 0 0x00 0x00
lock 0 0 0 0 no 1 0 0 0 0 0x00 0x00
data 0 0 0 0 no 0 0 0 0 0 0x00 0x00
usersig 0 0 0 0 no 64 64 0 0 0 0x00 0x00
flash 0 0 0 0 no 49152 128 0 0 0 0x00 0x00
eeprom 0 0 0 0 no 256 64 0 0 0 0x00 0x00

Programmer Type : JTAGICE3_UPDI
Description : Atmel AVR XplainedMini in UPDI mode
ICE hardware version: 0
ICE firmware version: 1.13 (rel. 43)
Serial number : ATML2678020200007560
Vtarget : 5.00 V
JTAG clock megaAVR/program: 0 kHz
JTAG clock megaAVR/debug: 0 kHz
JTAG clock Xmega: 0 kHz
PDI clock Xmega : 0 kHz

avrdude: Partial Family_ID returned: "mega"
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.09s

avrdude: Device signature = 0x1e9651 (probably m4809)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "main.hex"
avrdude: input file main.hex auto detected as Intel Hex
avrdude: writing flash (5344 bytes):

Writing | ################################################## | 100% 1.72s

avrdude: 5344 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex auto detected as Intel Hex
avrdude: input file main.hex contains 5344 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.38s

avrdude: verifying ...
avrdude: 5344 bytes of flash verified

avrdude done. Thank you.


> Process Exit Code: 0
> Time Taken: 00:04



こんな感じで市販のライタをそのまま流用もしくはファームだけ入れ替えという
アマチュアリズムに反する行為になってしまいましたが2000円ちょっと出して電圧
変換機能付きのUPDIプログラマ買えるのならもうこれでいいかなと思いまし、た!



●残る問題、フラッシュ領域のリードはどうなった?
そういえばMicrochip体制のtinyAVRからフラッシュ領域のアドレスがデータ領域のアドレスに
変換され割り振られPROGMEMを使わなくても一般的なC言語のconstのように定義したら自動的に
コンパイラが割り当ててくれるようになってくれるはずですが実際にアセンブルリストと
照らし合わせてみてみましょう。


まずATMega1284p
main.cのグローバルにconst charの文字列リテラルをPROGMEMとか使わず定義した場合、
フラッシュ領域のアドレス(0x800000以降)に配置されてしまいます。
このままLPMとか使わずに参照してしまった場合はコンパイラがRAMから読み出すような
ルーチンに変えてしまいます。


続いてATMega4809の場合、ごらんのとおりデータ領域のアドレスに配置されるようになり
ます(実際のデータはプログラムアドレス0x800000以降にある)


AVR128DA/DBは御覧の通り従来のAVRと同じになってしまいます。実はATmega4809と違って
制約があり、データ領域は64KB以内のアドレスしか参照できないためさらにI/Oの分も
差っ引かれて実際には最大4832kByte分しか参照できないことからくると考えられます。
まぁこれAVRのアーキテクチャーの宿命なので仕方がないのですけど128kByte分フルに参照
せしめるためには10年前にねむいさんが行った手法でもってしてやないといけません
※みなぎ氏の調査によるとAVR32DAとか32kbの品種だとだと4809と同じようになるそうです。

PCベースUSBオシロスコープPicoScope5444Dを使う

●誰が豚に真珠や
今からさかのぼること10年前、超円高時代に有利な価格で売られていたPicotech製の
USBオシロPicoscope3206Aを秋月さんより購入し、自作環境の測定器として使ってきました。

そして2021年、満を持して機能を強化した上位モデルの購入に踏み切りました!!




そして我が家にやってきたPicoscope5444D!
アナログ帯域は個人では十分な200MHzで4CH使えてサンプリングもMAX1GS/Sec、
且つMSO(ミックスドシグナルオシロ)と呼ばれるちょっとしたロジックアナライザポートも
備えています!1!111!!

さらに下位モデル3000シリーズの差別化として5000シリーズではFlexResと言って
ハードウエアでサンプリングビット数を最大16bitまで可変が可能です!!!!


2011年のころは4CHオシロとか200MHzで1GS/Secとか100万越えの奴しかまともなの
なかったはずですが現在では選択肢も増えて価格も大幅に下がりねむいさんの資金力
でも十分に手が届く価格となってきたので購入に至った経緯があります。

最初は送料込みの総額が一番安いAmazonで買おうかと思ってたのですが納期が未定に
なってしまったためヤマト科学という計器卸売の商社さんから買いました。
お値段は税込み送料込みで301000円でした。アマゾンも2000円ちょっとしか変わり
ませんけどねなんというか消費税だけで3万近くもするってめっちゃやばいですね
ああそうだ10年前はまだ消費税5%時代だったからていうかもう10年もたってるじゃんか
あああああああaAあああああああぁああああ!!!11!!!1111!



ゲフンゲフフン失礼しました。なお、Picoscopeは英国製のため、ポンド/米ドルと米ドル/円
の為替レートにより日本円で買える値段が大幅に変わりますのでご注意ください。


●とりあえず使ってみようぜ
とはいえ以前の3206Aと操作感覚は変わりません。オシロを操作するためのPCソフトは
数万の格安モデルから100万越えの最高性能モデルに至るまで同一のものが使用できます。


4CH全部使用したところです。
3206Aと比べてCHが4つに増えた以外は違いはありませんね★


なお、ねむいさんが買った4CHモデルは外部電源を接続しないと2CHまでしか使えません。
(MSOポートもMAX2CH分扱い、計6CH分となる)


●Picoscopeの真骨頂プロトコルアナライザ機能を使う
まぁこれも3206Aで紹介してますが改めて。
Picoscopeのソフトは2012年あたりにロジアナのお株を奪うシリアル信号のプロトコル
アナライザの機能が搭載されています。


まずはI2Cバスでやってみましょう。
画像のシリアルデコードの項目を選びます。


オシロのA(CH1)とB(CH2)をSDA,SCLに割り当てました。


I2C信号のやり取りは拙作のSTM32F030-NucleoのI2C液晶とSTTS751の温度表示プログラム
を実行したところです。

CSVファイルに出力して後から解析も可能です。
STTS751の温度データを取得しているところがよく分かると思います。



このプロトコル解析はロジアナポート(MSOポート)でも当然のように使用可能です。
ていうかこのMSOポートはこういう用途に積極的に使うべきですね。


MSOでトリガかけるときは設定方法にちょっとコツがいります。
いちいち設定するのは忘れがちで骨が折れます。


一度こういう特的目的の信号の測定を設定したらファイル->保存で設定ファイルを
保存しそのファイルをダブルクリックで起動すると再び同じ設定で測定が可能です。

このプロトコルアナライザの機能、実はかなり使えます。最初はUARTとI2Cくらいしか
なかったのですが、現在はFlexRayやUSB1.1(FULLSPEEDまで)、SPIも解析可能となり
非常に強力なツールとなりました。ちょっとしたシリアル信号の解析ならロジアナを
引っ張り出す必要もなくなりました。




そんなわけでねむいさんが学生時分の頃はまさに"高値"の花で全く手が出なかった
オシロスコープは現在では実務にもバリバリ使えるレベルで個人でも手が届くような
値段で手に入るようになりました。

据え置き型との対比としては"PCがないと使えない"という最大の弱点がありますが
もはやPCは一家に数台な時代ですしテクトロの1000万クラスの据え置きオシロも
中身はWindowsOSで動いてるまさに一体型のパソコンオシロみたいなもんですので
個々の環境や測定対象に合わせて使いやすいものを選択してくのがよいでしょう。

Go to top of page