11計測班活動報告

計測班活動報告

11.7.27 こんなかんじ

こんなかんじです (でけーな… でも縮小すら面倒だった)
追記:間違いがあったので差し替えました
WS000138_3
ログ
WS000137
書くべきことはいろいろありますが、鳥コン本番直前なので終わってからにします。
交流会でも詳しい話をすると思います…

以上

11.7.13 ちょっと試してみた

今年のメイン基板はGPSが吐く生データを記録していないので、Google Earth等の地図ソフト上に飛行軌跡を
表示させるのに若干手間がかかります。
具体的にはログから緯度・経度・時刻等の情報を抽出して、それをGPSが吐くフォーマット(NMEA形式)で出力
し直すことになります。大したプログラムでもないですが、手間を減らすためにログビューワに機能を追加する形で
NMEA出力機能をつけました。
ログビューワが吐く偽装NMEAはこんな感じです。


$GPRMC,000352,A,3507.4706,N,13837.8479,E,,,030711,,,1
$GPRMC,000352,A,3507.4706,N,13837.8479,E,,,030711,,,1
$GPRMC,000352,A,3507.4675,N,13837.8479,E,,,030711,,,1
$GPRMC,000353,A,3507.4675,N,13837.8479,E,,,030711,,,1
$GPRMC,000353,A,3507.4640,N,13837.8479,E,,,030711,,,1
$GPRMC,000354,A,3507.4640,N,13837.8479,E,,,030711,,,1
$GPRMC,000354,A,3507.4603,N,13837.8539,E,,,030711,,,1
$GPRMC,000354,A,3507.4603,N,13837.8539,E,,,030711,,,1
$GPRMC,000355,A,3507.4603,N,13837.8539,E,,,030711,,,1
これがずっと続く

Google Earthを起動して
「ツール」→「GPS」にチェックを入れるとGPSインポートダイアログが出現します。
「デバイス」をファイルからインポートに指定してやって、他はデフォルトのままインポートしてみました
(ここで拡張子が.logでないとうまくいかないものがあるようです。詳しくは調べてませんが)

インポートした瞬間インド洋に移動したりはしましたが、日本に戻れば富士川の河口に矢印が見えるので
拡大して、このとおり!
WS000132
第7回の最後のフライトです。滑走路飛び切りとして行いました。

次は第8回の6本目(たしか)です。
WS000134
パスを適当に(パイ型に)書き込んで、定規ツールでざくっと測ってみます。
およそ140mでした。どうなんでしょうね?

11.7.7 久しぶりです

第三回以降の報告をしてませんでした。
特に目立った不具合等もなく、ほとんど書くこともなかったのですが…

ひとまず第七回試験飛行でエルロンを動かしたことを報告します。
実際には第三回からエルロンが動作する状態で持っていっていましたが、操舵試験での動作確認どまりで、
実際に飛行しているときに動作させたのは第七回が初となります。
(実は、パイロットが無意識のうちに「切っちゃってた」というのは数回あったのですが…)
詳しい状況や挙動は試験飛行報告のページにあります。

第七回で残念だったのは、せっかくきれいな値がとれるようになっていた高度計が、台座部が若干
ずれてしまったことで、最後の飛び切りの際の高度が正しくとれなかったことです。
原因ははっきりしているので、ずれないようにちゃんと固定しておきます。

あとは、操縦桿の操作性が良くないという話だったので、予備操縦桿の製作と合わせて調整をしています。
(設計さんが手伝ってくれています!!)
ひとまず操縦桿に不感角を設定して(一定以上切らないと反応しない)、次回のTFで様子を見ることにします。

11.5.24 第二回試験飛行報告

第二回TFの報告です。
・作業の進捗状況
前回書いたTODO:
操縦桿の固定部の製作、エルロン部の基板・リポ固定部の製作
高度計が変な値を返す問題の修正(台座で振動を吸収 / スレッショルドの調整)
回転計の追従特性のパラメータ変更
予備リポ確認
ツールリスト確認
については、一通り終わらせた状態で持って行きました。

・TF時の動作
左翼のエルロンが動作しませんでした。その場でいくらか検証したところ、
左外翼内でファイバーに異常が見られました。
前回うまく動作しなかった高度計は、スレッショルドを調整することでだいぶ
安定しましたが、まだ値が飛ぶ現象が見られました。
操舵まわりに関しては、特に異常はありませんでしたが、2本目の飛行でロガーが
初期化時に操舵との通信を確立できず、操舵のログが残りませんでした。

・良かった点
操舵基板に初期化完了のインジケータをつけたため、トリム調整などの作業が
格段にしやすくなりました。
必要なツールをまとめたボックスを作ったおかげで、組み立て、解体の作業効率が
格段に上がりました。

・反省点
高度計は再度調整が必要

・検証
起動時に操舵を発見できなかったのは、I2Cのビットが一部1が0に反転していたことに
よります。(詳細はログ)普段は起こらない現象なので、操舵が見つからないときは再起動を促す
警告音を発することで解決します。
左外翼のファイバーは、作業途中に断線したものと思われるので、ファイバーのみ
取り外して断線箇所を特定し、必要があれば再び問題が起こらないように対策して
取り付ける必要があります。
高度計は、前回とは逆に感度を低くしすぎたようです。

・次回までのTODO
ファイバー修理
高度計調整
テンポブザー再調整

最後に、第一回と第二回のログを載せておきます。tflファイルの中身はテキストです。
第一回試験飛行
第二回試験飛行

11.5.17 第一回試験飛行報告

お久しぶりです。
第一回TFに行ってきました。計測班の報告です。内容を電装関連に絞って書きます
前に書いたとおり、今年はTF時の使いやすさを目指しました。
その点を踏まえて第一回の反省です。
・作業の進捗状況
エルロン制御基板と操縦桿を除いて完成しています。操縦桿は仮固定、
エルロンは添え木で固定した状態で持って行きました。
・TF時の動作状態
操舵部、ロガー部ともにおおよそ問題なく動作しました。ただ、高度計は地面走行時に
変な値を返すことがありました。浮いているときは正しい値を返していたようですが、
浮いた瞬間を判別するのが難しいログになってしまいました。
細かい点では、回転数計の追従が自然でない、トリム調整時の操舵のリセットの
タイミングが若干想定より遅れる、の2点が気になりました。
リポの充電し忘れがあり、途中で残量がなくなりかけたため、その時点で撤収を
決めました。
・良かった点
フライト後のログの確認は想定どおり素早くできるようになりました。パイロットも
メイン基板のスタートさせ方を覚えてくれたので、ログをスタートさせてから
グランドクルー配置につく時間の無駄をなくすことができました。
・反省点
どのツールが必要で、どこに収納されているかがちゃんと決められておらず、
積み込み時にもたついた点(持って行くのを忘れたものはありませんでした)
リポの充電し忘れがあり、最後に2本くらい飛ばす時間があったのに撤収せざるを
得なかったこと
各部チェック時の必要ツールを洗い出せておらず、テントに取りに戻る時間のロスが
あったこと
トリム調整用の基板の準備、およびその時のパソコンの扱いに若干手間取ったこと
・来週までのTODO
操縦桿の固定部の製作、エルロン部の基板・リポ固定部の製作
高度計が変な値を返す問題の修正(台座で振動を吸収 / スレッショルドの調整)
回転計の追従特性のパラメータ変更
予備リポ確認
ツールリスト確認
全てできるかわかりませんが、金曜日に再度全機器をつないだ試験を行います。

11.4.1 クリエイター募集のお知らせ

春になりました!
気持ちいい陽気に誘われて、上着を着ずに出掛けては夜寒い思いをする毎日です

大学では早速新歓活動が始まりましたね
今日の諸手続きでテントに来てくださった新入生のみなさん、本当にありがとうございました。

さて、さっそくですが新入生の皆さん、F-tec計測班で電子工作をしませんか?
F-tecは人力飛行機を作ってますが、実は電装もかなり重要なんです。
電子工作が好きな人、なんか電気で動くガジェット作りたい人、とにかく中身を
見たくて電化製品分解しちゃったことがある人、みんな来てください。
経験は問いません。全部教えたいのでww
もしこの記事を読んで興味を持った奇特な人がいたら、ぜひサークルオリ来ましょう。
F-tecのブースで待ってます(鈴木)

11.3.9 そういえば…

そういえば最近全然更新してませんでした。
そういえばこの前風洞試験をやったんでした。(2/22でした)
非常に寒かったです(外より寒いって何事?)
今年の機速計は去年の物を使い回す方針でいるので、去年のを再測定という形になりましたが、
おおよそ去年と同じ特性であることが確認されました。

風洞試験のデータ解析は、もうちょっと理論を知らないと意味のある解析にならないんじゃないかとは
思いつつ、そんな暇はありませんと言い訳しときますw

そういえば、もうすぐ交流会ですね。
現在計測班はパイロット射出機構のメカ部分の動作確認に追われています。嘘です。

11.2.18 勢ぞろい

メイン基板が光った記念\(^o^)/
DSC00329_2

11.2.2 DMAで液晶(鈴木)

PSoC3のDMAコントローラを使い、秋月の液晶モジュール(SG12864A)を制御する実験を行いました。

SH3F0066
中央の針が20秒ほどで1回転します。CPUがバッファを書き換え、DMAがバックグラウンドで
バッファの内容をLCDに転送しています。
転送レートは(計算上は)30fpsほどで、実用上まったく問題のない速度が出ています。

PSoC3の内部回路は以下のようなものを作りました。
WS000018
PWM_2はDMAのリクエスト信号とLCDのE信号の生成タイミングを規定します。
PWM_1はLCDのチップセレクトとデータ/コマンド信号を生成します。SG12864Aは2つのLCDコントローラが
画面の左右をそれぞれ担当するようになっているので、CS1、CS2を適切に使用し、2つの画面でうまく画が
つながるようにデータを出力する必要があります。ここではCS1nCS2がHのとき上の写真の向きで画面右半分、
Lのとき画面左半分を担当するチップが選択されます。原点は上の写真では右下にあり、X座標、Y座標はそれぞれ
左側と上に向かって増加します。このため画面右下を先頭アドレスにとるフレームバッファを用意し、最初の
64クロック分はCS1側にデータを出力し、続いて64クロック分のCS2側のデータを出力するようにしています。
PWM3の出力は128バイトのデータに続いて1バイトのコマンドをそれぞれのチップに送信するようになっていて、
フレームバッファの最後にそのための2バイトのコマンド用スペースを確保しています。このコマンドでYアドレスを
インクリメントするようにすることで、CPUが全く介入することなく周期的な全画面転送を実現しました。
PWM_3は転送周期を決定しています。PWM_3に入力されるクロックの、最初の8クロック分だけ出力がHになるように
なっていて、この間だけE信号及びDMAリクエストが発生するようになっています。ここでは周期を30としたため
フレームレートは
500kHz(入力クロック) / 4(PWM_2の周期) / 130 / 30 = 32.05
より、30fps強となっています。(というよりなっているはずです。CPUのバッファアクセスとぶつかったりして
これより遅くなることはあるのか?)

WS000016
メイン関数の初期化が終わった以降のところです。lcd_line関数とlcd_clear関数はフレームバッファを書き換えるだけの
処理をしています。初期化が終わった後はDMAに全く関わることなく画面が更新されていきます。

PWM_3で周期ごとに割り込みを生成し、それをCPUで処理することで、1フレームごとに任意のタイミングで書き換え
処理などができるようになります。DMAのTDを工夫すれば画面の1部分だけ書き換えもできると思われます。
まだ最初につくったlputc関数とlprintf関数をまだDMAに対応させていないので、これらの関数を呼び出すと表示が
壊れてしまいます。DMA不使用のlputcとlprintfはデータ送信が最も少なくて済むように、LCD側の縦スクロール
機能を使っていましたが、DMAを使った場合送信データ量は気にしなくて良いので、もう少し分かりやすい
挙動をするように書き換えるつもりです。

11.1.30 これはバグでしょうか?(鈴木)

PSoC Creatorを使っていたところPWM(v1.50)でよくわからない現象に出くわしたので報告します。
具体的には、PWMをワンショットモードで使用したとき、トリガが最初の1回しかかからないというものです。

テストプロジェクトを使って実験してみたのですが、
回路図:
WS000013
PWM_2の設定:
WS000008
出力波形のイメージ:
WS000012

最初のPWM_1の出力でPWM_2のトリガが掛かっているのは良いのですが、
それ以降PWM_2のトリガが掛かっていません。
データシートを読んだところワンショットモードで動作中は、カウンタを
リセットしなくてもリトリガすることができるはずなのですがこれはバグでしょうか?
単なるデータシートの解釈ミスかも知れませんが、一応書き留めておきます。

追記:
最初のPWM_1の出力の立ち下がりからPWM_2の出力が1クロック遅れているのはデータシートの
記述と矛盾しません。
2011/2/2 使用したデバイスはCY8C3866PVI-021ES2です。プロジェクトをアップしました。
psoc3_pwm01

11.1.28 昨日の続き(鈴木)

昨日のPSoCライタ兼EEPROMライタですが、わざわざ両方書き込めるようにした
のには理由があります。

下の回路図を見てください。(必要なところ以外は省略してあります)
PSoCwithEEP

実は、こう接続することでISSPのコネクタからPSoCとEEPROMの両方に書き込むことができ、
かつ通常動作時はPSoCからEEPROMの内容を読み出すことができるようになっています。

通常動作時はSDA、SCLともに4.7kΩでプルアップされているので、この2線はI2Cバスとして動作します。
内臓のI2Cを使い、PSoCがEEPROMのデータを読み出すことができるようにP1[0]-P1[1]に配置しています。
こうするとPSoC Designerは「ISSPのピンとかぶってる」とWarningを出してきますが特に問題なく
動作します。
PSoCの書き込み時はライタ側からSDATA、SCLKラインに信号が供給されます。この信号はI2Cとは
プロトコルが違い、I2Cでのスタートコンディションに相当する信号は発生しないので、EEPROMには影響を
与えません。仮にEEPROMが何らかの反応をしてしまっても、PSoC書き込み時はXRESは0に保たれていますから、
EEPROMにはライトプロテクトがかかりデータが破壊されることはありません。
EEPROM書き込み時はライタはSDA、SCLラインをプルアップし、XRESを1にした状態で書き込みを行います。
この時WP端子は0になるのでEEPROMには正常に書き込むことができ、かつこの間はPSoCはリセットが
かかっているので、PSoCのフラッシュが破壊されることもありません。

この回路は操舵系のコクピ側のPSoCが、尾翼のトリムを記憶するところに使う予定です。
TF時には何度もトリムの調整値を書き換える必要が出てくることが想定されますが、この回路を使う
ことで、EEPROMの書き換えにも、PSoCの書き換えにも同時に対応できます。さらに、PSoCのプログラムを
スタート時に1回EEPROMから値を読み込むようにしておくことで、ライタを接続したままPSoCをリスタートさせ、
すぐに結果を確認することができます。EEPROMは必要なところのみ書き換えるようにすれば良く、PSoCの
プログラム中にデータを埋め込むより書き換え時間も短くできるでしょう。PC側のソフトはトリム調整用のものを
用意し、ボタンクリックで書き込み→リスタートできるようにすれば、非常に効率を上げられると考えています。

今年の基板で使う予定はありませんが、さらに上の回路のトランジスタにもうひとつトランジスタを並列につなぎ、
ワイヤードORをとるようにします。この信号をPSoCが制御するようにすれば、PSoCの動作時にEEPROMを
書き換えられるようになります。こうすることでEEPROMにログを残して、ライタがそのデータを吸い出すように
すれば、簡易データロガーになります。タイムトライアル部門なら飛行時間も短いので機器の数が多くなければ
この回路で十分かもしれません。

最後にPSoCのサンプルプロジェクトをおいておきます。
上の回路で、昨日のライタをUSB-I2Cモードで使い、EEPROMから読み出したデータをそのままPCに転送します。
ライタのファームとPCソフトも更新しました。
i2ctest01

11.1.27 PIC→PSoC(鈴木)

前回の更新からだいぶ時間が空いてしまいました。テスト期間中暇を見つけては
何をやっていたかというと、USB接続PSoCライタ兼I2C EEPROMライタのデバッグをやっていました。
物自体はだいぶ前からあったのですが、動作が不安定だったので公開はしてきませんでした。
まだまだバグが残っていますが、致命的なものはほぼなくなり、英語一列の試験も終わったことなので公開します。
以下回路図と部品リストです。
PSoCWriter01

使用パーツ:
* PIC18F2550
* 20MHz水晶発振器(詳細不明・秋月)
* 74AC125
* 2SA950
* 1kΩ x 3
* 4.7kΩ x 2
* 0.1μF x 3(0.1, 4.7ともに積セラ)
* 4.7μF x 1
* USB標準Bレセプタクル
* ピンソケット1列 x 5ピン
PIC18F2550を中心として、数個のパーツだけで構成されています。20MHzの発振器は秋月のものです。
要するに1000円PSoCライタですね。PICライタを持っていれば一瞬で作れます。
トライステートのバッファが乗っていますが実際のところ必要ありません。バッファなし用のファームも
近いうちに作る予定です。というかバッファなくしたらブレッドボードにも乗りますね。
コネクタは2.54mmピッチのピンソケットを使えばMiniProgと同じように使えます。USBもミニBを使えばケーブルも
同じものが使えるはずです。I2Cのメモリに書き込むときはSCLKをSCLに、SDATAをSDAに接続します。(そのまんまです)

書き込み対応デバイスは、現在のところ
* CY8C21434, CY8C24894, CY8C27443, CY8C29466
* ATMELとMicrochipのI2C接続EEPROM(24CXX)の16kbitのものまで
については実際に確認しました。

最後にファームウェアとPCソフトをあげておきます。
PCソフトの操作性ががまだクソですが、徐々に改善していくつもり(あくまでつもり)ではあります。
余力があればいずれGUI化されるでしょう。(←誰かやってw)
psocwr08:ファームウェア/usb01.hexを使用してください
psocwrlib03:PCソフトウェア/USBドライバにMCHPFSUSB Framework 1.0(?忘れた)が必要です。
ドライバはMCHPFSUSBでググればたくさん出てきます。

追記:
現在確認済みで、未修正のバグ一覧
PIC側
* CY8C21534の書き込み時、デバイスIDがうまく取得できない
* 64kbitより大きいEEPROMに書き込みできない
* セルフパワーモードの基板に書き込みできない(ハードを修正する可能性があります)
PC側
* PSoC書き込み時にパワーサイクルモードでしか書き込めない
* その他UIの改善すべき点多数…

11.1.8 やることは多いが時間が足りない(鈴木)

言いたいことはタイトルのとおりです。2月中のロールアウトを考えると気分が沈みます。
去年から製作していたLED表示部 + メイン基板の実装を進めています。(写真がぼけてしまって
すいません)
SH3F0061

上は表示部で、LEDを半分くらい実装し終わったところでミスがないか確認し、ついでにくり抜いた
スタイロと紙を重ねてみたところです。この上にやすってスモークにしたグレー透明のアクリル板を
重ねる予定です。予想以上にきれいにいきそうですが、まだ太陽光下で確認していないので、光量が
足りているか分かりません。てか実際に実験して見えなかったらどうしよう…
下はメイン基板で、表示部の下に重ねて取り付けます。まだ全部の部品の実装は終わってないですが、
中央に載っているのがPSoC3(CY8C3866)、左上に載っているのがCY8C27443です。27443はLED制御用で、
すぐ上に並んでいるFETでドライブします。CY8C3866とCY8C27443の間はI2Cで通信する予定です。

まだSD用の子基板を作ってないのでES3でSDを動かせるのは少し先になりそうです。GPS、音声出力、
I2Cに関してはぼちぼち実装と動作確認を進める所存であります…

この基板は、キャラクタ液晶みたいなのが載っていないので、デバッグ時には外部に何かしらディスプレイが
欲しいところです。自作のUSB-I2Cブリッジがあるのでパソコンの大画面を活用すべくそれを使いますが、
どうやらセルフパワーの基板を正しく認識してくれません。(バグですな) I2C EEPROMの書き込みも不安定
なので検証しないといけません。(バグですな) 冬なのになかなかこのバグたちが活動をやめないので困りますが、
それなりに取れたら、そしてWindows側のプログラムがちょっとはましなのが出来たらまとめて公開します。
しかし手持ちのPICライタも時々不審な挙動を示す… なんとかしてくれ!

今年もうひとつ考えているのがカラー液晶の活用です。なんとも嬉しいことに今月のトラ技の特集が
カラー表示デバイスです。書籍部がフライングしてくれたおかげですでに手元にあります。(1/7に入手できました)
今からじっくり読もう。
具体的にはPSoC3のデジタルブロックを使ってLCDコントローラできないかな、と考えているのですが、
頼みの外部バスインターフェースはまだPSoC Creatorのコンポーネンツにありません。LCD用にPSoC3を
ひとつ割り当てるつもりですが、CPUにどの程度処理を割り当てようか悩みます。デジタルブロックだけでは
出来ないと思うのですが、CPUをフルに使いたくはないので…
まだ完全に妄想の段階ですが、基板の設計だけは進めます。

最後に、PSoC 3/5のセミナーが2011/2/9にアキバであるみたいです。この日は必修のテストが3つもあって、
煮ても焼いても消えてくれません。単位が消えてもよければ行くのになあ!!進振りがなければいくのになあ!!

あけましておめでとうございます SPIのバグ(Cypressは悪くない)(鈴木)

先日公開したSDのプロジェクト(psoc3_sdcard01)ですが、OBの方からうまく動作しないという報告を
いただいていたので調査しました。実際に動かしてみると、CPUクロックとSPIクロックの比が一定の条件を
満たしていないと正常に動作しないようです。

MiniProg3のオンチップデバッグ機能を使って調べたところ、どうやらうまく動いていないときは
* 最初のSPI送受信関数呼び出しの際に受信FIFOにデータがない
* それ以降はSPIが期待したデータを返さない
ことが判明しました。シフトレジスタのシフト完了を待って受信FIFOからデータを取り出しているので、
正常に動いていればFIFOにデータがないということは無いはずです。PSoC3のSPIモジュールのバグかも知れないと
疑ったのですが、よくわからないのでSPIのテストプロジェクトを作って実験しました。
spiloopback
↑こんな回路です
実験してみると、どうやらうまく動かないとき、SPIの受信データが一つずつ後ろにずれて取り出されるようです。
もう少し手がかりを得るために、Cypressの公開しているサンプルプロジェクトと見比べてみました。
すると…

これ(自分のソース)シフト完了をTX_FIFO_EMPTYで検出してるwww

そうです。

TX_FIFO_EMPTYフラグが立つのはFIFOが空になったとき、つまりデータがシフトレジスタにロードされた時ですから、
これを検出してもシフト完了を検出したことにはなりません。シフト完了はそれを示すフラグが別にありました。
(BYTE_COMPLETEです)クロック比が一定の範囲内だと、このフラグが検出されるときちょうどシフトが完了していて
うまく動いているように見えていただけでした。
fifo
これを修正したところ、あっけなく動いてしまいました。(Cypressは悪くない!)

SDにひたすらログファイルっぽいデータを書き込むプログラムを作ってCPUクロック60MHz、SPIクロック8MHzで動作させた
ところ、20秒ほどで50KBほどのファイルができていました。
最後に一式をあげておきます。Readmeはノウハウ集です。psoc3_sdcard01_20101231.zipに入っているものと同一です。
{{attach_anchor(psoc3_sdcard01_20101231.zip)}}
psoc3_spi01
{{attach_anchor(psoc3_sdcard02.zip)}}
Readme

大みそかは紅白を見ながらPSoC3をいじって終わりました。2011年も計測班をよろしくお願いします。

10.12.28 PSoC3のリセットが???(鈴木)

先日外部から電源を供給するとPSoC3に書き込みができないと書きましたが、どうも間違いだったようです。
今日もう一度試したところ、正常に書き込みができました。
ひとつはまり所があって、PSoC Programmer上で、Options->Programmer Optionsで出てくるダイアログの
Auto-reset of ChipをDisableの方にしておかないと、書き込み後PSoCが反応しなくなります。
この項目がどういう意味なのかいまいち理解していないのですが、Enableだとリセットピンが効かなくなり、
(強制的にグランドにショートしてもリセットされない)結果的に電源を入れなおさない限り次の書き込みも、
通常動作もしなくなります。

先日の書き込みできなかった現象は、半田不良かなにかなのかもしれません。(その後何箇所かあたため直しています)
Auto-reset of ChipがEnableになっていると、いったんデバイスが書き込みモードに入ってしまったとき
リセットが効かなくなってしまったことと、フラッシュがまっさらなチップではリセット状態なのか、
書き込みモードなのか、通常動作なのか判別できなかったために、
最初の書き込みでリセットは効く→MiniProg3がクロックを供給するのでデバイスは書き込みモードに入る
→半田不良でDATAラインが正しく拾えない→永久にリセットが効かず、以降反応なし
のようなループに陥っていたのかもしれません。

Cypressのドキュメント(AN62391)によれば、PSoC3はパワーオンリセットや外部リセットが解除された後、
8μsの間にSWDCKピンに8クロック以上クロックを検出すると書き込みモードに入るとあります。
外部からリセットをかければ1.6MHzのクロックでも余裕なんでしょうが、パワーオンリセットでこの条件は厳しすぎる
ように思います。
PSoC1でも書き込みモードに入る方法は同じような感じになっていますが、こっちはその窓が3msもあり、
しかもPSoC側がそのタイミングを教えてくれるようになっています。このおかげでPSoC1は、
基板に実装された状態でも信号さえ拾えればパワーオンリセットで書き込みができたのですが、
PSoC3ではこんなに厳しい条件になって、パワーオンリセットで書き込むことは果たしてできるのでしょうか?
これをまじめにやろうと思ったらチップの消費電流をモニタして、急激な増加をトリガにクロック開始…
なんて非現実的ですね。MiniProg3がこんな機能持ってたらすごいですけど…

10.12.26 ES3動きました(鈴木)

PSoC3 CY8C3866PVI-021ES3をメイン基板に実装し、動作を確認しました。

最初の状態ではMiniProg3がデバイスを認識できず、書き込みができませんでした。
MiniProgがデバイスからの信号を拾えていないのか、デバイスが書き込みモードに入れていないのか
波形を見ていないのでわかりませんが、
*Vddio0とVddio2に3.3Vを供給していたのを5Vに変更
*外部電源をダイオードで分離しMiniProg3からの供給とぶつからないようにする
*外部オシレータ取り外し
*(ES2のバグを疑って)USB D-端子をプルダウン
で書き込めるようになり、順番に元の状態に戻していったところ、最終的に外部電源の分離だけは必要だとわかりました。
USB D-端子はプルダウンしないでも書き込みはできます。
(USBを使うように配線した場合の動作は未検証です。USBを使う予定はないので…)
外部電源を使用していてもリセットが効けばうまく書きこみはできるはずですし、
MiniProg3から供給して書き込む時の挙動を見ていると、最初にリセットが掛かっていない状態で電源が立ち上がり、
数百ミリ秒後(この時CPUは動作を開始している)にリセットがかかって書き込みモードに入っているようなので、
リセットが効かないということはないと考えて良いはずなのですが、うまくいきません。

結論としては、PSoC3に供給する電源のみ基板上で分離し、通常動作時は基板全体に供給、
書き込み時はMiniProg3からPSoC3のみに電源を供給するように設計すると失敗がないと思われます。
CPUが動作を開始してから書き込みモードに入るので、電源を分けた場合、周辺回路に電源が供給されずに
ピンにHレベルが出力される可能性があるので、そこを何とかしなければいけませんが、
まだES3はエラッタが出ておらず、この不具合の全貌が見えてきませんので一応この方針で行くことにします。

あと、PSoC Creatorのアップデート日が、Advanced Searchのページでは12月に入ってから
更新されたことになっています。ダウンロードのページでは日付が変わっていないので謎ですが、一応更新しました。

10.12.17 メイン(鈴木)

メイン基板の設計を終えました。今年の基板はTF時とデバッグの際の使いやすさを目指しています。
具体的には、
*SDスロットを表示パネルに載せることにより、TF中ログをすぐに回収できる
*各部の電圧をTF時のログに残し、デバッグに活用できるようにする
*統合できる機能は統合し、配線を減らしてメンテナンス性を上げる
の3つを重視して作りました。
前述のとおり、今年のメインにはPSoC3が載ります!
PSoC3を中心としてかなり盛りだくさんになってしまいましたが、以下今年のメイン基板の仕様です。
* 使用マイコン:PSoC3 CY8C3866PVI-021ES3
* インターフェース
* I2C x 2 (各種機器との通信用、表示部用)
* 回転数用パルス入力
* microSDコネクタ
* 外付け用SDインターフェース
* 音声出力(?)
* その他
* GPSモジュール
* 5.5-10V入力、5V出力のDC/DC
* テンポ確認用圧電ブザー
* 入力電圧(LiPo電圧)、5V系、3.3V系電圧の監視とログ
PSoC3も先輩に注文してもらっていたものが届いていました。
さっそく明日加工機で基板を製作し、少しづつ実装して動作確認を進めます。
パターンミスがありませんように…

あと、PSoC3を使うことにより、ピンのピッチが狭いのでTF中とか水滴がついて誤動作しないか若干心配ですが、
対策はおいおい考えることにしよう…

10.11.30 LED表示部設計中(鈴木)

今年も表示部はLEDとLCDの2つを搭載する予定です。
LEDの方に回転数、高度、機速を表示し、LCDの方にその他の情報を表示します。
LCDは主にTFやデバッグで使う予定です。ちなみにカラー化の予定。

さて、そのLEDですが、今年は7セグを自作します。
アクリル板(やすってスモーク加工) + 紙(エッジをきれいに見せるため) + セグメントくり抜いたスタイロ
の順に重ねて、一番下にLEDを並べた基板を貼るつもりです。
市販の7セグLEDのようにエポキシ充填しないので、若干ですが軽くなるはずです。
駒祭で展示した試作とほぼ同じ構成ですが、光の利用効率を上げるためにチップではなく
(おとなしく)砲弾型のLEDを使います。うまくいくか…?

10.11.17 LifeGame(鈴木)

今日の英語一列の授業で出てきたので作ってみましたwww
そんだけです。

SH3F0047

PSoC3試作まとめ(鈴木)

試作のまとめです。PSoC3を使う際の参考になればと思い公開します。
まずは回路図から
PSoC3_testboard01
0.635mmピッチなので基板加工機で変換基板を作り(下の写真です)
ついでにLEDを載せて動作確認用としました。それ以外の周辺回路は
ユニバーサル基板に載せてUEW線で配線しました。
3つあるI2C用コネクタは昨年度の機器に使用されたものとアサインおよび
コネクタを一致させたので、すでに動作確認ができている機器をつないで実験できました。
あと実際のところ抵抗やコンデンサの定数は「机の上にあったから」という理由で
決定されました。ので決して最適値ではありませんwww

次にプロジェクトファイルです。
psoc3_test01
{{attach_anchor(psoc3_test02.zip)}}
LEDを点滅させるプロジェクトです(決してプログラムとはいいませんwww)

psoc3_lcd01
デバッグ用にキャラクタディスプレイがあると良いので、グラフィック液晶を
キャラクタ液晶のように使う関数を整備しました。ただし新しいプロジェクトのものほど
機能が充実しているのでこれはあくまで参考です。
ひとつ気づいたのが、提供されているprintf関連(具体的にはsprintf)で、
次のような裏技が使えました。
sprintf(buf, “%u”, dat[1], dat[0]); // datはucharの配列、dat[1]が上位バイトで
// 両方あわせてword(unsigned int = 16ビット符号なし)を作りたい
要するに%uはwordを受けるようになっていて、引数の総バイト数で帳尻が合ってればうまく
動くみたいです(エラーはおろかワーニングも出なかった気がします)
これを使えばいちいち (word)dat[1]<<8 | (word)dat[0] みたいなことをしなくて良くなります。

psoc3_i2c01
{{attach_anchor(psoc3_i2c02.zip)}}
I2Cのテストです。01で24C256の読み書きを行い、02の方では去年の計測機器をつないでいます。
どちらもLCDに結果を表示しています。

dma02
psoc3_を頭につける命名規則に従ってません(笑)
CypressのサイトにあるDMAのデモムービーを見ながら作りました。LEDだけ使っています。

{{attach_anchor(psoc3_sdcard01.zip)}}
本命です。ここに入ってるLCDライブラリが最新です。
ChaNさんのFatFsおよびサンプルプログラムを移植しました。というかほんとに移植だけです。
最初にSDの動作確認をし、LCDに結果を出します。
その後FATの解析と’test01.txt’の読み出しを行い、それぞれ順にLCDに表示します。
正常に動けば全部一瞬で終わるので、テキストファイルの最後のほうだけが表示された画面が見えるはずです。

最後に
このプロジェクトには含まれていませんが、デバッグ用にI2C-USBブリッジを使っています。
この代物I2CブリッジだけじゃなくてPSoC(1)ライタとI2Cメモリライタにもなる優れものなので、
(というかPSoCライタがメイン…)いずれまとめて公開します。ちなみに使用したマイコンはPIC18F2550です。
MiniProgより書き込み早いのでそれだけでも作る価値あると思うし…

10.11.14 FatFsを移植しました(鈴木)

PSoC CreaterにはまだSD Cardモジュールがありません。
てことで、ChaNさんによるFatFs(汎用FATモジュール)を使うことにしました。
コンパイラが再帰呼び出しが使えないので、
再帰を使わないように若干修正して、無事動きました。

再帰が使えないのってクソ仕様だと思うけど、メモリがそんな多くないから仕方ないかも。
PSoCではないけど、Microchip C18でインライン展開が使えないのをこの前知りました。
小規模マイコンでインライン展開は必須な気がするのだが…

10.10.23 DMA!!(鈴木)

PSoC3に秋月の(琵琶湖に落ちたと思われる)グラフィックLCDをつなぎました。
5×7のフォントをいれてキャラクタディスプレイとして使い、
とりあえずprintfしとけば画面に表示されるようにしました。これでデバッグも楽になるかな?
その勢いでI2Cもやってみました。去年の機器(これも琵琶湖に浸かった)をいろいろつないでみました。

PSoC3ってDMAが24チャネルも入っています。
というわけで明日はDMAの実験です。LCDとか、SDとかのデータの扱いが楽になるかも…(あくまでCPU的に)
カラー液晶とかもDMA使えば割と楽に(あくまでCPU的に)使えるかもしれません、と妄想してます。

写真とか張るとわかりやすいですがめんどくさいのでなしですorz

10.10.20 PSoC3(鈴木)

MiniProg3を入手しました!
↓その結果
SH3F0039
写真ではわかりづらいですが、6つのLEDがモヤモヤしています。
作業時間は30分ほどでした。回路図入力で配線ミスっててエラーがでて
「はぁ~~~????」ってなってましたがそれでもすぐできました。
PSoC Creatorはけっこういい感じです。というか回路図描いただけwww
流れとしては、
回路図描く(ここでCPUへのInterruptとか設定できる)→プログラム書く→ピンアサイン設定(!!)
といったところで、プログラム書くとこを除けばPLD開発みたいです。
これからメイン部に必要な各機能をテストしていきます。(今週の土日が勝負!!)
なんかCypressのサイト見てるとエラッタがいっぱいあります(しかも更新も多いみたいです)
消費電力がデータシート値を全く満たせていないのはまあおいといて、
この機能は使えません/使わないことを推奨します、みたいなのもたくさんあるので、
そういうとこではまらないといいですが…
てか早くES取れて欲しい。
プロジェクト一式:{{attach_anchor(psoc3_test02.zip)}}

10.09.21 PSoC3(鈴木)

PSoC(1)だとSDを扱うのに相当無理があるので、
どうせならGPS受信等も統合してしまうと良いと思いマイコン変更を考えていたのですが、
どうやらPSoC3が入手可能みたいです.早速入手してみます.

というかSHマイコンってほんと家電向けですね…
PWMが6チャネルとか12チャネルとか…

10.09.15 SH動作確認(鈴木)

先日秋月で入手したSH7125Fマイコンボードの動作確認をしました.
RS232だけで書き込みができるのでお手軽です.ドキュメントが日本語なのもとっつきやすさという点で良いですね.
ただペリフェラルがあまり充実していないので…
もう少し検討が必要ですね

10.09.11 マイコン選定(鈴木は)

計測班の鈴木です.メイン基板を担当します.
今年はメインのマイコンの変更を考えています.
PSoC3/5が入手できるようになれば開発環境が統一されて良いのですが、
今のところは候補はARMとかH8とかになりそうです.

10.09.11 発足しました(板持)

F-tec11 計測班班長になった板持です.遅くなりましたが,発足の報告です.
今年の計測班も,去年度と同じく3人体制です.
人数が多いので色々と新しいことにもチャレンジできそうかなー,って気分です.
去年度はあまりにもWikiの更新をサボりすぎたので(自分は今年で2年目なのに,初めての更新です),今年はもっと頻繁に活動報告していきたいと思います.