「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



https://twitter.com/aroerina2/status/1305458727944814598

>DIPの足揃えるやつ印刷した

おぉ、これすごい便利そうだなぁ。DIP ICの脚が微妙に
広がってるやつを、いっぺんにそろえてユニバーサル基板
に簡単に挿さるようにするやつ。
耐久性は大丈夫なのかなぁ?




こないだ、Arduino用のG-LCD・OLEDオレオレライブラリを
改造して、128×64ドットのうち、任意のエリアだけにVRAM
を割り当てして、それ以外は文字(+ビットマップ表示)
表示だけできるようにしようと思ってた件。ちょっと進めたい
ので、Cのファイル分割周りをもうちょっと調べる。

128×64ドット固定のライブラリしか見当たらない中、自作
のオレオレライブラリなら好きなように改造できるだろう
と思って、現在はVRAMサイズを固定サイズで(ライブラリ側
で)定義しているのを、実行時に可変サイズで定義できる
ようにしようと思って、こないだちょっとあれこれやってたら、
なんかエラー出まくってしまった件。

中途半端にC++のnew演算子使うのをやめようかなと。malloc
使って、旧C言語スタイルで書き直してみれば、もっと簡単に
行くんじゃないかなと。
で、いつもファイル分割周りはうろ覚えなので、あらためて
検索して、色んなページを眺めているところ。

https://dixq.net/forum/viewtopic.php?t=5849

https://teratail.com/questions/109790

https://www.asahi-net.or.jp/~uc3k-ymd/Lesson/Section02/section02_07.html

まだ読んでるところ。ちょっとソースいじりなおして、
実行時にメイン側でサイズ指定して、動的確保して、
それをライブラリ側と共有させるという目論見。

上手く動くようになれば、ドット表示(ライン描画とかも)
ができるエリアだけVRAMを確保しておいて、残りの部分は
文字表示とかで常時上書きするイメージにすれば、2kBしか
メモリが無いArduino Unoなんかでも、G-LCD・OLED使った
描画がもっとお手軽になるんじゃないかなと。

実際、全画面をVRAMに割り当てる必要がないアプリって
いうのもたくさんあるはずで、長いこと作成中のArduino
オシロについても、使えるメモリがもうちょっと(数百B
単位で)増えれば、Unoでも十分だったりするんじゃないか
と思っているところ。

何と言っても、VRAMに1kB食って、さらにオシロのメイン
処理+FFTまで入れてあるので、古いバージョンのIDEで
コンパイルすると10Bとか20BとかしかSRAMが残らない
って感じだったんだけど、IDEのバージョンが上がったら
とうとう動かなくなっちゃって、頓挫してるんだよな。

そのライブラリを作るのが早いか、それともArduino
Nano Everyでリライトするのが早いか…。

まぁ、両方の線で進めたいんだよな。




https://www.watch.impress.co.jp/docs/news/1277445.html

>ソニーセンサーで星を増感して観測する「eVscope」。
>都市でも天体観測

ほほう。すごいなぁ。これ。




ポン子、先週くらいに、一気にチャンネル登録者が増えて、
あっという間に10万人達成して、銀盾範囲内に。

なんか、その関係か、「夢野久作」の「梅のにおい」の動画
がサジェストされてて、あれはやっぱ当時のコメント付き
の動画で見たいよなと思って発掘。

https://www.youtube.com/watch?v=TPhyVs7GDOg&t=18m28s

シュールすぎて大好きな回。

あと、この日の

https://www.youtube.com/watch?v=TPhyVs7GDOg&t=27m42s

マザロの暴走も面白かったんだよな。




https://twitter.com/AonekoSS/status/1306262082296229888

>その変態的な後方互換性は、ちゃんと評価すべき
>ポイントだと思うんよ。

Ysシリーズ、特に256色モードの1、2が結構動かないん
だよな。あれが本当に困ってしまう…

あと、それ以降のバージョンも、ちょっとずつ動かない
ところがあったりして、Windows10への移行の支障に
なってたりするんだよな。

Windows自体はともかく、direct-Xの互換性がな…




https://twitter.com/iruka3/status/1306390483434786817

うん。PS5のマシンにWindows入れて、ソニーは販売したら
いいよ、きっと。この値段なら絶対売れると思う。




https://twitter.com/saharabingo/status/1306542468200976384

青二才。




https://www.youtube.com/watch?v=wMeYy7de2zc

飯田章が若いのはともかく、やっぱS2000はいいなぁ。
あと、40km/hで峠を走っているはずなのに楽しそう。




東京駅北側の開発やってるところ、

https://news.yahoo.co.jp/articles/cf49df6a6bb3e341f14747b1ba6b60e9492128a3

こんな風になるのか。

https://twitter.com/budoucha/status/1306497246511337474

それにしても、名前が「Torch Tower」っていうのを聞いて
最初に思い出したの、何と言っても「タワーリング
インフェルノ」だな。マックイーン。
ただし、この”水力発電”って書いてあるのがビルの一番上
じゃなくて、真ん中へんにあるから、それより上はアウト
だな。

http://www.onon.jp/~onon/game/PC8001/FireRescue.html

PC-8001のFIRE RESCUE思い出した。





https://twitter.com/takijikani1929/status/1306230661770960907

上手いな。





https://news.yahoo.co.jp/articles/a9092d4e08ed4f7569d1c1e92f6cf2c4e31c62a4

>強い毒持つ『ヒアリ』700匹以上を発見 駆除し周辺
>への広がりを調査へ

名古屋港のことらしい。




コメント ( 0 )




https://www.youtube.com/watch?v=0p2legRJZxo

最近、ICHIKENさんの動画の方向性がだいぶ変わってきた
感じがあるんだけど、今回はものすごかった。
特に、サムネの絵がすごかったんだけど、そのシーンは
1分20秒くらいのところ。

あと、ソーセージを使ってLチカしている人を初めて見た。





ここのところ読んでた、Web技術速習テキスト。

https://tatsu-zine.com/books/web-tech-text

Python関係ばかりじゃなくて、あれこれ触れられてるので、
web系を初めていじってみる人にはとてもイイカンジでは
ないかなぁって思ってたところ。

とりあえず一通り読み終わった。とはいえ、Python+
Flaskはちょっとしかいじったことないので、せっかく
読んだので、手を動かしてみないともったいないよなと
思ってるところ。

Railsと、Python+Flask、どっちがいいのか、ちょっと
悩むところなんだけど、なんとなく、色んなフレームワーク
を好きなように取り込めるPython+Flaskの方がいいんじゃ
ないかな、っていう気がしてるんだよな。
なんっていうか、Railsは、レールを敷いてしまったせいで、
硬直化してしまっている感じがぬぐえない…

とはいえ、何でもかんでも新しいフレームワークを取り込めば
いいって思ってるわけでもなくて、できれば最小限の基盤で
済ましたいっていうのもあって、なかなか悩ましい…。



あと、達人出版会といえば、気になってる本があって、

https://tatsu-zine.com/books/sound-source-separation-with-python

「Pythonで学ぶ音源分離 機械学習実践シリーズ」

音源分離については、オイラ興味津々なんだよな。
これ、ぜひ読んでみたいなと。





https://www.youtube.com/watch?v=uGLSbKhOzUc

さすが、ななちゃん、新潟出身だけあるなと思ったけど、
まさか、カレーを、ルーの方だけ先に食べて、あとで
残った白米だけ堪能するとか、予想外だった。




https://news.yahoo.co.jp/articles/4ea1d8a26c554bf4c27e175d0c0e262aadb070c5

気象庁サイトに広告、不適切広告で配信停止。

どんな広告だったんだろうな。





https://mainichi.jp/articles/20200916/k00/00m/010/340000c

桜を見る会、来年以降中止することで、今後の捜査
まで取りやめなんてことを画策してるんだろうな。
ミスディレクションだな。




https://twitter.com/nitadorikei/status/1305897982068318208

>出版業界に緊急事態が発生しています。
>これを通されたら小さい出版社はのきなみ潰れ、
>ちょっとマニアックな本はぜんぶ消滅します。

これは由々しき問題だなぁ。
そもそも、内税表示ってモノ自体、消費税増税を
しやすくするためのマジックなわけで、本に限らず
全て税額を見えるようにしないって時点で、消費者
(=納税者)をだます行為だと思うんだよな。





職場の同僚に、「新しいZ見た?」って言われて、ひとまず
6速MTが設定されてるっていう話だけ聞きましたよって
話をしたんだけど、どうやらその人曰く、デザインがかつて
のZを彷彿させる感じで、とてもいいっていうことだったので、
ちょこっとYoutubeとかで見てみた。

なんかZっぽいデザインではある。確かにZといえばZだな、
っていうデザイン。
ただ、フロントの長方形のグリルがなんとも…って思った
んだよな。でも、なんだかんだで、歴代Zって、フロントの
長方形があったんだなぁ…知らなかった。

https://www.youtube.com/watch?v=0CP-1w9hv_8





あぁ、お出かけしたい。

https://twitter.com/vgm_robot_GACHA/status/1305848920568856577

ダンゴムシが復活してる!

https://twitter.com/VGM_Robot/status/1304299862079356929
https://twitter.com/VGM_Robot/status/1304299523649404929

あぁ!!アウターゾーンは無くなってしまったのか!!
残念至極。もうちょっとうまくなりたかったな。また稼働
する日を待ち望もう。
サスケVSコマンダが動いてるのか。これはぜひやりたい。

https://twitter.com/VGM_Robot/status/1303710212692480000

おぉ、スパルタンX!!これもやりたい。

https://twitter.com/VGM_Robot/status/1300640033930579970

バラデュークも稼働してるのか。

なんだかんだで、遊びに行ったらあれこれやりたいマシンが
あるわけだから、ふと思い立ったら遊びに行くのがいいん
じゃないかな、って思った。というわけで、気が向いた時点
で遊びに行こう。




コメント ( 0 )




webで取引明細見れない古いキャッシュカード、ようやく
残高を見てきたんだけど、とりあえず大丈夫っぽかった。

といっても万単位で見てるので、それ以下の細かい金額
だと抜かれてても判んないけど。
あと、最近だけじゃなく、何か月も前からっていう話も
あるので、それだとよくわからんよのね。もはや。




https://brown.ap.teacup.com/nekosan0/4335.html

こないだAliexで注文してた、ジャンパーソケット60個
の3セット。もう届いた。

https://ja.aliexpress.com/item/32827199777.html

と思ったんだけど、調べたら9/1に注文してたんだな。
もう2週間経ってるのか。重さを計って、3つのうち2つは
少し軽かったので、その片方の個数を数えたら、60個
ちょっと入ってるみたいだったので、とりあえず受領
確認しておいた。
合計180個以上ってことになったみたいなので、もう
しばらくの間買う必要なさそう。

あと、一緒に頼んでた怪しいSSDも届いた。120GB
なので黒いボディー。

https://ja.aliexpress.com/item/32803877510.html

オイラが使うんじゃなく、大事なデータを保存するわけ
でもないので、それっぽくSSDならいいやと。色々と
調べてみた範囲では、このメーカーのSSDは、NANDチップ
もコントローラも、値段不相応なあのメーカーやあの
メーカーが使われているらしいので、あとははんだ付け
とかの製造レベルの信頼性の問題になるんだよな。
まぁ、用途から考えてあまり心配する必要もないだろう。

https://twitter.com/h164tan1/status/1305446242000859137

SSD、確かに値段下がり気味なんだけど、テレワーク需要
が一段落して、もう品物がだぶついてるのかな。





https://www.sponichi.co.jp/entertainment/news/2020/09/15/kiji/20200915s00041000128000c.html

訃報。沙悟浄。おいら、西遊記すごい好きだったんだよな。
合掌。




https://twitter.com/nikkei/status/1304907358888370178

ソフトバンク、ARMをNVIDIAに売却。結局、なんで買ったんだ
ろうなぁ?大きな動きはなかったよなぁ。
業界再編とか大ごとになるんだろうと思っていたのに、大して
変化はなかったな。で、確か3兆円くらいで買ったと思うんだ
けど、売却でキャピタルゲインはあったのかな?




https://twitter.com/niconicholson/status/1304671936841043968

パナソニックは、国内のスマホからすでに撤退して
しまったような。




https://twitter.com/nixcraft/status/1305058998287097856

コミュニケーションギャップ。




https://twitter.com/mucom88/status/1172055548541276160

オイラのココロのお師匠様。
ただ、エプソン互換機使い始めてからは、Z80からは
殆ど縁がなくなってしまったんだよな。もはや、あの
直交性のないレジスタでアセンブラのプログラム書くの、
ちょっと無理だな…。

それにしても、あの88SRのALUのアクセスって、面白い
仕組みだったよな。あれ使って、グラディウスみたいな
画面消去するプログラム作ったりしてた。速かったな。




https://twitter.com/tokihiro_naito/status/1305710452035342336

P8のセミグラエディタ。これはスゴイな。弄り回して
みたいなぁ。

P8で、アトリビュートエリアがぐちゃぐちゃになりそう
な感じの表示させたときに、実際にアトリビュートが
どうなってるのか、目で見たいなとか思ってたんだよな。
当時。
でも、下手にいじると画面の表示が変わっちゃったり、
スクロールして位置が変わっちゃったりするから、
色々難しかった。





https://twitter.com/haya2_jaxa/status/1305463192533913600

はやぶさ2。もうすぐ戻ってくるんだな。




https://twitter.com/felis_silv/status/1305475799949008897

うーーーん。
  0.09÷0.09 = 1
つまり、むしろほぼ消エタと言っていいんでは?



コメント ( 0 )




https://tonarinoyj.jp/episode/13933686331708336402

なんんと、数日でワンパンマン更新来てた。早いな。
4日だ。その前が結構あいてたからかな。





Arduino Nano EveryのADC、こないだ調べたように、素の
ままでは、Mega328コア(Unoとか)と同様に、毎秒
9000回弱といったところだった。
で、こないだの消化項目(1)(2)を調べたいなと。

で、まずは(2)を調べるために、SFRの設定内容を
ダンプしたい。

調べた範囲では、どんなコード(タグ)を使ったら
ADC関係のSFRをいじれるのかがよくわからなかったので、
思いつく感じでコードをでっち上げてみて、うまく動く
方法を探しながらやってみた。


結果、こんなコードを書くと、ADC関係に設定された
SFRを読み出すことができたので載せておく。
(例によって、1行1行空いてしまうのはこのブログ
サービスの仕様なので、手修正で行を詰めて使って
ください)
void setup() {
  Serial.begin(9600);
  //int a = analogRead(A0);
}

// the loop function runs over and over again forever
void loop() {
  Serial.print("CTRLA    : ");
  Serial.println(ADC0.CTRLA, BIN);

  Serial.print("CTRLB    : ");
  Serial.println(ADC0.CTRLB, BIN);

  Serial.print("CTRLC    : ");
  Serial.println(ADC0.CTRLC, BIN);

  Serial.print("CTRLD    : ");
  Serial.println(ADC0.CTRLD, BIN);

  Serial.print("CTRLE    : ");
  Serial.println(ADC0.CTRLE, BIN);

  Serial.print("SAMPCTRL : ");
  Serial.println(ADC0.SAMPCTRL, BIN);

  Serial.print("MUXPOS   : ");
  Serial.println(ADC0.MUXPOS, BIN);

  Serial.print("COMMAND  : ");
  Serial.println(ADC0.COMMAND, BIN);

  Serial.print("EVCTRL   : ");
  Serial.println(ADC0.EVCTRL, BIN);

  Serial.print("INTCTRL  : ");
  Serial.println(ADC0.INTCTRL, BIN);

  Serial.print("INTFLAGS : ");
  Serial.println(ADC0.INTFLAGS, BIN);

  Serial.print("DBGCTRL  : ");
  Serial.println(ADC0.DBGCTRL, BIN);

  Serial.print("TEMP     : ");
  Serial.println(ADC0.TEMP, BIN);

  Serial.print("RES      : ");
  Serial.println(ADC0.RES, BIN);

  Serial.print("WINLT    : ");
  Serial.println(ADC0.WINLT, BIN);

  Serial.print("WINHT    : ");
  Serial.println(ADC0.WINHT, BIN);

  Serial.print("CALIB   : ");
  Serial.println(ADC0.CALIB, BIN);

  for(;;);
}


各タグについては、データシートの「29.ADC」のところに
にそれぞれ説明があるので、ご参照あれ。

http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega4808-4809-Data-Sheet-DS40002173A.pdf



で、こいつを実行して、シリアルモニタを開くと、
こんな風に出てくる。

(なお、setupにある最初の1回目の読み取りをコメント
アウトすると、初期化されていない状態のADC関係の
SFRをダンプできるので、比較してみるとちょっと面白い。
あと、サンプリング結果は8ビットを超えるので、RESに
どんなふうに入ってくるのかなぁ?と思ったら、ちゃんと
ここに10ビットデータで入っていた。これはなかなか)



さて、このシリアルモニタに表示された内容のうち、今回
一番大きな意味があるのは、「CTRLC」(コントロールC)
で、特にその下位3ビットはADCサンプリング速度にかかわる
「プリスケーラ」の設定。
設定値を見ると、「0b110」(=0x6)になっている。つまり
プリスケーラはデフォルトで128に設定されていることが
判った。
これは、Mega328と同じなので、16MHzで動かしてるUnoも
Nano Everyも、同じプリスケーラだから同じサンプル速度に
なるのは当然だったことが判った。







というわけで、(2)については判った。

なので、(1)の実験をやってみることにする。ADC関係
のSFRにアクセスする方法は判ったので、プリスケーラに
任意の値を設定して、ADCのサンプル速度を計測してみる
ことにする。

こんなコードをでっち上げた。ADCを1回行うごとに、D13
の出力をトグルするので、D13端子に出力される周波数
を計測して、2倍すればサンプル周波数が判るという次第。


ちなみに、プリスケーラの設定値と、サンプル周波数の関係
は、こんな具合。(あとで計算に必要な部分なので、簡単に
計算式を挙げておく)

 16MHz ÷(プリスケーラ値)÷ 13 =(サンプル周波数)

(CPUのクロック16MHzをプリスケーラで分周したものが
 ADCのベースクロックで、そのベースクロックの13回分
 で、1回のADCが完了するので、こういう計算式)


プリスケーラを自由に設定できるようにしてあるので、
計算上Mega4809の最大精度(10ビット)でサンプリング
できる範囲で設定するとして、プリスケーラをひとまず
「16」(データシート上は)で設定してある。

(まぁ、個体によっては「8」に設定しても、10ビット
精度が丸々確保できるんじゃないかなぁって思うんだけどな。
プリスケーラ8ならば。あとこのくらいの設定値で影響が出る
のは、ADCの入力値がサンプルごとに0→1023→0→1023…
みたいに、最大振幅かつ最大周波数となるような矩形波を
入力するような極端な時だと思うので、通常の使い方であれば、
精度に影響が及ぶこともないんじゃないかな)


ってことで、まずはプリスケーラを16としてサンプル周波数
を計算してみたんだけど…

理論値上は、76.923kspsとなるはずなのに、実際に計測
してみた結果としては、58.62kspsになってしまった。
ちょっとだけ遅い…。

あれこれプリスケーラをいじって計測してみると、どうやら
1回のADC処理の間に、なんらかのオーバーヘッドが生じて
いるっぽいなぁ。
なので、理論値ほど高速にはサンプリング出来なさそう。

各プリスケーラの設定値ごとに、実測と理論値を求めて、
表にして、グラフ化したらこんな具合。



どうやら、理論値と実測値に大きく差異が生じるのは、
プリスケーラが16のあたりからみたい。
一体なにがこういうオーバーヘッドを生じさせている
のかは、コアコードが見つからなかったので、よく
判らなかったんだよな。何かが悪さしていることだけは
確かなんだけど。
(Mega328のコアなんかはすぐに見つかるんだけど、
Mega4809のコアって、どこに置いてあるんだろう?)


まぁひとまず、サンプル周波数が判って、1回のサンプル
時間も判った。



Arduino Uno(互換機)で作りかけだった、Arduinoオシロ
を、Mega4809の「Arduino Nano Every」の6KBのSRAM使って
先に進めるとして、最大精度でサンプリングをさせると
なると、プリスケーラを16に設定することになる。

…んだけど、そうすると最大のサンプリング頻度は、多少の
余裕値を見て、50kspsくらいになるんだろうな…。これだと、
アナログ帯域で考えたときに、せいぜい10kHzくらいが見える
感じだよな。


やっぱ、この2倍くらいは欲しいんだよな。100ksps程度
にするためには、プリスケーラは8にしたい。まぁ、8に
しても、最大精度までは届かなくても、9ビット精度くらい
にはなるだろうし、個体によっては多分最大精度が出る
くらいなので、あまり気にせず、プリスケーラを8に設定
しちゃうのがいいんじゃないかな、っていう気がしてる
ところ。

ただ、プリスケーラを8にしても、実は100kspsには
ギリギリ届かないんだよな。実測では97kspsなので、
実用上はせいぜい80kspsくらいが限界だろう。
アナログ帯域20kHzを眺めるには、ギリギリボーダーといった
感じ。(なお、プリスケーラ8の時の理論値は153.846ksps
なんだよな…なんか微妙に残念)

でもまぁ、とりあえず直近で知りたかったあたりの情報
が整理できた気がする。うん。

(Arduino内部で使ってる割込み関係を、必要最小限に
して、要らない部分を禁止してしまえば、もう少し
速度上げられるのかなぁ?)



あとは、TimerOneライブラリがNano Everyに対応して
ないので、タイマ割込み関係をどうするかを考えないと
いけないんだよな。

https://playground.arduino.cc/Code/Timer1/





https://kuruma-news.jp/post/294297

新しいフェアレディーZ。6速MTモデルがあるみたい。

Zへの思い入れは、無くはないし、FR(多分)でMTって
だけで、存在意義がすごいんだけど、Zを買って乗ろう
っていうのは、昔からキモチが沸かないところがあるん
だよな…。なぜかは解らないんだけど。

日産車だからかなぁ?






https://news.yahoo.co.jp/byline/mamoruichikawa/20200911-00197625/

この冬(北半球の夏)に、南半球でインフルエンザに
かかる人がびっくりするほど少なかったらしい。

まぁ、理由は解るよな。でも、この傾向が北半球の冬にも
当てはまってくれるのかはわからないところ。





https://twitter.com/wanpakuten/status/1304716057324601344
https://twitter.com/cooo55/status/1304740373709770752
https://twitter.com/MinaMaeda/status/1304137877752750080

何か変わったかといえば、むしろ何も変わらずに、
これまでの悪事を便所に流しておしまい…っていう
感じにしか見えないんだよなぁ。



コメント ( 0 )




ちょっとずつしか触ってないArduino Nano Every。
まだライブラリ類が充実していないので、タイマ割込み
とか色々困るところがあったりするんだけど、充実する
まで待ってるわけにもいかないので、あれこれ実験。

直近でやろうとしているのは、ADCを従来のMega328版より
高速に行うこと。
Mega328も、SFRをいじってやれば、Arduinoコアのデフォルト
設定でのADC速度より、少し速くADCを完了させることが可能
なんだけど、可聴域ギリギリ下といった感じ。(約15kHz)

Arduino Nano Everyは、Mega4809のデータシート眺めると、
Mega328よりも約一桁(大体8倍)速くADCを完了することが
できるようになってるみたい。
こないだも書いたけど、多分サンプル&ホールド回路の、
入り口の抵抗が小さくなってたりしてるんだろうと思う。

で、それをふまえてやりたいことはこんな。

(1)素のMega4809用コアで、ADCを行った場合に、1回
   あたりどのくらいの速度でADCが完了できるのか
(2)もしArduino環境では遅い設定になっているのであれば、
   SFRをいじれば速くできるのか?いじるとしたらどの
   レジスタ?ArduinoのC/C++環境からいじるとしたら、
   どういうコードを書けばよい?
(3)現状どのくらい速いのかを計測するコードをでっち上げて、
   速度を色々見比べてみたい
(4)(3)を行う上で、ICDとか使えないので、ADC1回ごとに
   デジタルI/O端子をトグルさせておいて、周波数測定
   したいんだけど、そもそもdigitalWriteは遅い(はず)
   ので、直接GPIO関係のレジスタをいじりたい
(5)レジスタエミュレーションは、Mega328のレジスタを
   エミュレーションしている都合、多分Mega4809
   ネイティブのレジスタアクセスよりも遅いはずなので、
   ネイティブのアクセス方法とレジスタエミュレーション
   を比較してみたい

というわけで、ものすごく迂遠なんだけど、(5)から逆方向
に調べを進めて行きたいなと。


まず、Arduino IDEのサンプルスケッチ「blink」を改造して、
digitalWriteじゃなく、直接SFRいじってblinkを行いつつ、
Delayで時間稼ぎもさせずに、最速でblinkを動かしてみる。

比較対象として、Mega328版のArduino(互換ボード)を
使って、「blink」のコードをこんな風に改造して動かして
みる。

 

Mega328だと、D13(オンボードLED)は、PORT BのPB5に配線
されているので、こんな風に、PORTBの5ビット目をトグル
させてやれば、手っ取り早く目的が達成できる。

で、D13の発振周波数を2倍(HIGHとLOWの分)してやると、
毎秒何回「ADC」と「GPIOへのデジタル出力」が行われて
いるかがわかるわけなんだけど、後者はADCの速度に比較
して極めて小さいので、ひとまず無視してもいいので、
測定した周波数が、1秒間に何回ADCできたかという値になる。

結果、1.987MHz。(これは2倍した後の値)
1秒間にだいたい200万回といったところ。これは、アセンブラ
使って効率的なコードでGPIOをトグルするのに比べれば、
ちょっと遅いといえば遅いんだけど、1回の出力あたりおよそ
8クロック程度の計算なので、まぁ、そんなに悪くないコード
が生成されているとみていいんじゃないかな。

で、懸案のMega4809なんだけど、ネイティブのSFR経由で
GPIOに出力するのは、Mega328とはちょっとコードが違う。
Mega4809のD13は、PORT EのPE2に配線されているんだけど、

https://content.arduino.cc/assets/Pinout-NANOevery_v1.png

このポートにアクセスするためのコードは、

https://tomalmy.com/gpio-on-arduino-nano-every/

https://forum.arduino.cc/index.php?topic=642614.0

このあたりに書かれていたりする。PORT Eであれば、
「PORTE.OUT」っていう変数に、出力したい値を代入
すれば、その内容がPORT E(8ビット分全体)に反映
されるという具合。
また、例によって、「|=」や「&=」といった代入を
使うことで、特定のビットだけを変更することも可能
なのは、Mega328のSFRなんかと一緒。

(ちなみに、色々実験してみた範囲では、ポート単位で
 8ビットまとめて入力することも可能だった。例えば、
 PORT Eなら、「VPORTE.IN」っていう変数を参照すれば、
 8ビット分のデータを読み出すことができた)

こんなコードで実行してみる。(Nano EveryのD13は、
PORT EのPE2なので、PORT Eの2ビット目をトグルする
コード)

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  //digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  VPORTE.OUT |= (1<<2);
  //delayMicroseconds(5);
  //digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  VPORTE.OUT &= ~(1<<2);
  //delayMicroseconds(5);
}


いざ実行して、計測してみると、2.648MHz(2倍した値)。
Mega328よりちょっと速いなぁ。コードの効率がいいのか、
それともGPIO関係の命令の実行速度が速いのか、その辺は
よくわかってないんだけど、少し速いみたい。ほう。
(1回あたり6クロックってことかな?)

さて、Mega328用のコードをレジスタエミュレーションを
通して動かすとどのくらい遅くなるのか…。さっきの
コードを使ってMega4809で実行して、計測してみる。

…2.648MHz。ん?同じだ。レジスタエミュレーションの処理
はいったいどこに行ってしまったんだ?こないだSPI接続の
G-LCDを動かすときにやってみた範囲では、微妙に遅くなって
いたはずなんだけどな。処理の仕方によるのかな…?
でもまぁ、思い切り遅くなっているというわけではないっぽい
ので、もしかしたらMega328用のレジスタエミュレーションを
そのまま使っちゃってもいいんじゃないのかな?という気が
してきた。


さて、(5)が出来たところで、次に(4)を確認してみる。
ADC 1回ごとにGPIOをトグルしてみて、毎秒どのくらいの
回数でADCが実行できるのかを計測してみる。

まず、Arduino Uno(互換)で、analogRead関数でアナログ
入力をするたびに、GPIO(D13)をトグルさせて、その周波数
を計測してみる。

Arduino Unoの場合は…毎秒8926回と出てきた。そうそう。
ADCの速度が結構遅く設定されているから、わざわざSFRを
いじって、最速でADCのサンプルが行える様にしてるきた
んだよな。(可聴域ギリギリでサンプルしたいって場合なら、
この2倍くらいのサンプル速度が欲しい)

※追記:可聴域(20kHz)で考えれば、標本化定理を元に
 すると、最低でも20kHzのさらに倍の40kHzは必要になる
 よなと思うので、少なくともこの「4倍」以上のサンプル
 速度は必要だな、と気づいたので訂正。


じゃぁNano Everyの場合は…毎秒8794回と出てきた。ん?
変わんないじゃん。Mega4809はもともともっと速い速度で
サンプリングしても、最大精度が実現できるのに、なんで
こんなに遅く設定されているんだろう?互換性を考えて
のことなのかなぁ?

なんにしても、こんなに遅い必要はなくて、こないだ調べた
範囲
では、8倍ほど速いので、単純計算では毎秒115,384回
のサンプリングを行っても、最大精度で行える計算。
可聴域の5~6倍。
これなら、可聴域よりはるかに高いサンプリングが
最大精度で行えるので、Mega4809はオシロとかに使うには
なかなか使い勝手が良い気がしているところ。

けど、この実験を鑑みるに、Arduino IDEのBOARD情報に
組み込まれている、Mega4809コアのADCの設定は、Mega328
のUnoと同じっぽいので、この性能を思い切り無駄にして
いるみたいだなぁ。



というわけで、(3)(4)は判ったので、(1)(2)
についてようやく調べる段階になった。

Mega4809のデータシートを読めば、どこをいじればADC
の速度を速くできるのかはすぐわかると思うんだけど、
次の問題は、ADC関係のSFRをいじるための、Arduino言語
上でアクセスする変数はどこかに書かれているのか?
ってあたり。
Mega4809関係のコアのソース読めば当然書いてあるん
だろうけど、読みたくない。宗教的な理由で。(手抜き
ともいう)
なので、とりあえず目星をつけて、「大文字」で「SFR
と同じタグ名」でアクセスしてみて、うまくアクセスが
できるかどうかを実験してみるってあたりから手を
付けてみるかなぁ。





https://twitter.com/mucom88/status/1303207102387687427

9月8日は、98の日だったらしいんだけど、そういえばと
ふと思う。8月1日に、これまで「ZX-81の日」っていう
のを聞いた記憶が無いんだよな。
で、ZX-81の日で検索してみたんだけど、なんかヒット
しなかったなぁ。やっぱ、マイナー過ぎなのかなぁ。

https://twitter.com/SuperturboZ/status/1304705218009948161

確か、ZX-81は、Z80搭載で、CPU自らビデオ信号を生成して
いたんではなかったかなぁ。

http://www.net.c.dendai.ac.jp/~anada/#a1





https://twitter.com/kmoroboshi/status/1304041785736347649

P8(正確にはpasocom mini PC-8001)でタイニーゼビウス
勝手移植版。すごいな。




https://twitter.com/navsite/status/1304261198364512256

pasocom mini PC-8001に、大型アップデートらしい。
あぁ、オイラこれ入手してないから、指をくわえて
見ているだけなんだよな。現状。
欲しいよな…





https://twitter.com/L_H_G/status/1302262367560986624

おぉ! PC-8001 Y's(ワイズ)。とても良い。
オイラの知ってるP8の範囲内なんだけど、クオリティーが
すごい。





https://twitter.com/taroohashi/status/1304223058178093056

コシロンのこのビデオ、見たいなと思ってまだ見てないん
だよな。





フィラメントのスプールを載せてグルグルするための
ホルダー。こないだこれとほぼ同じ(同一?)のを買った
のに、買った直後に安いやつ見つけちゃうんだよな…
250円くらい安かった。

https://ja.aliexpress.com/item/33040040443.html





https://twitter.com/HdAnchiano/status/1303798487830728705

スロー映像。これ面白いな。なんでこんな風に、上に
向かってカーブするような軌跡を取るんだろう?

あれか。落ち始めた直後は、落下速度がまだ遅いから
横に広がって、そのあと落下速度が増して来たら、
下に進む成分が大きくなって、横より下に進もうって
いう動きになるのかな。





https://news.yahoo.co.jp/byline/moriakira/20200912-00197787/

台風10号。予想より被害が小さかったっていう評価に
なっているけど、進路が微妙に西側だったからっていう
ことなんじゃないのかなぁ。

でも、中心気圧は高くなったものの、暴風域の範囲は、
当初の予報より広くなってたみたいだな。被害が大きく
なる暴風域が予想より広かったなら、予想以上に被害が
出ててもおかしくなかった。たまたま運が良かったって
ことなんだろうなぁ。

いま関東に近づいてる熱低は、西太平洋の温まった海面を
あまりかき回していないだろうから、次にあの海域で台風
が発生したら、やっぱり強烈な台風になっちゃったりする
んだろうなぁ。






そういえば、3Dプリンタのフィラメントを乾かしたり、
シリカゲルを乾かしたりっていう用途で、何気に布団乾燥機
って、「万能」なんじゃね?って思っていた昨今なんだけど、
もしかして、野菜を乾燥させたりするのにもバリバリ使え
たりするんじゃね?って思って、調べてみた。

https://www.youtube.com/watch?v=i3S26tW91HI

https://agripick.com/1565

やっぱり、やってる人いるんじゃんねぇ。自作している人が
ちらほら。

オイラ、レンコンを薄切りしてレンコンチップを作りたい
んだよな。
以前、リンゴ買ってきて、ネットでみた情報通りに
電子レンジでリンゴチップ作ってみたら、なんかイイカンジ
にはできなかったんだよな。(乾燥しきれないところと、
焦げが出来たところがあったり)

で、布団乾燥機で干したら、イイカンジのリンゴチップ
とかレンコンチップができるんじゃないかな?とか思って
居たところ。



コメント ( 0 )



« 前ページ 次ページ »