2009年10月
10月01日
データ取得コマンド発行してデータが出てくるまでの間にもう1チャンネルでデータ伝送をさせてみた・・が,結果かが思わしくない.結局データ取得終了から次のデータが出るまでの時間は変化しないということが判明.さてどうしたものか.

10月02日
データ更新周期を確保するにはデータ量そのものを減らすしかないか.差分を取るとかランレングスにするとかADPCMのように複数回のデータで追従させるとかいろいろあるけども,M8Cの能力を考えるとあまり高コストな方式はとれないな.

10月03日
とりあえず差分でデータ圧縮するファーム作成.割り込み内部での処理が重くなったのでさすがに200kbps超えは無理だけど,115.2kbpsなら楽勝だな.それにしてもセンサからの値が結構ばらつく.このままだと差分データが多すぎる.もう少し工夫せねば.

10月04日
1工夫してとりあえずデータ圧縮版完成.波形を見る限りではかなり有効だったようだ.センサからのデータ伝送ビットレートを

10月05日
基板をちょっと修正して回路図に反映.

10月06日
台風が接近中.予報コースがだんだん北にずれてきているような気がするのだが・・これじゃ木曜日に直撃ではないか.
さて,そんなときの非常食・・ではないけども,カロリーメイトの新しく登場したメイプル味.これがなかなか美味である.メイプルシロップな香りが良い.

10月07日
台風18号接近ということ.最初は南の海上という感じだったのにどんどん予想進路が北に傾いてどうやら直撃コースになりそうな勢いである.
何もそんなときにやらなくても良いではないかと言われそうな中で窓際においてあった大きなカラーボックスを片付けにかかる.中身は既に先日処分しているので,ほとんど空になったボックスの撤去と分解.長年使ってきてずいぶんとくたびれたこのカラーボックスともとうとうお別れである.
片付けてしまうと,今までふさがれていて窓が大きく見えてなんとなく落ち着かない.仕方ないということでカーテンレールとカーテンを買いに.なんとなく見ていたら今はレースのカーテンでも家の中がほとんど見えないなんていうものもあるのだな.とりあえず遮光カーテンにすると暗くなりすぎる気がしたので非遮光なカーテンに.お約束で一応「日本製」表記ありなものにしておく.
そういえば,PSoC DesignerがSP5.5になっていたなとアップデート.

10月08日
台風でかなり雨が降った降った.雨が上がったら今度は風.これも午前中には収まってあとは暑い暑い.
さて,そんな中でPSoCなファームを弄っていて,最ビルドしたらいきなり動かなくなってしまった.そんなに変なところは弄っていないのにと思ってバックアップのプロジェクトフォルダのHEXファイルを焼いてみるとちゃんと動く.ならばとこのプロジェクトをコピーして再ビルドしてできたHEXを書き込むと駄目.更に古いプロジェクト・・絶対動いていたはずのものをコピーして再ビルドしても駄目.
どうしても腑に落ちなくて改めてデザイン画面を見ると繋いであるはずのGOバスへの出力バッファがOFFになっている.おかしいなと思って繋ごうとしても拒否されてしまって接続させてもらえない.他のバッファがONになっているのと勘違いしているのかと,他のブロックの出力バッファを弄ってから弄りなおすと画面上ではどうにか接続された・・・が,これも再ビルドすると駄目.一旦Designerを終了させて再度読み込むとやっぱり接続したはずのバッファがOFF.
どうも,昨日のSPr5.5へのアップデートが仇となったとしか思えない.やむなくDesignerをアンインストールしてSP4.5に戻してみることにした.どうなることやら.
とりあえず日付が変わっても粘ってテストしてみたらOK.睡眠時間ほとんど取れないけどいいや・・これでおやすみである.

10月09日
打ち合わせでちょっと疲労.体力ないな.それにしても夢を描く能力が落ちているのを実感する.昔のような得体の知れない妄想力をもう少し鍛えねば.

10月10日
MAX232系なIC一個使ってレベルコンバータボードをちょいと製作.これをUSBシリアル変換ケーブルの先につければ普通にPSoCなどとお気楽接続となるわけだ.
昨日録画しておいたナイチンゲール云々なドラマを見る.うーん,普通のドラマっぽくなってしまってるな.これはこれで面白いけどね.

10月11日
ちょっと出かけたついでに寄った安売り店系でどうも金融流れらしいリーバースなパンツを見つける.ほとんどのサイズは出払っていたけども,見本のように吊るしてあったのを外して穿いて見たらちょうどぴったりサイズで,ラインも綺麗な感じで着心地も良し.タグを見たら「日本製」.やっぱりね.

10月12日
急ぎの仕事がちょっと片付いて一息.いい加減PSoC3もやるべきだなというところで重い腰を上げる.確かCreatorの動作条件を見るとメモリは2Gバイト詰めとかCPUもそれなりに必要そうな雰囲気で.手持ちの512MBとか768MBのノートPCで一体どうなるのか.まぁとりあえずやるだけやってみようと,現状では最新らしいPSoC Creator 1.0 Beta3.1を落としてきてインストール・・と思っていたらどうも疲れが出たのかだるくて仕方ない.とりあえずインストールは明日に回して寝ることにする.

10月13日
PSoC Creatorのインストール.1.2GHzのPentium-Mに768MバイトのメモリにWindowsXPという環境で果たしてどうか.
そういえばKeilのコンパイラのライセンスがどうとか言っていたけども,別にこれといった問題もなくインストール終了である.別にKeilへの登録も要らなかったけども使えるらしい.
立ち上げてみると,確かに最初は重いけど,PSoC Designerも重たいしで別にそれほど重たさが増している感じはない.ちょっと意外な展開にTutorialのHello Worldをやってみる.なるほどビルドのステージで,DesignerのGenerate Configuration Filesに相当するステップは確かに少々時間がかかるようだけども,コンパイルやMakeは早い.とりあえずできたものをCY8CKIT-001の添付ボードに書き込むべくMiniProg3を繋ぐ・・と,あれ?ISSP端子は?と思ったら,1mピッチ(くらい?)の2列なピンヘッダをフラットケーブルで繋ぐのだった.やっぱり2.54mmピッチにして欲しかったな.接続してACアダプタを繋いで書き込んでみると,これが速い.PSoC1(今までのPSoC)より断然速い.
少しソースコードを修正してみて再ビルドしたときの再ビルドも良い感じ.ということで,とりあえずチュートリアルレベルではPSoC1よりむしろ快適である.これでまたノートPCの更新が後になったか.

10月14日
とりあえずチュートリアルレベルは終わったので,お約束でフィルタをかけてみる.矩形波にBPFなりLPFをかければ正弦波が出るという,例のやつ.フィルタモジュールのパラメータチェックが甘いのにまんまと騙されかけたけど,そうだよ,FIRだよなと分かってしまえばそれはそれ.とりあえずフィルタのデータシートとTRMと突合せながら眺めてこういうことなのだろうという予測をしながらちょっとつついて,キャラクタ液晶にデータを表示させてみるとなんとなくそれっぽい値が出ている.D/Aに出力してオシロで波形を見たら綺麗な(といっても,階段状なのは原理上しかたない)正弦波.なるほど,分かってしまえば簡単だな.
割込みとDMAはもう少し要調査だな.明日時間が取れればやってみよう.

10月15日
PSoC3で割込みを使ってみる.なんだか変なおまじないになったなぁと思ったのだが,PSoC3とPSoC5でなるべくソースを共有できるようにと考えるとこうなるのだろう.とりあえず簡単に動いてくれて一息.
次はDMAか.明日いじる時間をとれるかな?

10月16日

少し時間が取れたのでPSoC3のDMAを弄ってみる.仕様とAPIを眺めると一応それなりにインテリジェントなタイプで,いろいろ使えそうだな.とりあえずメモリ/メモリ間転送のサンプルをざっと眺めて動かしてみるとそれほど苦労せずに動作した.CPUでトリガするのはそれほど難しくない.メモリマップドI/OなのでI/Oとの転送も基本はこれで良いはず.ただ,ROMからRAMへの転送はいまひとつ良く分からない.ROM空間のときの上位アドレスは何にするのだろうかな.

10月17日
転送動作をハードウェアのリクエスト信号で動かしてみることに.とりあえずタイマを置いてターミナルカウント出力でDMAにキックをかけてみる.やはり目で見て分かるほうが良いなということで500ms周期のタイマを作ってLCDにバッファ内容を表示しながら転送させてみることに.多少引っかかったものの,とりあえず動くようになった模様で,500msごとにデータが転送されているのがよく分かる.
試しにデータの送り先をD/Aにしてやるとちゃんと波形出力.インクリメントデータにしたらちゃんと鋸波,SINテーブルにすれば正弦波に.さて,次はTDを二つ使ってみるとするか.

10月18日

DMAを2チャンネル使おうとしたら何故か動かなくなった.おかしいなと散々悩んでたどり着いたのがAPIに与えた引数の間違い.いつから間違っていたのかと思ったら実は最初から.たまたま値が初期値のままうまい具合に動いていただけだったので追加したとたんにボロが出たということだったようだ.さて,明日こそ”2チャンネルのDMAと2つのTD”だな.

10月19日

朝からちょっと時間を見て二つのDMAと二つのTDで動かしてみることに.昨日クリアしたのがやはりポイントだったようで,今日は朝から絶好調で,難しいことも無く簡単動作.これで,定周期でデータテーブルを取り込んでフィルタにかけてD/Aで出すというところまでDMAだけで動かすことができた.
ここで問題はフィルタ出力が2の補数表現なのに,D/Aのほうは符号なしであるということ.データが8ビット長だからこの変換は80Hを足す・・あるいはMSBを反転させれば良いだけの話だからCPUなら簡単だけど,DMAにはそんな数値演算機能はない.どうしようかなと思ったけれども案外簡単に解決できた.気をよくしてTDを二つ用意して,1回のDMAリクエストでフィルタ=>コントロールレジスタ,続いてステータスレジスタ=>D/Aという転送を行わせたらうまい具合に動作.
さて,あとはA/Dからフィルタに転送するようにしてやれば
アナログ入力=>D/A=(DMA)=>フィルタ=(DMA:MSB反転)=>D/A=>アナログ出力
というパスで,アナログ入力をデジタルフィルタして出力するところまでDMAだけ(CPU負荷無し)で実現できるか.
この場合には入力側も別チャンネルにする必要がないので,TDを追加してDMA1チャンネルでもなんとかなるはずだな.
単純なデータ転送だけでなく複数のデータ転送をまとめられたり,データに論理演算等を施しながら転送も勝手にやらせることができるというのは素敵だな.

10月20日

さて,そんなこんなでA/Dしてみることにした.ΔΣのA/Dコンバータのeoc(End Of Conversionか)をDMAリクエストにして読み込んだデータをフィルタに叩き込んでやれば良い.テストオシレータからの入力とフィルタ=>D/Aされた出力をオシロで眺めながらいじってみるとこれが良い感じである.ADCの変換とフィルタのサンプリングレートを変えてみようと,とりあえずDMAを2チャンネル使ってADCからメモリへ,メモリから出力系へと分けてそれぞれ違うレートで転送させてみたけども別段何事も無く動作.
と,一息ついていたら外が騒がしい.窓から外を見ると,近くから真っ黒な煙が上がっている.ちょっと見えにくいけどもどうも火事らしい.あわてて走っていくと既に野次馬多数で消防車集結で消火活動中.特に何もすることはなさそうだし,邪魔になるだけなので,そのまま帰宅する.救急車の音はしなかったので,巻き込まれることもなく逃げ出したか留守だったのだろう.程なく無事鎮火したようだけども後始末はしばらく大変だろうな.我が家も気をつけよう.

10月21日

新聞によると昨日の家事は煙草の火の不始末が原因だったらしい.兄弟で弟が16歳・・兄が吸っていた煙草が・・とあるけど,兄の年齢は載っていなかった.
さて,ちょっと気になってPWMとDMAをつないで動かしてみる.やはりDMAリクエストは立ち上がりでリクエストになるのだな,きっと.タイマのTCと繋いだときの挙動はちょっと不思議なのだけども,まぁそういうものだと思っておこう.

10月22日

都心方面で打ち合わせ.いろいろと面白い話は良かったが,帰りが少々くたびれた.ノートPCと言えどもやはり重いな.もっと軽いのが欲しいと思うけど,軽すぎると座りが悪くて扱いにくかったりするのかな?
1
10月23日

貸しビデオ屋の100円古本販売ワゴンで「スズメバチの巣」(パトリシア・コーンウェル)を買う.これでまたツンドク本が増えてしまったな.

10月24日

書籍の出版契約書が届く.前は鉛筆に丸印で,「ここにハンコ」とか書いてあったのだけど,今回は書き方マニュアル付き。とりあえずこれで年越しはできるか。

10月25日

PSoC(PSoC1だが)で,ちょっとしたアプリケーションの作成.少し欲張ってみたのだけども,なかなかうまい具合に配線ができない.特にアナログブロックがネック.リソース自体にはまだ余裕があるのだけど,ブロック間の接続の制約が厳しい.

10月26日

とりあえず詰め込みは頭を冷やしてやり直すことにして,ちょっと緩い状態にして他の部分の動作チェック.ところがなんだかおかしい.どうみても罫線どおりにならない.ずっと悩んで「こういうときは基礎からだよね」とテスターでなんとなくあたったらカラーコードでは間違いなく15kΩになっている抵抗の実測値が72kΩ.ジャンク品から使いまわしていたのが失敗だったか。正しく15kΩを入れたら計算どおりになった.今まで抵抗の不良なんて経験してなかったなぁ.

10月27日

三角波生成で少し悩む.DCオフセットのドリフトをどうやって少なくしてやろうか.結局基準電圧にぶつけてからDCオフセット分を加算してやるという方法で逃げ.

10月28日

頭を冷やしてブロック詰め込み作業のやりなおし.基本的な動作部の考え方はOKなので,あとはブロックをどう配置するか.4カラムで2カラム目と3カラム目は完全に切れているのではなく,ちょっとだけ接続できる道があるのを使って横方向に展開.
何とか詰め込めそうになってきて,調整していったら綺麗に入った.無理そうに思えても工夫していけば何とか入るのだからPSoCもご立派というところか.

10月29日

なんとなく買って寝る前に眺めていた「罪に濡れた二人」.どうなのだろうなと思いながら,別にこの先はどうでもいいやというところで終了.頭の数ページだけ読みかけになっていた本に復帰.

10月30日

法人の方の経理の関係で打ち合わせ.

10月31日

ちょっと説明書でも・・と思ってなんとなくCypressサイトを訪れたらPSoC DesignerがSP6になり,Programmerも3.1の正式リリース.SP5.xでは泣かされたからなと思いながらもとりあえずSP6をインストールしてみると一応気になっていたバグは取れていた様子.
とりえあず,手元のプロジェクトを読み込ませてビルドしてみたら,関数の書き方が古いとコンパイラに文句を言われた.そうですか,引数が無いときには(void)にしろということですか.