アーカイブ

‘Project’ カテゴリーのアーカイブ

VS10xx(6)

2010 年 1 月 23 日 コメントはありません

ひとやま、越えました。

ずーっと長いこと・・・・最初にMMCを使った頃から・・・
課題だったマイコンからファイルシステムをアクセスする件。

・・・・・っていう導入は、前に書きましたね。ゑゑ。

この一週間の大部分を、シリアル通信の文字化け解消に費やしてしまった件。

AVRマイコンを内蔵のRC発振器で使うとき、
校正用の値を校正用のレジスタにセットすると
校正されるという・・・極当たり前のことなんですが。

その値がプログラムからは読めない場所にあって、
それを読める機能のあるライタソフトで読み出してプログラム内に埋め込むか
EEPROMにでも書いてそこから設定するか、なんですけど。

いつもなら、AVRStudioあたりのプログラマで
読み出して、その値をEEPROMの何番地に書く、という機能を使うのですが
以前作ったライタがいつの間にか古くなってて
ファームのアップデートも出来ず、結果的にはAVRStudioにおいてけぼり喰らってるので
えるむ/Chan さんのところのシリアルポート用のライタとそのソフト、
あとは、それをGUIで扱えるようにしたavrdude-GUIを使っています。
残念ながら、校正用の値をGUIで読むことも設定することもできないようで。。。

都合よく、手元にAVRDragonというJTAGICE-MkII互換機能をもった基板と
動作不良を疑われてペンディングになったVS1053bのユニバーサル基板が
なぜかJTAG仕様で作成されてたので、これにCPU変換基板を差し替えて
8MHz用の校正値を読んでプログラムに埋め込めばいいはず。

・・・・というのが、話の枕なんですね(ぉぃぉぃ

ことの始まりは、おそらく音が鳴り始めた頃に遡る。
転送速度とCPUクロックは依存関係にあるので、その辺の調整で、
とりあえず音が鳴ることが分かったとき辺りから、
シリアル通信によるデバックはほとんど必要なく、
設定値を変えてコンパイル→書き込み のシーケンスで作業は進められました。

ただ、ふとみると、文字化けしてるんです。
でも、まあ、デバックに使わないから放置してたんです。

FatFsを組み込むにあたって、まずはテストプログラムで様子を見ようと思い
サンプルをコンパイルして実行。
main関数から何まで、サンプルであれば文字化けもなく動いてる。
まあ、多少は文字化けしてましたけど。読めないほどではなかったので。

いざ再生プログラムに組み込んで動かすと、
案の定、動かない。
とりあえず、戻り値くらいは表示させないとダメかと思い、
メッセージを埋め込む。

そういえば、文字化けしてたね・・・・・。

実験段階では、ご丁寧に4MHz用の校正値を校正レジスタに入れてた。
実際には、当然最高速である8MHzで動かしたい。
8MHzも4MHzも、値にそんなに差はなかったから、そのままでもいいだろう・・・ぐらいに思ってたんですが

まさか、これが原因だとは・・・○| ̄|_

いろいろ試した挙句、「校正が何か悪さを?」と思い、コメントアウト。

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・直った・・

なんじゃそりゃ!!

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
ちなみに、8MHz用の校正値を読み出して書いたら、また文字化け。

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

なんばしよっとか!!

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

正直、疲れました。ゑゑ。

カテゴリー: Project, 電子工作 タグ:

VS10xx(5) ....デファクトスタンダードの功罪(?)

2010 年 1 月 23 日 コメントはありません

ひとやま、越えました。

ずーっと長いこと・・・・最初にMMCを使った頃から・・・
課題だったマイコンからファイルシステムをアクセスする件。

自作するほどの体力も気力もなくなりつつあるので、
この際、他人様の公開しているソースファイルを使ってでも、越えてしまいたかった。

とはいえ、最初にMMCを使った頃にはまだフリーでマイコンに組み込めるような
ファイルシステムは皆無だったことを考えれば、なんと恵まれた時代だろうか。

現実問題
ディスクフォーマットについて調べ始めると、かなり泥臭い部分が多いし
その解釈も拡張も各々が好き勝手にやった挙句、
「なんとなく、デファクトスタンダード(事実上の標準)?」という感じで広まっているだけに過ぎない。

HDDのフォーマットも、FDの記録密度も、なんら指針はないわけで。
あるのは、それこそ慣例のレベルでしかない。

※確かにISOでの規格化はあったかもしれないが、そんな表記よりも
「DOS/Vフォーマット済み」とか書くほうが分かりやすいことを考えると、
規格化されたこと自体あまり意味がない。

先頭セクタの値の意味も、FATの記録位置も、なにもかも。
ほとんどは、Microsoftが作ったFileAllocationTableという仕組みと
おそらくはIBM/MicrosoftがPC/AT用に書いたOSが、最初そうなっていた、というだけの
ブートセクタ、パーテーションテーブル、ソレにまつわる容量の限界。

よくもまあ、これだけ世の中的にMicrosoftに引きづられてるよなぁ・・・

昨今、FATでは限界があるので新たなフォーマットへ移行しつつあるわけで
逆に資料がどんどんなくなっていってしまうような仕組みなわけ。

だからこそ、今のうちに何とかしておきたかった。

今回のこの企画自体、FATが扱えなきゃなんともならないわけで。

フリーのFATファイルシステムとしては有名どころの、「FatFS」を
えるむ/Chanさんの所から持ってきて組み込んでみた。
その組み込みに実はこの1週間を費やしてしまった。

まあ、実際の作業時間は1日1~2時間しか取れなかったのだが
その大部分はFatFSとは無関係な、シリアル通信の文字化けと戦っていたというダメっぷり。

・・・・・ということで。とりあえず、愚痴終わり(え?えぇぇっ?

カテゴリー: Project, 電子工作 タグ:

バッテリーモジュール計画(1)

2010 年 1 月 19 日 コメントはありません

VS1011Eをちょっと脇において
ボタン電池を複数使ってこんなものを。

当初の予定では、
ボタン電池・・・正確には二酸化マンガンリチウム電池・・・を
並列にして3Vで容量を取れるようにしようと思ってたんですが

・・・・人に言うと
「リチウム電池を並列接続にはしない。というか、するな」

理由もいろいろ説明されて、そういうもんだと分かったので

4つをとりあえず直列にして、12V。それをステップダウンDC/DCコンバータで
目的の3V・・・入手の都合で3.3V・・・を精製。

使ってみた感じ、VS1011Eは普通に鳴らすぐらいは出来るようだ。
鳴らし続けて、どのくらい持つかな・・

まあ、実際にVS1101Eがどのくらい消費するのか調べるのが先かな。

カテゴリー: Project, 電子工作 タグ:

VS10xx(4)

2010 年 1 月 16 日 コメントはありません

前回、一応の結果として
「クロックが速すぎて、データが取れてない」と書いてはいますが、
そんな話は、とうてい納得できない。

VS1011E自体が24.576MHzを要求してるのに
ソレよりも遅いCPUからのシリアルクロックが速すぎるなんてことは
あり得ないですね。

じゃあ、真実としては、どういうことなのか。

デバイスがデータを再生(消費)する速度に対して、こちらが送りつける速度が
タイミング的に速すぎる。
だから、クロックを落とすとデータの消費と供給のタイミングが合うように見える。

結論としては
「それって、バッファを上書きしちゃってるんじゃない?」ってことに
気づくわけです。

ただ、それだけのことだorz

一ヶ月悩んで、さらにデバイスのダウングレードまでして
出た結論が「バッファの上書き」

・・・・・・・・・・・・・・・ま、まあ。途中で投げなかっただけでも(ぉ

カテゴリー: Project, 電子工作 タグ:

VS10xx(3)

2010 年 1 月 13 日 コメントはありません

さーて困ったぞ。
思いっきり原因不明ぢゃないですか。

思い当たる節は・・・まったくない。
ただ、時たま再生スピードが合ってないけど
それっぽく聞こえることがあったよーな・・・

Webを再度検索しなおすと、みんな最初は
「再生スピードがおかしい」という現象にあってるようだ。

・・・・・・・・・・・・・・・・!!!

まさかと思うが、クロックが速すぎる・・・・?

内蔵RC発振器の設定を見直し、4MHzを2MHzに。

・・・・・・鳴ったorz

をーゐ・・・こんなオチなのか?

データの転送速度が速すぎて、データを取りこぼしてただけ。
まぢですか・・・

そういえば、AVRでSDカードとVS1011Eで作ってる人のソースを見ると
毎回SPIモジュールを設定しなおしてるのがあったけど
それは、これが原因か?

とりあえず、クロックを8MHzに戻して、SPIのクロック設定を調整してみる。
CPUクロックの1/128設定で元データ通りの速度で再生できた。
今のところ、音楽データではないので真偽のほどは分からないが、
これで良しとしておこう。

分かってしまえば、完全脱力。

をれの、1ヶ月を返せぇぇぇぇぇぇぇ~~

そんな感じの顛末でした。
おしまい(を

カテゴリー: Project, 電子工作 タグ:

VS10xx(2)

2010 年 1 月 13 日 コメントはありません

勢い余って、グレードを下げることをあっさり決めた割に
この一週間は、発注してた基板が届くとあって
それどころではなかったのだが。

まあ、回路図はあっさりと書き上げて
部品だけはちょこちょこと買出しに行ってたわけです。

どうせ作り直すなら、MicroSDとFT232RLの基板も搭載しよう、ってことで。
基板到着後、一応MicroSDは実装。FT232RLはまだ部品が足りないけど。

会社に休業させられてる状態なので
時間は充分にあったはずなのに、なぜかまったく製作が進まないまま3連休突入。

土曜の夜に、大まかな配線図面を書いて
日曜の夜中に部品の固定だけ。
月曜の昼間に配線作業。

あーら。結構あっさり組めちゃったわね(ゐ
・・・単電源だとラクだねw

さてさて。

MicroSDの動作確認をとりあえず済ませて。
問題のVS1011E。
とりあえず、使ってるポートを変えているので修正。
その辺はまあ、問題ない。
しかし・・・・出てくる音は、前とまったく変わらずorz

なぜだ。。。(T_T)

カテゴリー: Project, 電子工作 タグ:

VS10xx(1)

2010 年 1 月 12 日 コメントはありません

実は、先月いっぱいいっぱい、VS1053bという
MP3デコーダICをいじってたんですが。

このIC,巷の情報を総合すると、
「データを転送し続ければ勝手に判断して再生してくれる」といわれるくらい
使い方は単純・・・らしいです。

・・・・が。
ハマりまくったわけです。
今頃、こうして記事書いてるってことは。

回路図の時点で、いくつか躓いてたんですが・・・

1.VS10xxシリーズは種類がいっぱいある。

電源なんて3.3Vonlyの単電源だとおもいこんでたのですが
このVS1053bは1.8Vと3.3Vを要求してくる。

2.とりあえず、で選んだCPUがATmega128

ほんと、手近にあったのを選んだのよ。
ソフトの資産もあったし、使いこなれてるし。
そしたら、Romが128KByteあるんだけど、コンパイラがどうにも。
サンプルで鳴らすデータを抱えなきゃならないのに、
あるサイズを超えるとデータ配列をコンパイルできない。

3.デバイスの電源電圧がマチマチだった

CPUは5Vで20MHzでフル回転したかったのに
VS1053bは3.3Vが限界電圧。
というか、その辺の仕様を斜め読みしかしてなかったので
恐らくVS1053bをひとつ、壊した(T_T)

そんなこんなで、ソフトを書いてたんですが。

CPUはとりあえず3.3V対応版を以前買って余らせてたのでそれを使う。
内臓の発振器つかって8MHzで動かす。
再生データはPCにあった適当なWAVファイルを変換して使う。

オシロスコープの波形も問題ない。
なのに、おかしな音しかならない。

かと思えば、電源投入直後だけは再生に成功(それでも再生速度がおかしい)するが
リセットや再投入するとまたおかしな音になる。

どうにもこうにも、煮詰まったまま年越し。
いろいろとソースファイルを探して回ったが、どれも処理自体は同じ。
原因が分からない。

どうすっぺえか。

思い余ってグレードを下げてVS1011Eで再度、ユニバーサル基板を組むことに。。。

カテゴリー: Project, 電子工作 タグ:

OpenOCD用

2009 年 12 月 30 日 Comments off

けっこういろんなところで話題になっている、
OpenOCD用JTAGツールを
今更ながら、基板化してみました。

と、いうか。

私がLPC2468の基板を起こした当初、OpenOCDを使ってる日本語のページなんて
ほとんどなかったんですけどね。
某C級出版の雑誌付録にCortexM-3やらLPC2388やらが付いてきてからですかね。
ぼちぼちと情報がそろい始めて、そのツールの回路図なんかも紙面で紹介されたりしてました。

今回参考にしたのは、OpenOCD用ツールでも結構有名どころの出してる資料。
原理的には、XilinxやAlteraと何も変わってないんですけど、その制御がUSBになってるってところが
これからの時代にマッチしてるわけです。
FT2232のJTAGモードとレベルシフトの素子が乗ってるだけの回路なんですけどね。
ピンの接続仕様まで同じになっていれば、OpenOCDからは互換品として扱ってもらえるので
それ以上のアレンジはできないのですが。せいぜいレベル変換の素子をトランジスタでやるとか
74xx125でやるとかぐらい。

ごたぶんにもれず、私もワンゲートロジックを駆使して回路をでっち上げたのですが
使った素子が5Vで動いてると、入力のHレベルがVCCx0.7Vになってしまうことがわかったので
最後の最後に動作電圧を3.3Vに変更しました。
これなら5Vトレラントの入力で取れるので、問題にはならないかと。

とはいえ。

しばらくOpenOCDやARM系に戻るつもりが余りないので。
いろいろ調べると、最近は汎用的なJTAGツールとして、いろんなソフトから使えるようなので
当面はAVRで使えるようにATMEL仕様のコネクタも付けられるようにはしておこう。

そんな感じで。
2層板のタイミング待ちですな。

カテゴリー: Project, 電子工作 タグ:

FT232RL TTL Unit

2009 年 12 月 27 日 Comments off

FTDIのFT232RLを使ってUSB経由でマイコンとシリアル通信をしようとすると
基板に乗せるか、簡単に済ませるなら秋月か何かでモジュールを買ってくるしかないのですが。

変換基板以上の機能なんか載ってないのに、
ソレを使うためにユニバーサル基板が他に必要になるっていうのは
どうにも納得いかない気がしてきた。

なんでTX,RX,GNDが並んでてそこにコネクタ付ければ使えるようなものがないんだろう。

いつもは、ユニバーサル基板にMAX232を乗せてしまうのだが
今回はちょっと場所がないので
なんか他の方法を・・・なんてやってたら。


勢い余って、基板引いちゃいました(てへっ

というか、気の長い話になってしまった(笑

とりあえず、某氏の進言どおり、電源端子追加で4ピン仕様に。
マイコン側の電源レベルが5Vでも使えるように、レベルシフタを入れてある。

USBのGNDがどうにもつながらなくなっちゃったので
脇にあるピンヘッダ用の穴を使ってしまいました(ぐはっ

一応、MicroSD Unitと同じサイズにしてあります。
まあ、どうせ面付けして作ることになるので、同じサイズなら面倒も少なくて済むし。

つーことで、タイミング待ち~なんだけど
既に待ち状態の物件とうまく面付けできればいいな~ぐらいな勢いで。

カテゴリー: PCB, Project, 電子工作 タグ:

MicroSD Unit

2009 年 12 月 27 日 Comments off

MicroSDを簡単に使えないのがどうにも我慢ならないので
思い余って変換基板を起こすことにしました。


なるべく小さくて、ユニバーサル基板に載るように2.54ピッチで
必要最低限の機能のもの。
基板サイズは 27mm x 23mm。
3.3V系で使うことを前提として、レベル変換は他でやってもらう。
最低限、カードの検出と電源の切り離しはやりたいので
いつも使ってるTPS2051B辺りを搭載・・・・・したらかなりギチギチに。
本当はバスバッファで切り離したかったんだけど、それは外でやってもらうことにして。
電源のON/OFFだって、やろうと思えばずっとONにだって出来るわけだし。

そんな感じで。
まあ、実績のある回路そのまんまだから
余り心配はしてません。

・・・基板屋次第かな。

カテゴリー: PCB, Project, 電子工作 タグ: