PSoCな知恵袋 †
ちょっとしたハマりポイント、こうやったら上手く行ったなどなど一言シリーズで
長くなりそうな時は独立したページを作成してリンクしてください
PSoC Designer関係 †
- ユーザモジュールのサンプルコードはモジュールのデータシートにありますが、Cypressのサイトには、サンプルプロジェクトがあります。
Design Resources-Resource Type:(をクリック)-Example Projects- PSoC Mixed-Signal Controllers
PSoC Express関係 †
- コードを書かずに、GUIだけで機能実現を目指しているツール。回路図やdigi-keyなどの注文コードの入った部品表も出力される。
- インストールして起動すると途方に暮れがちな雰囲気が漂いますが、下記で解説されています。
いずれもVersion1時代のものですが、GUIに関してはほぼ同じです。(Ver1->2でPSoC Designerから独立し、単独インストールでも動作するようになった)
開発キット関係 †
Cコンパイラインストール(Hi-TECH C)関係 †
Cコンパイラ(ライセンスキー)関係 †
- ライセンスを購入すると、PCコード(Payment Confirmation Code)が記入されたカードが送られてくるがこれはライセンスではなく、Cypressのサイトでライセンス申請すると、メールでlicense numberが送られてくる。
申請はCypressのサイト、設計リソース-C-Compiler Licenseから行う。申請にはCypress portalのアカウント取得が必要。
- CY3215-DK Basic Development Kit にはライセンスが付属しているが、PCコードの書かれたカードは付属していない。PCコードはICE Cube本体の裏側ラベル。
- 手間をかけて入手したライセンスを入力する場所が、どうやっても入力できないと言う方はこちらへ。
また、ライセンスのメールが届かないことがままあり、無理に英語でメールをしてさらに失望を深くしたくない方もこちら。
http://www.pastelmagic.com/tips/Clicense/clicense.html
- 「PSoCマイコントレーニングキット本」添付のライセンス登録ページではちょっとしたハマりポイントがある。詳細は下記をクリック
トレーニングキットでCライセンス
デバイス関係 †
- かつてCypressの日本法人サイトにあったCY8C27*43日本語データシート。
現在はこちら。http://www.pastelmagic.com/sample/psoc_datasheet.lzh
- PRoC CYWUSB6953に使われている48Pin QFNパッケージですが、
ダイセン電子工業 Q048という変換基板に実装できます。
- PRoCで使用される13MHzの水晶発振子は、Digikeyで買えます。(表面実装です。)
535-9118-1-ND ¥174
- CYWUSB6935には、CYWM6935という基板実装済みのものが存在します。
ヘッダにSPIインターフェースが引き出されており、PSoCなどでコントロールできます。
ヘッダは2mmピッチですが、ヒロセのDF11や2.5インチHDDのソケットが使えます。
FirstTouch?をプログラマとして使う †
下記クリックしてください。
FirstTouchをプログラマとして使う
ビルド時のwarning:area 'Area Name' not defined in startup fileメッセージ (ImageCraft?) †
- PSoC Designerの4.2SP3以降で次のようなWarningメッセージが出ることがある。
"warning:area 'Area Name' not defined in startup file './obj/boot.o'
and does not have an link time address."
※実際には'AreaName'というのは'UART_1_RAM'といった名称になっている。
このWarningメッセージについてはSP3添付のRelease NotesのKnown Issueで
This warning message can be safety ignored.
と書かれているとおり、無視してしまって構わない。(なぜかこの後のDesignerに添付されるRelease Notesには書かれていないが)
要するに、boot.asmの中に'Area Name'領域が取られてないということなので、無理やりなくしたいなら、boot.asmの元ネタである、boot.tplを書き換えてGenerete Applicationしてboot.asmを再生成してやれば良いが、あえてそこまでするほどのことも無いだろう。
ビルド時のinterrupt function requires addressメッセージ(Hi-TECH C) †
- #pragma interrupt_handlerを使ったサンプルソースコード等をHi-TECH Cでコンパイルすると次のようなWarningメッセージが出る。
"!WC:\xxx\main.c(38):(690) interrupt function requires address (warning)"
このWarningは無視して構わない。
Hi-TECH Cの場合、PSoC Designerに依存せず、ありがちなマイコン開発環境と同様に全部のソースコードを1から書き上げていくようなことにも配慮している。このための「お助け機能」として割り込みハンドラの後ろにアドレスを指定すると、割り込みのエントリからいきなり割り込み関数に飛ぶようなコードが自動生成される機能がある。
書き方はこんな感じ
#pragma interrupt_handler my_handler
void my_handler(void) @ 0x0006
{
}
This interrupt function requires addressというのは、このアドレス指定が無いけど良いの?という意味。PSoC Designerを使っている分には、割り込みエントリはboot.asmが担っているので、Hi-TECHの自動生成機能は出番が無い。
Sleep時の消費電流測定結果(参考) †
下記クリックしてください。
Sleep時の消費電流?
PSoC Programmerのアップデートチェック外し †
下記クリックしてください。
プログラマのアップデートチェック外し
Designer 4 with Imagecraft なプロジェクトを Designer 5 で読んだとき HI-TECH C コンパイラを使ってくれない †
Designerはコンパイラを複数選択することができるようになっている.コンパイラによって生成されるコードも異なるので、
- 既存のプロジェクトはどちらのコンパイラ用なのか
- 新規のプロジェクトでどちらのコンパイラを使うのか
を判定して意図されている側のコンパイラを使うようになっている.
このためImageCraft?を使ってビルドされていたプロジェクトをそのまま読み込むと、ImageCraft?のコンパイラを使おうとする。これをHI-TECHに切り替えるには
Project - Settings - Build - Compiler
のSelect C compilerでHI-TECH を選ぶといい.ちなみに、
Tools - Options - Build - Compiler
の Default compilerは新規プロジェクトで選択されるデフォルトのコンパイラの指定なので、新規に作成するときはこちらも要チェック.
CPUが24MHz動作時にLCD表示がうまく行えないことがある †
PSoC Designer5.0 Service Pack 5-Build972(Jun,24,2009)でLCDを使っているときにCPUが24MHz動作しているとプログラム中の特定のところでLCDへの表示がうまく行えないときがある。
以前のDesignerで動いていたプロジェクトをこのバージョンで読み込んで再ジェネレートしても発生する(再ビルドだけなら大丈夫)。現象を意図的に再現するのは難しくて確実に再現するパターンをは掴めていないけれども,LCD_Positionでカーソル位置を大きく動かした後に表示が来ていたりすると発生しやすいようだ。
原因と思われるのはLCD.asmの中で液晶パネルのレディ待ちをするCheck_Readyルーチン。以前のものはReadyになるまで無限ループだったのが,このバージョンからはデッドロック回避のためか255回ループで抜けるようになっている。どうやらこの255回というのが短すぎて,液晶がReadyになりきらないうちに次のコマンドを送ろうとしておかしくなってしまうこというカラクリらしい。
もし,不幸にして液晶パネルとの組み合わせでこの現象が発生してしまったら、元ネタファイルを書き換えてしまうのが確実だろう。
LCD.asmの元ネタは
c:/Program Files/Cypress/Common/CypressSemiDeviceEditor/Data/Stdum/LCD/lcd.asm
このオリジナルは念のために
copy lcd.asm lcd_org.asm
などとして,コピーして保存しておく.あとは .LCD_RDY_LOOP:と .UNLOCK:近辺を次のようにコメントアウトしてしまえば良い.
; push X
; mov X,255
.LCD_RDY_LOOP:
; jz .UNLOCK
; dec X
jnz .LCD_RDY_LOOP
.UNLOCK:
; pop X
これで問題プロジェクトをGenerateからやり直せばうまくいくはず。