【Capsense】PSoC スレ 其の四【USB】
フリーのPSoC ExpressにCコンパイラ付けられるんだから
そのままフル版も出せばいいのにとか思ってしまう。
たぶんサイプレスもPSoC普及に超有用だってことは当然判ってるんだけど、
コンパイラのライセンス元と必死の交渉してExpressにつけたんだろうなぁ。
いっそ1000万位しかるべき筋に払ってgccかsdccでも移植してもらえば
いいのに(gccはともかくsdccならいけそう)。
お土産ハードがなくなったのは米Cypressの方針(日本法人は逆らえない)
>>939 たぶん、思ってないんじゃないかいなぁ。$150程度だしね。
そんなこと思ってるようなら8051コアのEZ-USBでSDCCを正式サポート
にしても良いと思うけど、現実はKeilだけだし。
Expressにつけたのは、ライブラリをCで作成してしまったからとか、
なんかそういう理由じゃないのかいなぁ。
もともと「ソースコードを書かなくてもおっけ!」としたんだから、
ユーザ側でCを使うことを前提に考えたわけではないという気がする
941 :
940:2007/10/17(水) 01:01:14 ID:aLOZK3GY
あれ?消してしまった
お土産ハードがなくなったのは米Cypressの方針(日本法人は逆らえない) ・・だと思う
だな。あくまでも推測だけど、今までの流れ見るとそれっぽい
>>940 確か上級編でもおみやげ渡してなかった?
漏れは
>>936の推測のほうが正しい希ガス。
・・・そういえば、今週末に申込してたんだっけ。
交通宿泊関係を予約しないとな。
Cypressの人が読んでるとしてだが、本国の方にちょっち言ってあげた方がいいぞ。
治具作るのにちょっと使ってみるかとサンプル頼んだんだけど、指先に乗る
チップ数個に、フルサイズのトレーを2つ、しかもFedex別便で送ってくるってどうよ。
超恐縮するくらいのA4フルサイズな梱包がどかっとやってきて、何だ何だ
一体何が起きたんだ誤発送かと思ったら大山鳴動してノミ一匹で逆にビビった。
これまでもこの調子で送っていたとするなら、サンプル品発送部門のコストは
荷物数や重量だけなら1/10、部門としても半減は堅いと思われ。Fedexに
払ってた分をセミナ開催やサンプル品自体の充実に向けたらもっと普及すると
思うんだけど、どんなもんでしょ?
真面目な顔して直に言うような話でもないのでここに書き捨て。
PSoCDeveloper.comに「PSoCでボーレート自動認識のシリアル端末を作る」というネタ
(ホントは「可能でしょうか?」という大真面目な質問なのだが)があった。
モデムみたいにボーレートを自動認識しつつATコマンドを受け付けたいという内容で、
試しにやってみるとこれがけっこう面倒くさい。PSoCのコアの遅さも、なかなかいい感じに
面倒さを増やしてくれるw
処理が全部デジタルブロック内で閉じていればけっこう高速になるんだろうけど・・・
PSoCのデジタルブロックは1ビットデータをシリアルに処理するのが基本で、多ビットの
数値を演算することはCPUコアを介さない限りできない、という認識で合ってるよね?
ボーレートの認識をアナログで行う方法もあるんだろか。アナログブロックでマンチェスター
符号を復号化するアプリケーションノートがあったから、もしかしたら不可能じゃないのかも。
端末から"U"(0x55)を入力するとボーレートを自動的に合わせる程度だったら
8086時代に普通のUART使ってやられていたけどなぁ。
iRMX86のモニタなんかもそんな感じだったろ。
自動合わせ用キャラクタを"U"にしていいなら確かに楽なんだけどね。ボーレートを
調整する機会が最大5回もあるから。
自動合わせのキャラが"AT"だと一発勝負で合わせなきゃなんないから、けっこう
しんどい。115200bpsだと本当に時間の余裕がない。
どういう方法を想定しているのか知らんけど、”U"の1文字でほぼ確実に判定
できていたがなぁ。
まさかとは思うけど、CPUで1ビットの幅を測ろうなんて考えてる?
"U"なら楽だよね。"A"の1文字で判定できる?
元ネタの送受信条件をちゃんと書いてなかったが、実際のモデムATコマンドよりも
若干条件が緩い。
1. PSoCデバイスに対して非同期シリアルでコマンドを送信し、非同期シリアルで
レスポンスを受信する。
2. 文字の送受信フォーマットはN81N(スタートビット1、データビット8、パリティ
なし、ストップビット1)で、データビットはLSBからMSBの順。
3. ボーレートは300,600,...19200,...,115200で、どのボーレートでコマンドを
送信開始するかは不定。
4. コマンドは開始から終了まで同一のボーレートで送信する。
5. コマンドは"AT"か"at"のいずれかで開始する。どちらでコマンドを送信開始するかは
不定。
いくつか規定が必要な条件で抜けがあるので、モデムATコマンドの動作に倣って補完すると、
追加条件はこんな感じ。
6. コマンドの終了文字はラインフィード0x0a。
7. ボーレートは
(A)300,600,1200,2400,4800,9600,19200,38400,57600,76800,115200のいずれか
(B)(A)に加えて、110,14400,28800,56000のいずれか
(C)300から115200までの任意のボーレート。
8. レスポンスはコマンドと同一のボーレートで送信する。
9. コマンドのエコーバックを行う場合、コマンドの第1文字("A"または"a")から
エコーバックする。エコーバックもコマンドと同一のボーレートで送信する。
ボーレートの条件が3つあるのは、元ネタで当初ボーレートの条件が3.しか提示されて
おらず、議論の途中でいろいろな条件が提示されたため。(A)がいちばん緩い条件で、
(B)は56000と57600の区別がけっこう厳しい。(C)は、考え方によってはけっこう楽。
>>948 UARTだけでやろうっていうなら自由度は低いだろうけど、”A”でも別に
問題無いだろね。
もっとも、それでUARTのビットレートを切り替える間に次々にキャラクタが
到達したらどうするの?っていうのはあるかな。
連続してきてしまうことまで考えるならながーいシフトレジスタで取り込んで
CPUでごにょごにょして解析するとかしないと駄目かもね。
>56000と57600の区別
UARTの話なんだろ?区別する必要がないがな
スタートビット-'A'の先頭ビット
までの期間をカウンタで計測ってのが真っ先に思いつくよね。
でもそう簡単にいかないよな…。
サンプリングしてFFTとかw
>>945 'U'でボーレート自動設定ってえらく懐かしいネタだが、あれは実際にはどうやってたんだ?
UARTを最高速度に設定しておくと、どんな速度で'U'が送られてきても何かしらの文字が受信できて、
受信した文字が何に化けてるかによって元のボーレートが分かる、だっけ?
UART単独でできることって、その程度しか思いつかないが。
>>952 それだと問題があるから多分違う方法だろう。
その方法だとフレーミングエラーの発生を前提としているから、文字化け前の
文字を正しく推測することができない。
たとえばUARTが115200bpsで待ち状態になっているとき、57600bpsの'U'を送ると
フレーミングエラーの0x66とエラーなしの0xe6が受信されるんだが、
'U'のかわりに0xf5を2回送っても同じデータが受信される。
もう1つは、'U'のビットパターンが0と1の交互になっているせいで、
違うボーレートで他の文字を送っても'U'と全く同じビットパターンに
することができて、ボーレートの自動検出がそもそもうまく働かない。
たとえば38400bpsの'U'を送るかわりに115200bpsの0x1c, 0x1c, 0xfcを
適切な間隔で送信すれば、この2つの信号は全く同じタイミングになるので、
受信した側はこの2つを区別できない。
>>945が書いてるのはどんなアルゴリズムでこれを避けているのか、俺も興味がある。
954 :
953:2007/10/18(木) 22:05:09 ID:iKuDVzzu
× 'U'のかわりに0xf5を2回送っても同じデータが受信される。
○ 'U'のかわりに0xf5と0xfdを送っても同じデータが受信される。
orz
>>952 それだとボーレート自動認識時にどの文字が送られてきたのか判別できないが、モデム
ATコマンドは送られた文字が"AT"であることを識別しなければならないから、その方法が
使えないのは確実。
ボーレート調整用に捨て文字を送らせるというのは楽な方法なんだが、モデムATコマンドでは
その手が使えないから面倒なんだよね。結局、ビット長を計測するしかない。ないのは
分かってるんだが(しかし
>>945の方法が捨て文字を発生させないのであれば間違いを認め
ざるを得ない)、115200bpsだと1ビット分の時間で200クロックほどしか時間がないから、
捨て文字を発生させずに処理するにはCPUコアの処理能力が厳しい。
試しにプログラムを書いてみたところ、ビット長計測→ボーレート設定に500クロック程度
かかって、40000bps程度までしか追従できなかった。(捨て文字は無しで。)
デジタルブロックを大量動員して、最初の1文字だけはUARTを使わないで受信するように
しないと115200bpsは無理かな。
>>952 そんなもん。
29xxxの場合、DCBが8個あるから途中でやたらと変更したりしないなら、
8種類のボーレートで待ちうけしといて、最初のコマンド受け取った段階
でダイナミックリコンフィグしたりしてね。
2種類のやり方でやってみたが、どちらも38400bps止まりだった。
(1つはスタートビット期間中にビット幅の計測とボーレート設定の両方を行い、
最初のデータビットからUARTで受信する方法、もう1つはスタートビット幅を計測して
最初のデータビット期間中にボーレート設定を行い、第2データビットからUARTで
受信する方法。)
遅いほうが自動認識でカバーできれば、
>>956の方法を併用して、速いほう(57600,
76800,115200あたり)はボーレート固定のUARTで受信してフルカバーという手も
あるか。
8チャンネルパラで待ち受けるなら、
115.2k/76.8k/57.6k/38.4k/19.2k/9.6k/4.8k/2.4k
までカバーできるから、CPUは
1200/600/300ボーを検出できれば良いか
1200以下はあまってるDBBブロックをCRC/PRSにして取り込んでCRC値から
"A"判定なんていうことができたら面白そうだな
さて、PSoCセミナーL2に。
開発環境が旧いままで、あわてて新幹線でインストールしてる罠
960 :
959:2007/10/19(金) 14:22:27 ID:yO1RJgF5
PSoC L2、なんか以前の大セミナーと違って
学生とか若い人全然いなくて、緊張感ある罠
課題そのものは、CY3210-PSoCEVAL1をイチから弄る程度なので、
中級の文字に期待しすぎた感
>>959 中級コースは実質的にPSoC Designer入門編「PSoC Designerを使ってみる」だから、
課題の主題がPSoC Designerの操作方法になって、PSoC Designerを若干でも使ったことの
ある人には物足りない内容かも。
でもDevice Editor周りは、ソフトもハードも自作する人にはけっこう刺激的だと
思う。今週ずっと(>>944-のUART云々の関連で)デジタルブロックだけでどこまで
制御的なことができるか試してるけど、やればやるほど面白い。(まぁ制限が
厳しいからパズル的で面白いという面もあるが。)
サイプレスのサイトって弱いな
単純に、入力ピン=>Interconnect=>出力ピンにするだけでも
オープンドレインH/L、プルアップ/プルダウン・・いろいろ選べて
便利だったりするね
>>963 うむ、いろいろ選択肢があってとても楽しい。(苦しみでもあるw)
しかも、その選択肢にこれまたいろいろな細々した制限事項が付いているのが
また楽しいというか苦しいw
たとえば、入力ピンをプルアップ・プルダウンに設定して使うことができるが、
入力ピンをグローバルインプットに接続すると、その入力ピンはHiZにしか設定できなく
なる・・・など。プルアップ・プルダウンなんて入力ピンにこそ欲しいのに!www
FPGA/CPLDの初期の苦楽しみみたいなもんだな>パズル性
遠くない未来にがんがん集積度が上がってできることの幅が爆発的に広がって、
1ジャンルを築いたりして。
とりあえずデジタル・アナログブロックが今の10倍くらい集積されれば、もっと
抽象度の高いモデルの記述ができるようになると思うんだが、そうなるとますます
FPGA/CPLD的になってくるね。
FPGAもアナログ要素を取り入れたヤツが登場してるけど、PSoCのアナログブロックと
比較すると貧弱もいいとこだから、差別化のポイントはアナログ部なんだろうな。
しかしそこを伸ばしていくと、ますます魅力的なのに使いづらい、尖った製品になって
しまう・・・
967 :
959:2007/10/19(金) 23:23:28 ID:82Oxn34J
>>961 たしかに、PSoC使ったことない人の入門としては
非常にまとまっている感じ。
セミナー受けてから始めれば、効率よく使い方を覚えられそう。
例によって、Cライセンスもらえるし(同じキーだったw)
申し込んだのが、内容も決まってなかった2ヶ月前だったから、
いきなり上級受けるのもなんだし・・・せっかく有休取ったし・・・という。
ただ、中級で舐めくさって、上級でフルボッコになりそうな気もするw
>>964 グローバル入力にプルアップが使えないようにした理由はよく分からんなあ
仕方ないから、お隣のピンをプルアップにして外で繋いだりしてな
確かにPSoCだけで完結する世界なら、出力側でプルアップしておけば、
入力はプルアップする必要は無いというのは一つの理屈なんだが
====本スレ
>>1-5との相違点====
全体的に
・用語、フォーマットを若干いじった
>>1 ・過去ログに本スレ追加
>>4 ・本を2つ追加(英語ですが・・・)
・あぼんしたらしいので、PSoC取扱店から「W-field.com」を削除
・個別ページはなくなる可能性が高いので、商品ページのURLからトップページのURLに変更
>>5 ・
>>7の情報をマージ
・新幹線ネタをいったん削除(入れるかどうかはスレ立ての人が判断してくれ・・・)
====次スレタイ何にする?====
【FirstTouch】PSoC スレ 其の伍【EZ-Color】
【デジタルも】PSoC スレ 其の伍【アナログも】
【iPhoneにも】PSoC スレ 其の伍【GAMEBOYにも】
【アップルも】PSoC スレ 其の伍【任天堂も】
何か考えてくれ・・・
ちょっと質問です。
最初にPSoC Designerで「CY29466」に設定してプロジェクトを作り始めたのですが、
持っている石が「CY27443」だったことに完成した後に気づきました。
完成した後に使用する石を変えることは可能でしょうか?
可能であればその変え方も教えていただけないでしょうか?
質問だけで申し訳ないです
>>972 Start New Project → Clone Projectで、既存プロジェクトの内容を引き継いだ新しい
プロジェクトを、別の石を使って作れる。
Designerの上で
File=>NewProject=>Clone
だな。(そのくらいメニュー探せばすぐ出てくるだろうに)
>>972 29466が上位だから、ブロックの使い方次第では、27443のクローンができないかもしれません。
976 :
774ワット発電中さん:2007/10/22(月) 16:06:43 ID:oop9zonl
Clone Projectな〜
俺も最初、一瞬悩んだ。
知らないと結構悩むかもよ。
ちょっとだけな。
>974
かんべんしてやれ
977 :
774ワット発電中さん:2007/10/22(月) 16:32:47 ID:t4L+qMQ8
lib/pwm16_1.asm
lib/pwm16_1int.asm
lib/pwm16_2.asm
lib/pwm16_2int.asm
./boot.asm
./main.c
!E C:\Program Files\Cypress MicroSystems\PSoC Designer\tools\InvalidCompilerLicense.txt(0): ...Operation terminated. Compiler License invalid or not accessible
C:\PROGRA~1\CYPRES~1\PSOCDE~1\tools\make: *** [obj/main.o] Error -1
pmwled - 2 error(s) 0 warning(s) 16:14:08
初心者です。「はじめてのPsocマイコン」見ながらやってます。
LEDの点滅制御をやってますが、、、、
このエラーって何が原因か分かりません。
いきなりCをするのには親の許しが必要だお
979 :
774ワット発電中さん:2007/10/22(月) 16:49:38 ID:t4L+qMQ8
ライセンスって事ですか??
Compiler License invalid or not accessible
Cコンパイラのライセンスキーが登録されていない
Tools=>Options=>Compiler
で持ってるライセンスキーを登録
981 :
774ワット発電中さん:2007/10/22(月) 17:56:59 ID:t4L+qMQ8
ありがとうございます。
自分はCY3215−DKを購入したのですが、
PCコードが見当たらないのです。
一体どこにPCコードが書いてあるのですか??
983 :
982:2007/10/22(月) 21:53:18 ID:ylTQiutx
ICECUBEってあるとやっぱり、だいぶデバッグ楽ですか?
かなり楽。
ただしリアルタイムで信号のモニタはできないので、結局LEDデバッグ(的な手法)も
捨てられない。
987 :
986:2007/10/23(火) 00:47:44 ID:kKhUo07e
よく考えてみると、ICE-CUBEもあると便利だが、それよりオシロのほうが必須だわ。
ICE-CUBEはソフトのデバッグにしか使えないが、オシロはソフト・ハード両面に使えるし、
オシロなしでデジタルブロックの挙動のデバッグをするのは「電話の向こうにいるユーザに
口頭でWindowsの現在設定を説明させる」より難しい。
このあいだデジタルブロックで分数分周器を組んでみたんだが、その出力がちゃんと
設計どおりの分周比になってるかどうかなんて、オシロ以外では知りようもなかった。
最初はクロック4Hzの(3+1/3)分周とかでLED点滅させてたんだが、分周比が4以上に
なるあたりから微妙な分周比の違いなんて目視では見分けられないし、最終的に
クロックが24MHzでちゃんと動作してるかどうかなんて当然肉眼では見えないし。
ソフトの介入なしで動作するから、デバッガも全く無力。
秋月あたりの安物なんちゃってオシロでいいから、1台は用意すべし。
シミュレータが欲しいんだよなぁ・・