goo blog サービス終了のお知らせ 
「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



秋月のLPC1114のDIPをゲット。読み書きしたりデバッグ
する手段をちゃんと作んないとな…



あと、ツマミが付いてちょっと便利そうな可変抵抗も
1個買っておいた。


ツマミの向きまでわかって便利そうなんだけど、ちょっと
大きめなんだな。普通の可変抵抗より一回り、二周り
大きい感じ。


Raspberry Piの作例を眺めてみる。

I/Oポートを通してLCD表示の時計。
http://www.youtube.com/watch?v=dxdBxfTwA04

Raspberry Rover。
http://www.youtube.com/watch?v=ADkJ0FW_9Og
カメラで物体を認識して、物体を追いかけてく。
右回り、左回りで得意不得意があるみたいだけど、
ちゃんとカメラで物体を探して、自走して追って
行くのがすごいな。


MEGA164PのDDSファンクションジェネレータの
プログラム。
取り合えず満足いくようなところまで煮詰めた。

割り込み間隔を160クロックのままにしておいて、
角度(と角速度)計算を4バイトにしたまま、
整数部を4ビット減らして小数部を4ビット増やす
改造を施し、計算に因る周波数誤差を7ppm程度
まで落とし込んでみた。

14クロックほど増えて、タイマ割込み要因発生から
retiで戻り終わるまでの処理時間が144クロック。
割り込み以外の通常処理は160-144=16クロックと、
1割しかない状態。まぁ、このくらいならUSART
の入力処理は一通りバッファはみ出さずに処理
しきれる計算。まだ5倍くらいの負荷に耐えられる。
バグが無ければ、ソフトはこれでいいんじゃないかな。
欲を言えばきりがないし。

あとは回路、特にフィルタとバッファの回路を
どんな風にするかだな。



コメント ( 0 )




あいかわらずMEGA164PのDDSファンクションジェネレータ。

シリアル通信速度について計算間違えてたことが判った。

20Mhzで19200bpsならUBRRは64ってことになるんだけど、
64って1ビット分のクロック数じゃなくて、コイツをさらに
内部で分周して使ってるから、実際はもっと遅いんだった…

計算しなおしてみると、1バイト受け取るためのクロック数
は、20Mhz÷(19200÷10)=10,416.67になる。ってことは、
充分処理能力的には余力があるってことだな。一桁以上
余裕がある。がんばる必要なかったな。


まぁ、DAC出力の方はナニなのでがんばっておく必要があった
んだけど。

というわけで、ほぼコーディング終了。シミュレータで
動作確認中。

コーディング終わったら、周辺回路をサクッと作って動作確認
だな。


http://www.youtube.com/watch?v=5KkMH0acp9E
意外に、ツクバ程度の速度レンジでもウィングってそれなりに
効くんだなぁ。この手のハコのウィングなんて飾りって
思ってたけど、純正のウィングでもそれなりに効果があるとは。



コメント ( 0 )




相変わらずMEGA164PでDDSファンクションジェネレータ。

とりあえずプログラムは一式組み終わったものの、
動作クロックを細かく詰めてみると、やっぱり毎秒
125000サンプル(20000hzの1波形が6.25サンプル)では
角速度計算のパターンがちょっと食いすぎなところ
があるなぁ。

リングバッファ組めば済むといえば済むんだけど、
そっちに逃げるんじゃなくて、処理クロックを削って
キチンと動かす方向に行きたいところ。

今の状態だと、1Hz、2Hz、3Hz、4Hz、5Hz…と連続して
一桁の周波数を送り続けると、USARTのバッファが
あふれちゃう計算。まぁ、どんな風に削ればいいかは
もうアイデアがあるんだけど。
もうちょっとだ。

これが一通り出来たら、毎秒100000サンプル(20000hz
出力時に1波形5サンプル)にスペックを落として、
小数点以下をあと1バイトほど拡張してクロック精度
を充分高くする方向にも行きたいな。
(小数部を拡張しなくても、使ってない上位ビットを
 使う手もあるなぁ)



ふと思い出して、フォード・エスコート。
http://www.youtube.com/watch?v=Dq_S7Q5CwHw
やっぱエスコートのえぐいウィングはかっこいい。

エスコートが好きなのは、車体のかっこよさも
有るんだけど、デルクールの見た目がプロスト
に似てて親近感があるっていうのもあったかも
しれないな。

シエラもフォーカスも正直かっこよくなかった
んだけど、エスコートはなぜか別格なんだよな。
以前、もしエスコート買ったら幾らするんだろう
って思って調べてみたら、中古でも500万を
くだらなかったので、早々にあきらめたんだよな。

ちなみに一番かっこいいWRCカーは当然ストラトス。
http://www.youtube.com/watch?v=TmhpaLq3isM

2番目がエスコート。

3番目がランチア・デルタ・HFインテグラーレ
エボルツィオーネ。(これはサインツの映像)
http://www.youtube.com/watch?v=CuaBHNKycvI

どれも手が出ないな。


http://www.aliexpress.com/item/funduino-uno-UNO-R3-100-Arduino-Compatible/591964119.html
なんじゃ?このパチモノは…Funduino?
品質が全然信用できそうにない…
それと、デザイン似せすぎ。



コメント ( 0 )




今日も引き続きMEGA164PのDDSファンクションジェネレータ。

コードを弄り回して、割り込み処理(角速度の足しこみ、
波形テーブルからのデータ読み出し、ポートへの出力)
が約120クロックに収められることが判った。もちろん
2ch分出力してこの処理時間。シミュレータで色々な
ケースを流してみて、とりあえずバグは一応消えた
んじゃないかと思う。


これを元に考えると、1回の割込み周期は200クロック、
もしくは160クロックあたりが候補になってくる。
200クロックなら、20000Hz波形を出力するときに
1波形あたり5サンプル。160クロックなら6.25サンプル。

中途半端な割込み間隔にする手もあるかもしれない
けど、なんか気持ち悪いのでこのどっちかにしたい。

200クロックなら、割込み1周期あたりの4割は通常処理
(受信処理周り)で使えるので、処理能力的には
USARTにデータがラッシュしても19200bpsでは破綻する
ことはない目論見。

160クロックだと2割程度となり、一番処理負荷が掛かる
データパターン(具体的には”f”の文字を受信時に
角速度を求める処理)の時に超ギリギリになっちゃう。
USARTのダブルバッファ(2バイト分)を使い切る直前
といった感じ。その前後のデータパターンを眺めて、
大丈夫なら19200bpsで160クロックおきにしたいんだけど、
どうだろうなぁ…。エラーパターンまで含めてあとで
ちゃんと見直してみよう。

速度誤差の問題もあるんだよな…。試算してみると
200クロックの場合で130ppmくらい、160クロックの場合
240ppmくらい。水晶の3~5倍くらい精度が低くなるん
だけど、まぁ2ch出力を優先したいのでこのくらいは
目をつぶることに。小数部をあと1バイト増やせば
楽勝なんだけど、問題は処理時間だな…

でもやっぱ、SPIモジュールのI/Oと違って速いな。


初期化関係もほぼ直したので、残っているのは通常処理
の部分。USARTからの入力を受けて、内部の計算数値を
整える処理のところ。

2ch側は初期値としてcos波にすることにしたので、この
cos波を扱えるようにするのと、1ch、2chを切り替える
コマンドを増やしつつ、以前作ったやつとコマンドと
通信速度を上位互換にしておきたいので、そこらへん
も念頭にモロモロがんばってみよう。


ちょっとまえの記事だけど、がた老さんの
http://gataro-avr-ken.cocolog-nifty.com/blog/2012/06/p-10usb-3c26.html
この記事。色々スゴイ。P-10でちゃんとシリアル信号
取り出して使えるようになるまでが纏められてる。

あの時シリアル接続できるって知ったきり、おいらは
全然弄ることも無かったんだけど、物理的、論理的信号
が自由自在に扱えるようにってとこまではかなり手間を
かけられたのでは?と。

ケース加工もイイ。P-10はプローブが取り外しできない
タイプだから使うときちょっと不便なんだけど、こんな
風にコネクタ生やして取り付け/取り外し出来るように
なってたら便利。んで、その空いた部分にUSB/シリアル
変換回路が入っちゃってる!

aitendoのUSBシリアル変換回路って、こんな安いのが
出てたんだなぁ。オイラはArduino用で使うのがもっぱら
だから、ピン配置的にSparkfunのFTDI Breakoutばかり
なんだけど、用途によってはこれが小さくて安くて便利
かも。


おぉ、ザナルディー!金メダル!
http://headlines.yahoo.co.jp/hl?a=20120906-00000004-rcg-moto



コメント ( 0 )




相変わらず、2CH出力できるDDSファンクションジェネレータ
を作れないか、MEGA164Pのデータシートを見ながら進めて
いるところ。


8ビットでR2Rラダーdacと割り切ることで、結構サクッと
短いクロックで済むんじゃないかと思えてきた。20000Hz
なら1波形あたり5~6サンプルくらいには持っていけそう。

出力にオペアンプのアクティブフィルタは必須になるだろう
から、ここで高次フィルターを使えば、波形は結構綺麗に
整形出来るんじゃないかなぁと。


で、コードを書くといえばやっぱデータシートをよく
読まないといかんのだけど、MEGA164Pシリーズにしても、
MEGA164PAシリーズにしても、データシートに間違え
が結構散見されるんだよな。SPIとか、RAMPZとか。

データシートの間違えは、良く調べていけば判るから
まぁいいんだけど、昨日見たように、.incファイルに
間違えが残っていると、微妙に厄介だなぁ。まぁ
しようがない。


http://www.itmedia.co.jp/info/virtualevent/expo2012/embeded.html
これ見てみたいなぁ。


http://www.itmedia.co.jp/pcuser/articles/1205/16/news012_2.html
あのころのプログラムには神がかり的な知恵が満載
だったな。TEXDERには度肝を抜かれたな。


http://www.youtube.com/watch?v=txFoaxURoV4
このメタルスライム、ちょっと欲しい。



コメント ( 0 )



« 前ページ 次ページ »