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



もう1個手を進めておく。

LPC1114をmbedとして使うための書き込み環境を
整備しておく。


DIPのLCP1114は、もともと数本の配線でプログラ
ミングできるんだけど、ものぐさで有名なオイラと
しては、Arduinoくらいにサクッと書き込める環境
が欲しい。
ので、例によって、「あちゃんでいいの」と同じ
くらい簡単に配線できるアタッチメントを作る
という作戦。


買い込んでおいた部品をハンダ付け。



左は、LPC1114を挿して使う、aitendoの基板。
245円。12MHzのクリスタルが載ってる。クリスタル
は邪魔にならないように、ICソケット側に付けた。

両側の端子の穴には、Arduinoみたいな上下に色々
と繋げられる足長ピンソケットをハンダ付けして
おいた。

右は、USBシリアル変換基板と繋いでワンタッチで
書き込みするための「変換基板変換基板」。



こんな風に、ライザー基板みたいに取り付ける。
リセットボタンも取り付けてあるけど、基本は
USBシリアルからのDTR信号で自動リセットだし、
RTS信号でISPモードにも自動で入る。

USBシリアル変換基板は、Aliexで買っておいた
CH340搭載のヤツ。元々はジャンパーが5V側に
ハンダ付けしてあったので、3.3V側に直した。
(で、Vccも信号線も3.3Vになっているかをオシロ
 で確認してみたら、一応全部3.3Vに切り替わってた)

LED1とLED2は付いてないので、こんな風に別途配線。



それにしても太い。



600milのICに加えて、さらに両側に1列ずつ広いので、
こんな具合。結果800mil。
そんなあたりも見越して、上側に配線できるように、
こういうピンソケット使った。
(あちゃんでいいのの時と同様)

でも、やっぱ、もう1列ずつ広いブレッドボード欲しい。



RTS信号周りは、

https://qiita.com/toyoshim/items/7b349eeaa2d9a2656144

こちらのサイトで触れられているように、抵抗を挟んで、
いざというときに事故にならないようにしておいた。
USBシリアルのRTSと24番ピンの間は300Ω抵抗で繋いで
あって、もし24番ピンの配線とこれがショートしても、
大丈夫な感じに。



で、コンパイル済みのmbed用プログラムを、USBシリアル経由
で書き込みするわけだけど、コンパイラは「bin」ファイル
を吐くのに、「Flash Magic」は「hex」ファイルしか食えない。

なので、

https://synapse.kyoto/tips/LPC1114/page001.html

しなぷすさんの「BIN2HEXGUI」というツールを利用させて
戴くことに。(ありがとうございます)


書き込みの設定は、しなぷすさんのページに書いてある
通りなんだけど、要点を自分用にメモ。
step1のところは、「LPC1114/102」「9600bps」
「None(ISP)」「12MHz」に。



あと、DTRとRTSを使って自動で書き込みする場合の設定。





これで、あとはスタートボタン押すだけ。
9600bpsなので、結構掛かるのね…。Arduinoとメモリ
サイズは一緒なんだけど、通信速度が…。

これ、速度変えられないのかなぁ?




まぁ、そんなこんなで、LEDチカチカのプログラムを
書き込んでみた。



写真だと見づらいけど、LEDが0.2秒ごとにトグルする。
成功成功。

リセットボタンも機能する。よし。



TX、RX使って、シリアル通信できるはずなんだけど、

https://lowreal.net/2016/02/17/3

通信する際に、DTR/RTSが動いちゃって、ISPモードに
入っちゃう恐れがあるみたいで、それはちょっと困る
んだよな。




ちなみに、

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

この基板にも、そのまま使えるはず。


もしかしたら、

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

これをDIPのICの代わりに差し替えて、書き込みできる
かなぁ、とかも考えてる。(基板がはみ出て干渉しそう)



気になってるのは、やっぱDTR/RTS周りだな。シリアル
関係のプログラム書いて実験してみたいものの、色々
やったので、また今度にしよう。



https://blogs.yahoo.co.jp/yukukawano9/9722351.html

この300mil化、いいよねぇ。





それにしても、mbed用の動作環境ばかり作っても、あまり
意味無いんだよな。1~2個あれば十分だし、何気に、
STM32 Nucleo F303K8が使い勝手良い。

あとはArduinoフォームの基板が1個欲しいんだよな。
Seeeduino Archがそのはずで買ったんだけど、メモリが
小さい。やっぱ、もうちょっとメモリ大きいやつが欲しい。



コメント ( 0 )




昨日の、F12864G25412P1701液晶用のmbedライブラリ。

結局、ソースコードを1文字1文字見直していって、
ようやく原因判明。


ドットの表示位置がおかしかったのは、なぜだか、
コピペしただけのはずなのに、途中の定数の1箇所が
0xB0から0xE0に書き換わってて、正常なY軸指定の
コマンドになってなかった。なんだこれ?

弄った記憶はないし、5110液晶用ライブラリとはここは
異なる部分だから流用してないし、やっぱ原因不明。


まぁ、直してみたらちゃんとドットが描けた。

あと、大量のランダムラインを描くのが上手くいって
なかったのは、ライブラリ側じゃなくて、呼び出し元
のデモプログラム側だった。これは例によって、char
型のゴニョゴニョした辺りでバグってたみたい。

mbedって、なんでchar型だけ、内部がunsigned char
なんだろう?intとかlongとかはsignedなのに。

まぁ、そう言っても、もともとちゃんとunsigned型と
思って計算式書いてたはずんだけど、128で割った余り
の計算が上手く行ってなかったみたい。よくわからん。
0~255なんだから、128で割った余りを求めれば、
上手くいくはず、と思っていたのに。



で、まぁ、結果。まずは文字列描画。



これは、Y軸は8ドット単位、X軸は1ドット単位で
座標指定可能。フォントが5ドット単位で、VRAMの
横幅(128ドット)とそろわないので、ドット単位
で位置指定できるようにしてある。

1文字単位でも、文字列指定でも、どっちでも扱える。
(1文字用の関数を、文字列用関数が呼び出す)

ただし、文字列表示の途中で画面右端に掛かると、
現状は自動で改行してくれない。自動で改行する
ロジックにしちゃった方が便利だよなぁ…
1文字表示終わったところで、X軸が一定以上なら
改行を自動挿入する、みたいな。


次。ランダムドット。



5000個描いて、ほんの一瞬。Arduinoだと、こんなに
速くない気がしたなぁ。



次。ランダムライン。



1000本描いて、1.5秒くらいかな。この写真は、
描画途中を狙ってパチリと撮ったので、一部の線
は濃く、一部が薄く出てる。

psetで1000本、presetで1000本かいて、あわせて
3秒くらい。やっぱり、Arduinoよりはるかに速い
気がするな。

そもそも、Arduinoと5110液晶で最初に作った当初の
ライブラリでは、ArduinoのdigitalWriteをそのまま
使ったせいで、毎秒30~40本くらいしか描けなかった
んだよな。それを、ポート直接叩くように書き換えて、
それなりの速度になった。

でもmbeedは色々な機種で使いまわししたいから、
ポート直接叩くようなことしてないんだけど、
毎秒1000本近く描けるっていうのは、もう十分な
速度だな。Seeeduino Archで5110にライブラリ
移植したときも思ったけど、やっぱ32ビットは
速いな。



UC1701ができちゃえば、SSD1306のOLEDとかも、
初期化コードだけ書き換えれば動くはず。

とりあえず、mbedで5110もUC1701も動くように
なったので、C言語様式じゃなく、C++のクラス定義
にリファクタリングしておきたいんだよな。
特に、Arduinoとちがって、ポート直接叩くわけ
じゃないから、ポート指定してインスタンス作る
ように直したい。



それより、なんといっても、3.3V電源にあわせて
オシロの計算ロジックを見直すのが先かな。定数を
数箇所直すだけで、計算は対応できるようにして
あったと思うんだけど、色々ちょっと自信ない。



その辺ができたら、あとはシールド形状でオシロの
回路詰め込むのだ。

オシロ回路の電源周りと、アナログ周りで使う
オペアンプの選定で色々悩ましいんだよな。
馬鹿正直に回路組むと、パーツがいっぱいに
なっちゃって、面積的に厳しい。プローブ用
のBNC端子も結構デカイしな。

SMDのアンプとかDC/DCとか使う方向に流れるかな…



コメント ( 0 )




Nucleo STM32F303K8を使って、例によってaitendoの
G-LCD、F12864G25412P1701に色々表示するライブラリ
を移植してみる。

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

Arduino用のUC1701ライブラリと、既にmbedに移植済み
の5110液晶ライブラリの両方を眺めながら、UC1701用
にゴニョゴニョ書き換え。

5110用ライブラリの移植をするときに、char型、byte型
signed/unsignedの違いといった辺りでだいぶ苦労した
ので、その辺を注意してコードをArduino用から書き換え
していく。

とりあえず、コンパイル通るようになったので、ひとまず
様子見のために書き込んで実行してみた。




文字はサクッと出た。
けど、なんかグラフィックがおかしい。

原因箇所を絞り込んでいくと、なんとなくドット表示を
行う関数が変みたい。Y座標が全然効いてない。8ドット
以下の座標(上位を切り捨てた下位3ビット分)は活きて
るんだけど、上位の座標(4ビットより上)が効いてない。

それだけなのかもよくわかんないけど、少なくとも
その分はだめっぽい。

char型のsigned/unsigned周りとか、char/int周りとか、
はみ出たビットの切捨てとか、その辺が悪いのかなぁ?
もうちょっとコードじっくり見直す必要ありそう。


あと、あらためて気づいたんだけど、このG-LCD、カメラ
で撮るときに、ストロボ焚くと暴走する。画面の上下が
入れ替わって、んで、あと送られるデータが化けたり
するみたい。
Raspberry Pi2でも、そんなことあったねぇ。
このモジュール使うときは、ストロボ厳禁っぽいな。





相変わらず、firefoxの不調とPCのHDD周りで頭が重い。
道具の不調は厳しいものがある。


いろんなセキュリティーソフト使って、マルウェアを
チェックしまくったり、Windowsのシステムが壊れて
いないか確認してみた。

サブPC(Windows7の32ビット)とWindows10ノートは
大丈夫。
メインで使ってるWindows7(64ビット)は、1個ファイル
が戻せないって出てきた。

msvcr80.dllっていうファイルなんだけど、ちょっと
調べてみると、VC++2005のファイルだったり、appleの
iTuneかなにかが使っていたり、.NET Framework2.0に
入ってるファイルだったりするみたい。

Firefoxの不調にあまり影響あるように思えないファイル
なのと、そもそも、32ビット版Windows7のほうはまったく
欠落/破損しているWindows関連ファイルはゼロだったのに、
同じ症状出ているっていう理由にはなりそうにないもん
なぁ。多分、原因は別。

sfcコマンドで戻せないって言うのは気になるんだけど、
scandiskでファイルシステムが壊れてたわけでもないし、
色々な点から、ひとまず放置して、Firefoxを再インス
トール。
…やっぱり症状変わらず。

オイラは、ネットスケープナビゲータ時代からのユーザ
なので、ハイそうですかと言ってちょろめに乗り換える
とか、できないんだよなぁ。なんといっても、FFの
ブックマーク機能のアクセスのしやすさは、他のブラウザ
では代替できるものがない。



あと、HDDにおかしなフラグ立った件。

相変わらず、「代替処理保留中のセクタ数」は1のまま。
増えていくと大変なんだけど、ずっと変化ないっぽい。

もうしばらく様子見なんだけど、パーティション丸ごと
コピーするツールだと、エラーのフラグまで移行しちゃう
っていううわさがあって困るので、どうしたものかと
悩み中。

でも多分、書き込み中にOS強制終了したとかで、おかしな
セクタができてるだけなんだろうと想像。このセクタが
上記のファイル云々かも知れないなぁとも思ったんだけど、
scandiskでおかしいファイル無いよ、って出てきたので、
多分違う。



マザボごと買い換えられるなら、GPT対応のマザボにして、
3TBなりのHDDに買い換えたいところもあるんだけど、
当面容量足りるし、色々考えると、2TBのHDDを買い換える
のが現実的かな。
んで、今使ってるやつを一旦丸ごとフォーマットして、
保留セクタが問題ないことが確認できたら、バックアップ
用のディスクにするとか。


しかし、FFにしても、HDDにしても、常用している道具が
調子悪いのって、精神的にぞわぞわするものがあって、
ものすごい落ち着かないんだよな。






https://headlines.yahoo.co.jp/hl?a=20171104-00000008-minkei-l24.view-000

だる満月

お月様は、のぼってくる時の真っ赤なのが、やっぱり
神秘的でいいよな。
場所と気象条件に恵まれないと見れないんだけど、
前に一度、遠くの地平線から上ってくる月を、timelapse
で撮って、ムービーにしたことがある。あれ、いい色
だったな。






https://headlines.yahoo.co.jp/hl?a=20171104-00001515-tokaiv-l23

相変わらずだなぁ。
それにしても、この「無理な割り込み」が悪意による
モノだったら、危険運転致死傷罪にあたるよな。

相手に怪我を及ぼさなくても、安全運転義務違反は
明確なんだから、それだけでも予防措置で違反切符
切るなり、車の持ち主に警告しておく(警察のブラック
リストに載せたよという意思表示)くらいはしておい
てもいいんじゃね?という気もするけどな。






Firefoxのあれこれとかで手を取られて、なかなか
やりたいことが進まないな。








コメント ( 0 )