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



https://twitter.com/F__eqaul__kx/status/902392607484948480

コースは確かに、絶妙なところを狙ったんだろうなと
思ってたんだけど、やっぱ、周辺国もアメリカも、
文句の一つも言いたくなるだろうなぁ。


https://twitter.com/tokoya/status/902378300076523520

どう考えてもインサイダーで円買いに走った勢はいるん
だろうけど、北が自ら円買いに走った証拠押さえたら、
証券口座とか世界でまとめて凍結しちゃったりできる
んじゃないの?アメリカの銀行だけじゃなく。


https://twitter.com/everysuima/status/902288443849424896

発車。


https://twitter.com/teltan/status/902376574623801345

なんか落ちてきたらしい。


https://twitter.com/donarudo_100/status/902284047753158657
https://twitter.com/seisyounagon_/status/902310898919809025

日本へようこそ!!


https://twitter.com/jucnag/status/902395600036966404

改憲おじいちゃんのアピール。






昨日の続き。

MSXのジョイスティックポートで、ジョイスティック
とマウスは、何とか大丈夫だろうっていう裏は取れた
んだけど、4方向×2つのジョイスティック(X68kの
リブルラブルとかクレイジークライマーとか)で
使ってる通信とか、アルカノイドとかも使えない
かなぁ?とか思って、もうちょっと調べる。


https://blogs.yahoo.co.jp/dr_kikkie/25662078.html

パドルデバイスだと、アルカノイド付属のがあるみたい
なんだけど、これ、やっぱりMSX標準サポートのパドル
じゃなくて、独自信号みたい。
556とかバイナリカウンタとかシフトレジスタとか
使ってるっていうの、なんだろうねぇ?パルス幅の
調整してるのか、それともシリアル通信とか無理やり
実現しちゃってるのか…

1回で転送するとしたら、ボタンが1個ある以上、残り
の5ビットで表現するわけだから、32段階だよな。
これじゃだめだろうな。あとやれるとしたら、やっぱ
パルス幅なんじゃないのかな?
回路追ってみないと、やっぱ全然わからんな。

556は、ワンショットパルス+無安定マルチバイブ
レータだろうと思うんだけどな。


4方向2組でリブルラブルとかに使うパターンだと、
MSXとか6001は、以前回路追った範囲では、STROBEを
Lowにしたポートが有効ってことになるんだけど、
MSXや6001内部では、どっちのジョイポートも、
内部ではパラレル信号自体は結線されてて、同じ
ポートで読み出してたはず。

STROBE信号を使って、オープンコレクタで制御して、
どっちかのポートの方向/ボタン押下を検知してる
んだったよな、と。
なので、上手いことやると、4方向2個もSTROBEで
1ポートから読み出せるし、2個のジョイスティック
を2個のジョイポートに繋いでも、上手く動くはず
だよな、と。

https://sions-papa.blogspot.jp/2014/01/

動いたっていうお話はあり。

ただ、それをArduinoの少ないポートで、しかも
割り込みのオーバーヘッド考慮して、どうやって
制御したらいいのかなぁ?というのは難しい。
なにしろ実物(実機)が手元にないし、情報漁っても
みあたらない。MSXや6001と、X68kでは、内部回路
まで同じと考えて大丈夫なのか?が気になる。


目下のところ、オープンコレクタじゃなく、普通の
デジタル出力を念頭に置いてるんだよな。それが、
普通のジョイスティックと、リブルラブル用で、
片やデジタル出力、片やオープンコレクタだったり
すると、色々厄介。これらと、入出力と、割り込みと…
って、アプリケーションによって自由に切替が
できないと困るし。

なんにしても、ないと色々困るよな、ほんと。
だからといって、要件削りまくると、ユニバーサル
基板で十分にできちゃう程度だしなぁ。


一方、マウスとか諸々で、STROBE信号受けてから
パラレルデータを準備するような処理の場合について
も、もうちょっと詰める。
本当に、全レジスタを退避させてるのかなぁ?
コンパイラが、もっと賢く処理してないの?と。

https://ucexperiment.wordpress.com/2016/04/05/arduino-inline-assembler-tutorial-13-interrupts/

うん。

https://electronics.stackexchange.com/questions/117430/avr-gcc-timer-overflow-interrupt-handler-in-inline-assembly

うん。うん。

やっぱり、割り込み開始から、割り込み内ルーチン
までに、10クロックちょっとみたいだな。1マイクロ秒
くらいだよな。退避するレジスタが少ない場合なら。

裏取りのために、とりあえず久々にavr-gccで
シミュレータ動かしてみてみたいところ。ホントは
Arduinoでこれが実験できるといんだけど、ソフト
ウェアデバッガとか、ICDとか使えないからなぁ。


もっと割り込みのオーバーヘッドが大きいと思って
いたんだけど、このくらいならなんとかいけそう
なきがするなぁ。

間に合わないかなぁと思って、わざわざ、ジョイ
ポート1側はパラレル、2側は595つかってシリアルで、
とか思って、基板に入りきるかちょっと試してみたり
したんだけど、タイマ割り込みで最小の遅延で
なんとかなるなら、そっちに走りたい。

スペース的には595ともう1個のD-SUB端子くらいは入る
と思うんだけど、1個で済むなら1個で済ませたい。



まぁ、基本的には4方向ジョイスティック+2ボタン
を、連射機能付きで使えて、USBアナログ/デジタル
ジョイスティックどっちでもよくて、ボタンも
好きなようにアサインできる、って程度でいいんだ
けどもなぁ。





http://www.aitendo.com/product/16336

aitendoもAPDS9960光学ジェスチャーセンサ出たんだなぁ。

これ、

http://iot.keicode.com/arduino/arduino-gesture.php

http://qiita.com/stastaka/items/825cd0315b7b4c49ece9

ジェスチャーって、4方向だけなのかなぁ?





https://twitter.com/Debi_0252/status/897068934091816960

ドカベン。とてもいい。





https://twitter.com/marimo_chorobon/status/901002815027331072

伝説の問題。





https://twitter.com/burnworks/status/902333944070234112

人が真剣に考えてる問題、横から見て簡単だろうとか
って、簡単に考えないようにしてるつもりなんだけど、
逆に、実際に関わってみたら、外から見てたより、
はるかに簡単だったってことも有ったよな。

本人たちが、さぞかし大問題ってアピールしてるから、
色々、関わったら大変な問題がいっぱいあるんだろう
と身構えてたんだけど、1個1個紐解いていって、
普通に消化していったら、あっという間にプロジェクト
がさくさく進んでったっていう。今まで一体ナニを
やってたの?と。

かつての”我々の長年の経験則と実績によると”とやら
が通用しないで困ってたのかなぁ?


一方で、あのプロジェクトで、一生懸命
 「オレマジ大変。こんなに頑張っちゃってるし!」
アピールを欠かさない若手君は、(その周囲はなにを
そんなに”頑張ってる”アピールしちゃってるの?
たいした話じゃないだろ?)と思ってたり、むしろ
くだらない問題を自らいっぱい起こして、周りが尻拭い
してるのに、上は
 「彼は頑張っちゃってるなぁ」
と勘違いして、結果的に棚ボタだったよな。散々回り
を振り回した結果があれじゃぁ、回りみんなしらけるよな。

まぁ、ああいうトラブルメーカーの「もぐらたたき」
ゲームを「作るほう」も、「見てるほう」も、それが
楽しいなら、好きなだけやってればいいじゃんって、
みんなスウッと離れてったよな。

もぐらたたきしなくてもいいように、モグラが出て
こない原因を考えたりするのが大事なんじゃないの
かねぇ?



コメント ( 0 )




MSXのジョイスティック変換用基板。
とりあえず、基板上に配置してみた。



要件を整理するのは結構骨なんだけど、パーツは数個
しかないので、あっさり過ぎる回路。

ボタンは、それぞれデフォルトでD5、D6に繋いでおいて、
割り込み使いたいときにはD3にジャンパ切替できるように。

で、これとUSB HOSTシールドを組み合わせると、ジョイ
スティックからの信号をArduinoで処理して、好きな
形に信号を加工して、D-SUB9コネクタから出力できる、
という具合。

COMMON/STROBEは、D2に繋がってて、ピン割り込みで
処理ができるので、マウスの処理は大丈夫かと。



ただ、気になるのは、AVRの割り込みって、レジスタが
いっぱいある分、オーバーヘッドがでかいってこと。
AVRのgccで、どのくらいのオーバーヘッドがあるか
確認してみる。

https://www.clarestudio.org/elec/avr/mcu-interrupt.html

レジスタの退避に、3+64クロックって書いてある。
16MHzだと、退避だけで4マイクロ秒ちょっと。これと、
割り込み処理自体の数クロック分と、割り込みルーチン
側の処理がちょっと入る。5マイクロ秒までは行かない
だろうけど、そのくらい見越しておく。

http://sbeach.seesaa.net/article/387861471.html

http://sbeach.up.n.seesaa.net/sbeach/image/121121_01_E3839EE382A6E382B9E382BFE382A4E3839FE383B3E382B0.PNG?d=a38442283

マウスの通信制御だと、ストローブ信号の立ち上がりから、
データを準備するまでに、最大30マイクロ秒以内で収まれ
ば大丈夫なはず。

というわけで、マウス関係の処理は、割り込みの
オーバーヘッドを見越しても大丈夫っぽい。

(その前提として、USB通信処理で常時マウスに与える
ための座標差分をメイン処理側で用意しておくことと、
割り込み処理時間がUSB通信処理に悪影響させないように
注意しておくことが必要かなぁ)



問題は、X68kのクレイジークライマーとか、リブルラブル
みたいな、2本のジョイスティック使うパターン。

これ、本来は多分、ストローブ信号使って2個の4方向
を切り替えて入力できるっていう仕組みなんだと思う
けど、そういう入力処理って、MSX(とか多分X68k)は、
2個のジョイポートに2個のジョイスティックを挿した
時と、内部的にはまったく同じ処理しているはず。

で、処理としてはきわめて単純原始的なんだけど、
問題は、マウスみたいに悠長なタイミングでの入力
を許してないだろう、とういこと。

多分ストローブ信号で左右を指定して、その直後に
4方向の信号を読みに来る。
なので、16MHzのX68kだと、下手をすると、せいぜい
1マイクロ秒以下の余裕しかない気がする。


AVRのチップの割り込みのオーバーヘッド自体は、
せいぜい数クロックなんだけど、問題は、gccとか使う
と、全レジスタ退避しちゃって、その分の時間が掛かる
ってこと。約4マイクロ秒。
こいつを有る程度端折らないと、処理時間が間に合わ
ないだろうなぁ。

インラインアセンブルで、割り込みロジック側を
アセンブリ記述しておけば、自由度はどうでもない
気がするけど、純粋なgccじゃなく、Arduinoで
どこまでできるか…

そもそも、X68kの実機も持ってないし、ソフト自体も
持ってないので、なんともいえないんだよな。実験
できない。



あと、色々コネクタ余ってたりもするので、I2Cは
LCD表示機能くらい有るといいよなぁ、とか、
4方向をPWM制御できるように、バッファ組み合わせて
PWM制御で4方向をアナログ的な信号にできないかなぁ?
とか画策中。

なんにしても、PWM信号の端子が余ってないので、
色々使いまわししないといけないんだよな。
そのためのジャンパ切替とか、もうちょっと考えて
おく必要はある気がする…。






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

ハンドソーを自作しちゃうっていう動画。なかなか
興味深い。そもそも、ドリル歯を自分でカットって
すごいな。ここは手を抜いてもいいんじゃないかなと。

それにしても、ベアリングの固定の仕方、これは
なるほどと思った。両側から挟むのねぇ。

こういう、強力なモータ、どこから手に入れてくる
のかなぁ?普通に売ってるのかな?

デスクトップで使える、小規模な旋盤が1個ほしいな、
とか思ってるんだけど、ちょこっと作れないかなぁ?
と。





https://twitter.com/Story_terror/status/901399400647319552

アトムの容量、2TBって、なんかこんな話、大昔に見た
ような気がする。あの当時ですら、2TBって、足りなくね?
って思ってたんだよな。

現代になって思ってみると、アトムが思春期になって、
ちょっとアレ系の動画とかメモリしちゃうと、あっと
いうまに記憶容量を食いつぶしちゃう気がする。

というところまで妄想して、ふと思った。

人間の記憶容量って、動画のDCTみたいな、機械的な圧縮
だけで納めているんじゃなくて、意味記憶とかを使って、
機械的な圧縮じゃなく、有機的な圧縮を有効利用して
(かつ細部の情報を思い切り端折って)、容量を効率的に
圧縮してるんじゃないかなぁ?と。

つまり、かつて覚えてあった記憶と似ているものを
探して、それと似てるものは同じと見做しちゃうとか、
そういう、ファジーな圧縮をしているんじゃないかな?
っていう。

で、色々妄想があっちこっちに飛び火するんだけど、
このあたりはなかなか言語化が難しいので、もうちょっと
頭が整理できたら吐き出したい。






https://twitter.com/kctony/status/902128302583947265

このスイッチ。多分、カラフルなペンキ成分が足りない
んじゃないかな。





http://www.yomiuri.co.jp/sports/etc/20170828-OYT1T50010.html

すごいねぇ。奥原希望、金。






https://twitter.com/usa_hakase/status/902121159658938370

もう、ヒアリ、定着してるんじゃないのかな?
公表をひかえているだけで。



コメント ( 0 )