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



相変わらず、ちょこっとずつ、Arduinoでオシロ
の作戦の続き。


LCDやOLEDディスプレーをSPIでアレコレ制御する
のが、結構遅いので、なんとか出来るものなのか
算段を立てたいところ。
line表示とか、ドットで描画する関係の処理が
とにかく遅い。



http://blog.galileo-7.com/?eid=86932
galileo7さんのサイトによると、digitalWriteは
44クロック必要、とある。

んで、じゃぁ今回のSPI制御のロジックで、1ドット
あたり何回のSPI通信を行っているのかを元に、
例えば画面全体を1ドットずつ塗りつぶしたら、
digitalWriteと直接ポート叩くのでは、どのくらい
短縮できるのかを試算してみる。

…思ったほど速くならない? ホント?

と思って、実際にどのくらいのクロック数が掛かって
いるのか、ちょい実験。



SSD1306チップ搭載の、今回実験に使ってるOLED


を元にすると、128×64ドットなので、ドット数は
画面全体で8192ドット。これを、1ドットずつforの
ループで描画していくと、およそ8秒程度。

for文でどのくらいのオーバーヘッドがあるのかを
実験で求めてみると…瞬間的に処理が終わる。

もちろん、最適化で無効処理にならないように配慮
して、その状態だから、実質、入出力周りで8秒ほど
掛かっている計算。


んで、このディスプレー宛に、1ドットあたりでは
コマンドorデータを4回出力してて、その4回ごとに
8ビットデータをdigitalWrite関数で上げ下げして
るんだけど、それぞれdigitalWriteを27回使って
いるのが、現状の内部処理。(3+8×4)

8秒という値は、8Mhz化してあるArduinoでの計測時間
なので、それを元にクロック数を計算してみると…

 8秒÷8192÷4÷27÷(1/8000000)≒72クロック

と出てくる。

うーーーーーん。微妙に長い。



タイマ割り込み関係を禁止してないので、Arduinoの
コア機能が使ってるタイマ機能あたりがオーバーヘッド
になっているのか?

それとも、オイラの書いたドット描画以外の処理で
食ってるのか?


と思って、タイマ割り込み禁止にしたり、digitalWrite
だけを10個とか100個とかforループに組み込んで、
100万個分の処理で何秒かかるのかとか試してみた
んだけど、やっぱり70くらいっていう数値。

ドット描画以外の処理は、鼻くそほどの処理時間
しか掛かって無いみたい。

計測条件が異なるからなのか、44クロックと
72クロック。なんかこの差が微妙に縮められ
なかった…。
まぁ、桁が違うとかいう差じゃないから、この
辺りにコタエがあると考えておこう…



んで、もし、このSPI関係処理をdigitalWriteから、
直接ポートを操作するように変更したら、この
「大部分」を占める70クロックが、一気に数クロック
まで、一桁ダイエット出来るわけだから、かなり速く
なるんだじゃいかな、と思うんだけどな。

でも、後々ピン配置を色々流動的に弄りたいって
キモチもあるから、今はあまり弄りたくないん
だよな。速度の実験用だけでも、テストのスケッチ
書いて、試してみようかな。



http://brown.ap.teacup.com/nekosan0/2189.html
この間、たまたま触れていた、千葉テレの「ハロー
ジャガー」のジャガーさん。

http://sankei.jp.msn.com/life/news/140505/trd14050512000012-n1.htm
なんか、取り上げられてた。

個人でテレビの枠を買ってたので、なんとも不思議な
人だなぁと思ってたんだけど、当時友人に聞いた
話では、実業家で資産家で、ものすごい金を持って
いるから、個人で枠買って、やりたいことやってた
みたいなこと言ってたけど、どうやら本当のこと
だったらしい。

最近は、ustreamで活動してるのか。お元気で
なにより。



http://mamesoku.com/archives/3517189.html
ニッポンの妖怪。どれも良くできたイラストだな。
どうやって描いてるんだろう?最後の大天狗、
かっちょいい。



http://www.123dapp.com/Project/Raspberry-Pi/2346978
Raspberry Piの外側の枠を、新しいMACっぽく。
これなかなか良いな。

MACにこだわる必要もないんだけど、ネイキッド
のままのRaspberry Piより、やっぱこういう
外枠があった方がコンピュータって感じするなぁ。

オイラなら、出来ればPC-8001かPC-8001mkIIっぽい、
一体型がいいな。っていうか、どちらかの機種の
筐体が欲しいな。2/3スケールくらいで。

キートップは、Let'sノートくらいのピッチで
いいから、こじんまりと。

とか言いつつ、クラムシェルも捨てがたいな。
Raspberry Piベースで、初代98noteみたいな
クラムシェル型、作れないかな…



http://headlines.yahoo.co.jp/hl?a=20140508-00000068-reut-bus_all
Nintendoは、新興国機を検討してるのか。
オイラは、ゲーム機のハードスペックって、
初代プレステくらいでもうお腹いっぱいに
なってるんだよな。
あの位のを、安く、小さく、長時間遊べるような
マシンにして、日本でも売ってくれたらいい
のにな…とか思っちゃうんだよな。



http://jp.techcrunch.com/2014/05/08/20140507hover-adds-gestures-and-touch-to-your-diy-electronics/
Arduinoで、ジェスチャー操作ができちゃう
のは、なかなか面白いかも。



コメント ( 0 )




この間作った3.3V版内蔵8MHz発振のネイキッドArduino
を使って、ちょっとだけOLED表示の続き。


一つはコントラストの調整。この間、短時間の表示
だけで焼きつきができたのが気になっていたので、
コントラストはもうちょっと落としておいた方が
いいのかも知れないと思って、SSD1306のデータ
シートにしたがって、コントラストをできるだけ
小さな値に設定してみる。

aitendoでダウンロードしたpdfファイルに載ってた
推奨初期化コードだと、コントラストは0xCFだった
けど、普通は0x7Fくらいらしい。一気に小さい値
で暗くしたらどうなるだろう?と思って、ドンドン
小さい値にしてみる。


…思いのほか暗くならない。変わってねんじゃね?
と思って、0xCFに戻してみると、あぁ、やっぱり
明るくなる。ってことは、多少は暗くなってるん
だなぁ。
とりあえず、0x1Fくらいにしておく。


次。白黒反転モード。

反転に設定して表示してみると、当たり前だけど、
白黒が逆になった絵が表示された。

数分ほど放置して、コードを色々弄りなおす。
line関数を使って、ループで画面を線で埋めて
いくデモコードを追加。
んで、実行してみる。

当たり前だけど、組んだとおりに線が画面を
埋めていく表示が見れる。

んで、ふと気付く。焼きついていた線や文字の
部分が判らなくなるくらいに、ドット間の輝度差
が無くなってる。
反転表示のまま、しばらく表示してたからなの
かなぁ?



あれかな。
初期状態だと、まだ本調子じゃなくて、しばらく
表示すると本調子状態の表示になってきて、輝度
も各ドットの差が均されて、当面は焼きつきが
判らないレベルになるとか。

いわゆる、慣らし運転が必要なディスプレーなの
かな?OLEDって。

まぁ、表示のムラが無くなって、綺麗になって
なにより。



エレクトレットコンデンサマイクへのリプルを
抑えるのに、電源周りをどんな回路構成にしたら
いいのか、また改めて検索してみたんだけど、
なんともしっくり来る情報が見当たらなかったな。

3.3Vのシリーズレギュレータでも使って、リプル
を無理やり剥ぎ取るってのがいいのかな。
3.3Vでも動くなら、それが一番簡単な気がする。


http://eetimes.jp/ee/articles/1010/29/news118.html
後でまた読み直そう。



コメント ( 0 )




昨日作った、ネイキッドArduino用のシリアル
コネクタを使って、MEGA328、3.3V動作のArduino
として動かしてみる。

この間aitendoで買ってきた、SSD1306搭載の
OLEDを、SPIで繋いで動かしてみるというもくろみ。


この間から作っている、

液晶画面オシロを表示するモックアップのスケッチ
があるので、このSPI通信部分とかをチョイチョイ
弄って、128×64ドットのOLED表示に対応させてみる。



制御方法自体はそれほど変わらないので、初期化の
パラメタの渡し方あたりを弄るだけで、とりあえず
それなりに画面が表示できた。



こんな感じで、ちっちゃいブレッドボード1枚に
Arduinoの機能一通りと、OLEDが収まっちゃう。

なかなか便利な代物。自画自賛。


画面サイズが大きくなった分、表示処理の各定数
は弄ってないので、下部と右側に不自然な余白が
できちゃうんだけど、まぁ表示の確認だけなので、
これはこれで。細かいところはあとでまた。

ちなみに、スクリーン下側は表示してない余白が
たくさんあるように見えるけど、単に外枠が



こんな風になっているだけなので、実際は128×64
のほぼ全域を使って、先ほどの表示という具合。






ちなみに、文字的なものや模様的なものが表示できて
から、ここまで化けずに表示出来るようになるまで、
色々処理を弄りなおして、小一時間。

これまでは8ビット変数(char)で計算が足りてた
部分が、横128ドットになった途端、8ビットでは
足りなくなったのが大きな理由。その他、定数を
ベタ打ちしてたコードを、もう少し綺麗に書き直し
したりなど。

ちゃんと表示できるまでの間、電源入れて、中途半端
な表示を出したままにしてた時間があったので、
気付いたら、既に少し画面に焼きつきができてた。

全画面を白で塗りつぶすと、焼きつきしちゃった
部分の文字とか直線とかが、うっすらと。



うーーーーん。1時間くらいの間に焼きつきが
できちゃうのか。OLEDって。

まぁ、くっきりってほどじゃないし、さっきの
写真みたいな「文字やグラフ」を表示してる
分には、くっきり映って見えるから、それほど
気にする必要もないんだけど。



NOKIA5110液晶と比べると、SSD1306 OLEDの
128×64ドットは、VRAMサイズがおよそ倍に
なっちゃう。

モックアップ画面の表示を行うだけでも、
(FFT処理とか含めて)残りのSRAMはもはや
100バイトちょっとしか残ってない。

このOLEDの表示にも対応させるには、どうやら
スクリーン全体をグラフィックVRAMで持つのは
無理っぽい。

実際にグラフを各部分だけVRAMを用意して
おいて、文字表示するだけの部分については、
VRAMを持たずに常に上書き描画でいいかな。

まぁ、大量にメモリを食うFFTとVRAMはもう
組み込んであるから、もしかしたら残りは
100バイトもあれば足りるかもしれないけど。



コメント ( 0 )




昨日は、ひたちなかにネモフィラを見に。
http://hitachikaihin.go.jp/

常磐道の大混雑で、早々に高速を断念して一般道。
6号と51号の渋滞に飛び込まないように、あちこち
道を探りながらの移動。茨城空港付近を通って、
なんとかかんとか渋滞を避けたルートで現地まで
到着することができた。

けど、現地の駐車場も渋滞。

まぁ、オイラが運転してるわけじゃないから、
基本は座ってただけなんだけど。


ネモフィラは丁度見ごろ。菜の花もイイカンジ。
けど、ものすごい人出。あんなに混んでるのは
はじめて見たな。人だらけ。

チューリップは、先週は見ごろだったらしいん
だけど、今週は枯れ始めてた。残念。まぁ、
いくつかの種類はまだ見ごろだったので、写真
には収めてきた。


帰りに、常陸秋そばを食して帰ろうとおもって
いたんだけど、結局開いてる店でいいところが
みつからず、なぜかラーメンを食べて帰るはめに。
まぁ、ラーメンはラーメンでナカナカうまかった。


帰りも高速が大渋滞だったので、来た道をほぼ
そのまま辿って帰ったんだけど、1~2箇所、失敗
があってタイムロス。
というわけで渋滞にはそれほどはまらずに済んだ
んだけど、した道はやっぱ時間が掛かるな。渋滞
の中でイライラするよりは、景色の移り変わりで、
飽きたりはしないんだけど。

それにしても、お蕎麦に出会えず、残念だったな。
往復で、半日車内。




以前から、なんとなく思い浮かべていたブツを、
ちょこっと組み立ててみた。

AT-MEGA328を、内蔵RC 8MHzで動かして、Arduino
のブートローダを書き込んでおけば、簡単に3.3V版
Arduinoとして使えるわけなんだけど、スケッチを
書き込むシリアル端子を都度配線するのはメンドイ。


んで、こういうアダプタがあったらいいなぁと。





まぁ、仕上がりについてはともかく、基板には
aitendoの単三電池ケース用基板を使用。

折角の単三電池ボックスサイズである素材感を
殺して、全然違う料理にしちゃうのは、オイラ
の性。



こんな風にFTDIのBasicBreakoutボードを挿して、



ブレッドボードでパスコンつけて、反対側のAVccと
GND端子も配線すれば、内蔵8MHzのArduinoとして
普通に動く。自動リセットも手動リセットも対応。

こんな挿し方して使うので、細身の単三電池ケース
サイズの基板が丁度よさげかなぁと。


必要があれば、LED13も配線すれば当然点くけど、
要らなきゃそれも配線不要。ミニマム。なんに
しても、発振回路すら付けずに書き込みして
動作できるって言うのはおきらくでいいなぁ。

なお、ピン配置は、
http://www.switch-science.com/catalog/1240/
これを貼っつけてあるので、普通のArduino同様に
配線できる。


アダプタ部分の回路構成は、
http://kutsushita-neko.cocolog-nifty.com/blog/2013/09/arduino-e10d.html
このページが参考になるかと。特に、以前から気に
なっていた、自動リセットを投入した時に一瞬
生じる逆電圧の対策がされているので。

あと、強いて言えば、シリアル接続用の配線には、
TX、RXとも1kΩの抵抗を挟んである。保護抵抗。
D4端子(PD4)のところにもピンが挿さるように
なっているけど、基板上は配線無し。抜き差しの
強度確保用。


簡単なスケッチをいくつか書き込んでみて、ちゃんと
動くことが確認できた。

この間aitendoで買っておいたOLEDディスプレーとか、
秋月のGPSモジュールとかも、サクサク実験できそう。
これまで3.3V版のArduino(互換基板)が1個しか
なかったんだけど、これで3.3V版の「ちょこっと
実験用マイコン」が欲しいだけ使える。



https://twitter.com/kinton_yu/status/454743780751466496
今までに見た中では、最も豪快なLEDチカチカ的
表示テスト。ASCII文字表示対応なことが判る。



https://www.youtube.com/watch?v=C59cReh7ma8
N極とS極がカチャッ。




コメント ( 0 )




ArduinoとNOKIA5110液晶のオシロ。画面のモックアップ
のスケッチを書いてみた。


84×48ドットという狭さなので、グラフ表示部分と、
説明用の文字表示あたりのせめぎあいを、実際に
描いてみてから、モロモロ調整して行こうという
魂胆。狭い画面なので、一筋縄ではいかない。



これまでに作った、「文字表示」「ドット(各種)」
「線描画(各種)」だけでは表現力が足りないので、
線描画に「点線描画」を加え、文字表示には白黒反転
モードを追加してみる。
といっても、数行弄っただけ。



で、それらも使って、オシロの波形表示画面と、
FFT表示モードの、両方の表示イメージを描いてみる。

まずはオシロの波形表示画面イメージ。



真ん中の線がGND電位。横軸は時間、縦軸は電圧。
単位表示とかどこにどんな風に描くのかでいろいろ
悩んだ挙句、こんな感じじゃなかろうかと。


そしてFFT画面。



横軸は周波数、縦軸はdbVでの交流電圧振幅。



反転文字や点線描画のおかげで、それなりに視認性は
確保できた気がするけど、なんにしても左側の文字表示
による説明部分は3文字分では足りず、グラフィック側
に一部情報がはみ出てしまうなぁ。

まぁ、波形をxor表示とか使うことで、これでも
なんとか読める程度にはなると思うけど、でもまぁ、
ごちゃごちゃだな。



とりあえず画面構成はこんな感じだとすると、あとは
細かい制御まわりと、周辺回路の安定動作だな。


それはともかく、3.3V動作のArduinoは、液晶表示とか、
モロモロ3.3Vデバイスを使うのに便利だなぁ。

もう1、2個ほしくなるんだけど、レギュラーサイズが
欲しいというよりは、ブレッドボードでチョコチョコ
できるものが欲しいなぁと。

Arduino pro miniの3.3V版があればいいんだけど、
よく考えたら、8MHzなら内蔵RCでも充分な気がするし、
あとはIDEとのシリアル接続だけナントカなれば、
IC単体でもいいんじゃね?と思えてきた。

なら、ブレッドボードにIC挿して、それとIDEを
簡単に接続するジグがあれば、それで充分かな。
http://www.switch-science.com/catalog/1240/
前に買ったこれ使えば、バッチリ感。

リセット、TX、RX、Vcc、GNDの5つの線を、SparkFun
のFTDI Basic Breakout3.3V版と繋ぐためのジグか。
それは簡単に作れそうだな。


3.3Vといえば、
http://www.aitendo.com/product/7273
これも弄りたいんだよな。




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

AVRのオシロ。ナカナカいいなぁ。機能といい、
操作系といい、なかなか煮詰まってて、イイカンジ。




http://www.nicovideo.jp/watch/sm23453403

ゲーグラ、47回。各年代に登場したゲーム機シリーズ、
今回で一通り終わりみたい。

3DS、VITAあたりは、あまり食指が動かないんだよな。
3DSでプチコンやってみたい感はあるんだけど。



http://www.aoni.co.jp/actor/ya/yada-kouji.html
タラン将軍、ハイデルンの人だったのか。ご冥福を。



http://www.tiny-yarou.com/ppcc/
パピコンクリッカー。まずい。次々表示される当時の
機器やソフトを見てたら、ついコンプリートして
しまった。





コメント ( 0 )



« 前ページ 次ページ »