ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
« 1 2 (3)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
webadm
投稿日時: 2011-3-2 9:08
Webmaster
登録日: 2004-11-7
居住地:
投稿: 2990
Re: ようやく完成
もうあれから3年以上の歳月が経ってしまった。

検索でエレツール株式会社さんを探してここまで来られる方がちらほらあったので調べたらエレツール株式会社さんのサイトが消失していることが判明。それでか。

したがって当時無償公開されていたI2C I/F FreeIPを探しにこられたのではないだろうか。当時のURLがあれば、もしかして木村さんのMyLaみたいにinternet archiveにそっくり歴史保存されている可能性があるが、残念ながらURLもブックマークしていなかったのでそれもできない。Googleのキャッシュにも無い感じ。

オリジナルのI2C I/F FreeIPのソースコードは手元にあるのだが、得に利用条件とかは制限なく自由にご活用くださいということだったと記憶している。ただし著作権はエレツール株式会社さんにあるのですでにサイトを閉じたということで公開を取りやめてしまっている。まだサイトが存在した頃ならいざ知らず、今となっては著者の許諾なく勝手に再配布はできない。

実に良く出来ているのでもったいないことだが、暇があったらVerilogで同様のものをスクラッチから書くことも可能だ。しかしいつのことになるやら。

というのも、別の件でそのI2C I/F FreeIPをベースに17個のLEDを制御できるコントローラを即席で作るという必要が出たので、以前にこしらえた基板とかを引っ張りだしてみたものの、基板の配線図が見当たらない。



確かI2C I/F FreeIPをベースにこしらえた3軸加速度センサーエミュレーションIPをトラ技MAX-IIに書き込んで本物のセンサーチップの代わりにPIC評価基板に使っていたのだが、すっかり詳細を忘れてしまっている。やはりドキュメントは残しておくべきだった。

I2Cだから信号線が少ないし簡単だからということで配線図も書かずに作ったようだ。

でも段々思い出してきて、トラ技MAX-II基板をこんな具合に挿して使っていたのだった。



これにUSB I/FとしてPIC評価ボードにI2Cレベル変換基板をアタッチしたものを接続していたのだった。



PIC評価ボードのレベル変換基板は当方で作成した回路図を提示して以前の会社のハードウェア屋さんに組んでもらったもの。どうみてもやっつけ仕事で本職が作ったものとは思えない。人のことは言えないが。

これに今度は17個のLED表示回路を付加すれば別の人にお願いしているデバイスドライバのデバッグに使える。どうも本当の製品は台湾で開発しているらしいがまだ出来ていないらしいので待っていてもしょうがないので自前でエミュレータを作って事前にデバッグしておこうというアイデアである。

I2C I/F FreeIPは今見ても非常にシンプルかつ確実に動作する造りなので、17個のLED制御機能を追加するのはわけのないことだ。

問題は外部のLED表示回路で。CPLDの信号線にはあまり電流が流せない(CPLDそのものの消費電流が多くなるしノイズで誤動作や故障し易くなるのを懸念してのことだ)ので外部に別途電流制限回路を組む必要がある。昔はトランジスタと抵抗で組んでいたが、今はトランジスタアレイICがあるのでそれを使った方が賢明だ。

webadm
投稿日時: 2011-3-2 18:44
Webmaster
登録日: 2004-11-7
居住地:
投稿: 2990
I2C LEDボードのパーツ調達
即席でI2C LEDボードを作るための材料を秋葉原で調達。



トランジスタアレイは入力電圧が一番低い(TTL,5V,CMOSレベル)のものを購入。7回路のものと8回路のものがあるが、8回路のものを24bit分購入。といっても1パック2個入りなのでそれを2つで32bit分。1個は実験評価用かな。

LEDは降伏電圧が2V前後の赤色高輝度LEDの50個入りお徳用パック。青色とか白色タイプの高輝度LEDは総じて降伏電圧が3V以上もあったりするので、より高い電源電圧を必要とするので敬遠。実際にはもっと低い電圧でも光るとは思うけど。そんなに大きいのはかさばるので5mmのが丁度よいかも。

以前トランジスタで組む時は電流制限抵抗を降伏電圧とON時電流の設定値から計算して求めていたが、面倒なので石塚電子の定電流ダイオード(4.5mA)で済ますことに。抵抗器と比べたら高いけれど、電源電圧が変わっても回路変更しなくて済むので即席という点では好都合。10mAも流せば明るいのだけど、デバッグ用なので明るすぎると目に悪いのとCPLDと共通のところから電源を取るのとスタティック点灯にする予定なので消費電流を減らすべく10個入りで棚の在庫が豊富な4.5mA品を選定。10mAのは需要が多いので棚には在庫が置いて無くて店員にお尋ねくださいと書いてあったので敬遠。

実験用安定化電源で定電流ダイオードと高輝度LEDを直列に接続して電圧3.3Vを印加すると十分な輝度で点灯することを確認。降伏電圧も1.8Vと低く、これであれば3.3V電源電圧でもいける。

あとはトランジスタアレイがこのドレイン電流の時に3.3V CMOS入力でonしてくれるかどうか。
webadm
投稿日時: 2011-3-2 23:02
Webmaster
登録日: 2004-11-7
居住地:
投稿: 2990
Re: I2C LEDボードのパーツ調達
LED駆動回路用のトランジスタアレイICを実験評価するために久々にブレッドボードを使用。

もうだいぶ埃がたまっていたが問題無い。

とりあえず1回路分だけ予定しているLED駆動回路を組んでみた。

心配だったのはON入力電圧の閾値がどのへんかという1点だけ。あまり高いとCPLDのLVTTL出力電圧では不足するかもしれない。



案ずるよりも産むが易し。

とりあえず入力を解放状態にして電源を加えると当然ながらトランジスタはオフ状態なのでLEDは点灯せず。

今度は入力に電源電圧と同じ3.3Vを加えると当然ながらトランジスタはONになりLEDが点灯。

問題はどの辺まで入力電圧でONになるか。やってみるとトランジスタアレイのデータシートと条件は異なるが、データ通りに2.4V付近に閾値がある。

MAX-IIのデータシートを確認すると出力電流が数mA程度ならほぼ3V以上の出力が出るので問題ないだろう。LED数個程度なら直接LEDをドライブ出来るが、今回は17個もあるのでダイナミック点灯でもしない限り消費電流がばかにならないし熱を持つので故障につながりやすい。虎の子MAX-II基板を大事に使わないと。
webadm
投稿日時: 2011-3-3 9:58
Webmaster
登録日: 2004-11-7
居住地:
投稿: 2990
エレツール株式会社のサイトの魚拓
当時使用していたノートPCのお気に入りを調べたらエレツール株式会社のサイトのFreeIPページのブックマークを発見。当時のURLは

http://www.eletool.co.jp/newfile.htm

だった。当然現在は消失しているのでインターネットアーカイブで検索したら2001年から2006年末までの間crawlされていることが判明した。

internet archiveのエレツール株式会社のFreeIPページ魚拓

やはり記憶通り、特に用途に関しては制限を設けておらず自由にお使い下さいとある。ただし著作権は放棄していない旨も明記されている。

残念ながらFreeIPそのもののファイルのリンクが切れており、Internet Archiveでは木村さんのMyLaのケースと違ってこれらのファイルは保存されていなかった。

やはり著作権が放棄されていない以上、勝手に再配布はできない。
webadm
投稿日時: 2011-3-3 13:12
Webmaster
登録日: 2004-11-7
居住地:
投稿: 2990
Re: I2C LEDボードのパーツ調達
そういえばPNPトランジスタの手持ちが沢山あったので設計方針を変更してダイナミック点灯を検討することにした。

以前万年カレンダー時計を作った時には高輝度でない7seg LEDを多数桁表示する関係で1seg当たり20mAを流す必要からsegドライブもcommonドライブも大電流をON/OFFできるDarlington接続回路を使用する必要があった。

今回はLED一個当たりの電流は4.5mAと少なく、ダイナミック点灯でも同時には最大8個しか点灯しないので大電流制御も必要なくPNPトランジスタ1個でまかなえるのではないだろうかと考えてのことだ。

common側にPNPトランジスタを置いて、base電流をトランジスタアレイでON/OFFして制御する。8個のsegが同時にONしたとしてもC-E電流は36mAしか流れないので小信号増幅トランジスタで十分で電流増幅度が十分高いのでそれほどbase電流を流す必要は無いはず。

実際に1回路分だけブレッドボードで組んで確かめてみることに。



最初base電流制限抵抗を入れてなかったので大電流が流れて焦ったのは内緒だ。

10K程度のbase電流制限抵抗を入れて期待通り点灯制御が出来ることを確認。

さてあとは、MAX-IIのi2cLEDコントローラーをデザインだが、果たしてダイナミック点灯ロジックが入るかどうか心配だ。実際にやってみるしかあるまい。

と思って久々にQuatusを起動すると当然ながら4年前にwebライセンスは失効しているので以前のデザインを見ることはできるが新しいプロジェクトが作成できない。

Quatusからライセンスセンターへ接続すると通常のサブスクリプション・エディション用らしく当然持っていないのでそこではweb ediionのライセンスは発行されない。

仕方なくサイトトップからQuatusのダウンロードページに行って最新のweb editionをダウンロードページへ進むとそこで次のステップとしてライセンス発行のステップへのリンクが出てくる。

ダウンロードはせずにそのライセンス発行ページへ行くと、サブスクリプション・エディションがメインだが、それ以外のレガシー・ライセンスというのがあって、そこへ飛ぶとWeb editionのライセンス発行ページにたどり着けた。

ここではシリアル・ナンバー、Tガード、NIC ID、もしくは ホスト IDのいずれかを入力してライセンスを入手できるようになっている。

とりあえずNIC ID(EthernetのMACアドレス)を調べて入力。

しかし2009年以前のQuartusしか持っていないためか受け付けてくれない。

良くみたら

「バージョン 8.1以前のソフトウェアの場合のみ Quartus II ウェブ・エディション ソフトウェアおよびModelSim-Altera Web Edition ソフトウェア ライセンスの申請が必要となります。」

にあるリンクをクリックしたら別の英語のページが現れて古いWeb edition用のライセンス申請が出来ることが判明。

ここでNIC IDを入力して申請すると、一発で発行された( ´∀`)

ふう、今時Quatus 6.1なんて古すぎるのか。浦島太郎状態。

これで再びデザインが出来る。

webadm
投稿日時: 2011-3-3 15:32
Webmaster
登録日: 2004-11-7
居住地:
投稿: 2990
Re: I2C LEDボードのパーツ調達
一応ダイナミック点灯方式にしてもLE占有率は54%程度なので余裕でMAX-IIに入った。

あとはシミュレーションでロジックを確認して、PICのファームウェアを改造してLED制御レジスタの読み書きがPC側から出来るようにして実機で動作確認を行うのみ。

しかしシミュレーションが表示系を確認するのにも時間がかかる。
webadm
投稿日時: 2011-3-3 23:45
Webmaster
登録日: 2004-11-7
居住地:
投稿: 2990
シミュレーションではまる
ダイナミック点灯方式のRTLは書いたのだが、急遽やっぱりダイナミック点灯だと3サイクルのうち2サイクルは消灯していることになるので見かけ上明るさがスタティック点灯の時よりも下がることを懸念してスタティック点灯方式に戻した。

既に実機で動作実績のあるIPなのであとはシミュレーションをすれば同様に動くはず。

ところがすっかりI2Cのタイミングやら転送フォーマットを忘れてしまっていて、シミュレーションパターン作成時に勘違いをしていた。

それと以前書いたIPだと実はデバイス方向への書き込みが機能していなかったことが発覚。勘違いで修正したところが間違っていた。

以前はセンサーなので書き込みは無視しても読み出しだけ正しくデータがマスター側に転送されればよかったので発覚しなかったのだった。

今回はLED制御値の設定と読み出しが出来る必要がある。なのでその2つのシーケンスをシミュレーションすることに。

テストベンチではなく、タイミング入力でやったのでI2CのSCLやSDAのタイミングが実行転送レート数MHzになっていて十分なサンプリングがとれないところもあったが、適宜調整して意図した通りの動作をすることを確認。

最初にLED制御信号設定のシーケンスはこんな感じ。3バイトの転送データは01H,03H,07Hを設定している。それが順次内部のレジスタに取り込まれ、それがLED出力信号に反映されている。



あと読み出シーケンスは最後に設定されたLED出力設定値を読み出すもの。内部に保持したレジスタが順次シリアルに変換されて出ていっている。



あとはこれをMAX-IIに書き込んで、PIC側のファームウェアを作ればできあがり。
webadm
投稿日時: 2011-3-5 12:42
Webmaster
登録日: 2004-11-7
居住地:
投稿: 2990
PICではまる
PICの開発環境で確かUSB関連のframeworkがあったはずと探してみるとそれらしきフォルダーはあるものの中身は空っぽ。

Microchipのサイトから最新版をダウンロードするとだいぶ変わっていた。

WinUSBドライバを使ったファームウェアのサンプルまである、これが欲しかったのよね。

といってもWinUSBドライバインストール用のファイルとPC上のサンプルアプリが提供されているだけでファームはProduct IDが変えてあるだけだった。

とりあえずそれをベースにすることにしてビルドしようとするとIDEに怒られる。projectやワークスペースファイルのフォーマットが違うらしい。

どうやら最新のIDEを使わないとだめくさい。

そこでまたMicrochipのサイトから最新のIDEをダウンロードする。

このあたりでICDのドライバが一緒にインストールされるのだが、logファイルがなんたらというエラーが永遠に出続ける状態に。

とりあえずOKボタンを押しつつけていたら終わったくさいけど、どうも変。

PCを立ち上げ直すと、再び同じエラーダイアログが繰り返し出てくる。これもOKを押し続けているとようやくデスクトップ画面にたどり着いた。

最新のIDEを立ち上げてビルドしようとすると、コンパイラが古いらしくいくつかのベンダー固有のキーワードが未定義だと怒られる。昔は無かったので、エラーの出る2行だけコメントアウト。

ビルドは通った。ダウンロードして動作するか確かめるためにICD2をつなぐとドライバのインストールが求められる。

いやな予感がしてきた。自動的に検索とすると永遠に終わらない。

キャンセルも前に戻るも効かない。タスクマネージャで強制終了。これも裏で強制ダンプが行われるので終わるまで時間がかかる。

どうにか検索しないで、ドライバフォルダーを指定する方法でドライバがインストールされ使えるようになった。

ファームウェアを書き込んでUSBポートに接続すると再びドライバのインストールが求められる。これも検索させると延々に終わらない雰囲気なので、再びフォルダー指定でかなり時間はかかったけどWinUSBドライバがインストールされた。

サンプルのアプリケーションを立ち上げて動作を確認するとLEDのON/OFFは機能している。ボタン入力の読み出しがどうも説明書通りには動かない。リセットボタンをかねているS1を押すとその時だけ押されたという返事が返ってくるがリセットがかかってしまう(´д` )

まあいいか。

これであとは以前にこしらえたI2Cライブラリを使ってCPLDのi2c ledコントローラとやりとりするようにすればよし。

試しにPC上のサンプルアプリを変更してベンダー固有のSetup転送を行うようにしてみたらファームウェアに要求が届くのを確認。



あとは送られてくるLEDへの表示設定値を受信してi2cでLEDコントローラのレジスタにそれを書き込む処理と、ホストから要求されたらLEDコントローラーのレジスタを読み出して返送するという処理を実装すればよい。

今はこんなところ。PICのUSBframeworkの使い方を良く知らなかったということが判明し、そっからどうすればいいか今調べ中。
« 1 2 (3)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
サイト内検索