マイコン工作実験日記

Microcontroller を用いての工作、実験記録

EERAM

2017-07-30 17:34:06 | Weblog
MikroElektronikaの新製品としてEERAM clickというのが出ていたのがきっかけで、MicrochipがEERAMという製品を出していることを知りました。

EEPROMへのバックアップ機能のついたI2C NVSRAMという製品です。電源断を検出して自動的にRAMの内容をEEPROMに保存してくれます。もちろん、電源ON時には自動的にEEPROMの内容をRAMに読み出してくれます。こりゃ手軽に使えて面白そうです。自動保存のためのエネルギーはコンデンサから供給してもらいますが、16Kbit容量(47L16)の場合でも最低8uFあれば良いらしい。

機会があれば使ってみたい。

Serendipitous Circles

2017-07-23 20:16:24 | Weblog
当初はSTM32F446のUVCがまっとうに動くよになったら、DCMIを使ってカメラをつなげてUSBカメラを作ってみようと企んでいたのですが、High speedが安定動作せずに作業が停滞している間に、カメラを繋げようという意欲が萎えてしまいました。

文字表示はできたので、今度は簡単にグラフィックス表示をしてみようと考えて、512x512ドットのモノクロ表示のグラッフィック表示機能を追加してみました。このサイズなら 512/8*512 = 32KB のRAMをフレームバッファとして使うことで表示が行えます。モノクロ表示で、それなりに楽しめる題材を考えていたら、その昔 BYTEマガジンに掲載されていたプログラムを8ビットマイコンで動かして楽しんでいたことを思い出しました。

Serendipitous Circlesという記事なのですが、今でもアーカイブにて読みことができます。素晴らしい!! 楕円上の座標を導出する差分方程式をベースとした簡単なアルゴリズムを使っているのですが、始点の座標を変えたり、わざと演算オーバフローを発生させることで描画する座標をラップさせたりすることで、簡単な演算で思いもよらない描画結果を楽しめます。基本的な処理は
int16_t xpos, xpos;

xpos = initial_x;
ypos = initial_y;

while (1) {
  plot(xpos, ypos);
  xpos = xpos - ypos /2;
  ypos = ypos + xpos /2;
}

と、するだけです。画面の大きさは512ドットしかありませんので、上位の9ビットの値を使ってプロットしてやります。例えば、(0x6000, 0)を初期値として上記の処理を繰り返すと、画面中央を原点とした次のような楕円を描くことができます。

同じ演算結果を、今度は画面の左下を原点として表示し、はみ出した部分は画面上でラップして表示してやると、次のように楕円を4隅に分割して描くことができます。

また始点座標を大きくとってやると、16ビット演算のオーバフローが頻繁に発生し、その結果が画面上でのラップ表示として反映され、予想もしないような結果を得ることができます。

その他詳しくは 元記事を参照していただくこととして、デモ動画を作成したので、こちらをご覧ください。



  • このデモではプロットする際にXORを使っています。そのため、演算結果の座標が以前プロットした点と同じ座標になった場合には、その点が点滅することになります。画像がチラチラしたり、時には円が回っているように見えたりすることもあって面白いです。画像の大半が消えかけそうになることもあります。
  • 動画はQuick Cameraというアプリでカメラからの画像を表示している様子をキャプチャしたものです。最初はMacbookの FaceTimeカメラでボードとUSB PHYを撮影していますが、途中でカメラ入力をこのボードで動いているUVCカメラに切り替えることでデモ画像に切り替わっています。
  • いくつかのパターンを順番に表示していますが、全て中心となる演算は同一です。(X, Y)の初期値、原点の取り方、演算結果の表示ビット位置を変化させることで、表示パターンが変化しています。
  • 演算で使用する係数を変えてやれば、結果の画像にも変化が生じます。BYTE MagazineのApril 1978に、いくつかの例が紹介されている記事が掲載されています。


High speed を確かめる - その5

2017-07-21 21:49:26 | Weblog
どうも動きが不安定で頓挫状態だったUSB High speedを確かめる実験ですが、ちょっとしたことがきっかけで動きが安定してきました。

コネクタや配線の接触不良を疑って、コテを当ててみたり、ハンダを盛り直してみたりしていたのですが、全く改善は見られませんでした。コネクタ部分に指を触れると画面表示ができるようになることに気がついたので、調べて見たらPHYのRESET端子に指を触れた状態で動かし始めると、画面表示ができることが判明。そこで、試しにPHYのRESET端子に 0.01uFをつけて見たら安定して動くようになりました。

使用しているPHYであるUSB3300のRESET端子は正論理であり、USBの初期化前に一度だけパルスを加えているだけです。これまでカラーバー表示では問題なく表示できており、文字表示をしようとするとうまく動かなかったことを考えると、初期化時というよりは動き始めてからRESETが誤って発生していたのではないだろうかと想像しています。どうしてこのような問題が発生しているのかわかりませんが、ひとまずコンデンサを追加しただけで、文字表示は安定して動くようになりました。

これまで画面表示にはMacに標準でインストールされているPhoto Boothを使っていましたが、文字表示がミラー表示になってしまう上に、よく見るとVGA画面の上下が30ドット程度表示されないという問題があったので、代わりのアプリとして Quick Cameraという単純にUSBカメラの画像を表示するだけのアプリを使うことにしました。


安さの理由

2017-07-17 11:27:47 | Weblog
秋月でPine A64に続いてNano Pi NEOの取り扱いも始まったようです。この安さですから、入手性が良くなったのは嬉しいニュースです。これらの製品にもWifi+Bluetoothのモジュールが用意されていたり、あらかじめ搭載したモデルが用意されていたりしますが、技適の関係で販売されないのがちょっと残念ですが。

それにしても、いくら中国製のSoCが安いからといって、 10ドルや20ドル程度の値段でこんなボードが作れたとしても儲かるわけがないとは誰もが不思議に思うところです。そうしたところが、 こんな記事を見つけました。この記事は Nano PiではなくてOrange Pi に関するものですが、内状は同じじゃないでしょうか。なんと販売価格はBOMコストでしかないんのですね。その他の経費と利益は補助金で得ているというビジネスモデルなんですね。驚き。