CY8C5868AXI-LP035CPUコアは、ARMのCoretex-M3で、最大動作周波数は67MHzPSoC1のM8Cは、CPUとしては今ひとつだったので、かなり強化されているピン配置を見ると、ある程度機能毎にピンが決まっているみたいで、PSoC1ほどの自由度は無いのかもしれない。回路図を見ると、24MHzと32kHzの水晶発振子や外付けのEEPROMも搭載されておりとりあえず、何でも出来そうなフルスペックの贅沢な構成になっている。Creatorから簡単にProgramできるのが良いこのボードは、1つ手に入れておくと、いろいろ実験するのに便利だと思う。Designerとは、かなり違っているみたいだ。自分の場合、Creator2.1と2.2がインストール済だったが、そのままではうまくインストール出来なかった。全部、アンインストールしてから、再度インストールし直したらうまく行った。コンパイラ・ライセンスPSoC5LPは、コントローラとしてARMを搭載している。これは、Keil社のコンパイラを使用する。Internet...のボタンを押すと、ライセンス申請のページが表示され項目を入力して送信する。LICで、ライセンス登録が成功していれば、1年後の有効期限が表示される。Designで、新規プロジェクトを作成プロジェクト名を適当に指定して、Advancedで、DeviceをCY8C5868AXI-LP035に設定しておくTopDesign.cyschが開いた状態になるこの画面で、回路図のようにモジュールの配置やI/Oの接続を指定するようだ。[top]GPIOポート汎用の入出力ポートGPIOI/Oの設定まず、LEDが接続されているポートを置いてみる。Pinを、cyschの画面にドラッグする最初、表示が小さいので100%ぐらいにして、ダブルクリックするとConfigureウィンドウが開く。入出力に関しては、ちょっと奇妙な仕様になっている。ここでコンパイルしてみると、入出力ルーチンが生成される。名をLEDに設定したので、LEDというフォルダに、LED.c,LED.h,LED_alias.hというファイルが作られる。値は0x40005160u。レジスタアドレスが、何でこんなに大きな値なんだろ。特別、変わったことをしているわけではなさそうだ。操作しないのは、何か気持ち悪いんだけど。LED_SHIFT;}やってること自体は普通だけど、出力ルーチンとレジスタが違う。LED_PSは、CYREG_PRT6_PSで、値は0x40005096uGPIOポートPSoC5LPのGPIOポートのブロック図GPIOの構造的は、PSoC1とそれほど大きな違いは無い様にみえる。PSoC1の時は、DRレジスタのWriteとReadでは、内部的に別のアドレスをアクセスしていたが、PSoC5LPでは、明示的にレジスタが分かれているというだけのことみたいだ。PSoC1では、出力レジスタの状態が読めないので、ソフト的にシャドウレジスタに書き込んでから出力したりしていたが、そういうことをしなくても読めそうだ。いちいちI/Oルーチンを生成するような仕様にしなくても良かったんじゃないかなぁ。使わなければ良いのかもしれないけど。[top]LED点滅プログラムいろいろな方法で、LEDの点滅をさせてみるDelayルーチンとりあえずDelayルーチンが無いか検索してみると、CyDelayCyclesと、CyDelayUs、CyDelayというのが見つかった。}}ちゃんとDelayルーチンが効いているみたいだ。ディレイルーチンが用意されているのは有難い。割込みを許可すれば、SysTick割込みが実行されるということらしい。初めから、タイマ割込みが用意されているのは、物凄く有難いなぁ。ハードウェアのみでLED点滅PSoCならではのやり方、ハードウェアだけで、LED点滅させてみる。Clock...をクリックすると、システムクロックのブロックダイアグラムが表示されるILO出力は1kHzに設定されているが、Clock_1はこれを分周して1Hzを生成しているようだ。回路図上は見えないが、分周器が自動生成されて、接続されていると思われるデジタルブロックのカウンタを使ってるのか、専用の分周器があるのか、どっちなんだろう。これは分周器を自分で回路図上に置いた方が思ったような回路構成に出来る。enabled).でも、クロックを簡単に生成できるのはすばらしい。<project.h>コンパイルで、以下のWarningが出る。[-Wpointer-sign]とりあえずは動いたので、気にしないことにするFreeRTOSによるLED点滅FreeRTOSで、LEDを点滅するタスクを起動するRTOSのディレイルーチンを使用している教科書の例題の通りに入力111ページのリストで、CyRamVectorsのextern宣言がエラーになる。}}このプログラムだと、タスクが1つだけなので、RTOSのありがたみは、全く分からないが、ちゃんと動くことは確認できたvTaskDelayは、単なるディレイじゃなくて、カーネルに制御を戻して、他のタスクに処理をさせる意味合いもあるらしい最初、コンパイルすると、port.hでSyntaxエラーが出てかなり悩んだ。結局、プロジェクトの作成時にデバイス名を間違えてPSoC3を選択していただけだった。Creatorで、回路図(cysch)上にUSBUART(CDC)を置く次に、cydwrでPortを設定する。ポートは固定なので、P15[7],P15[6]に設定される後は、cydwrのClockタブで、USBのクロックを設定するIMOを24MHzで発振させ、2逓倍の48MHzをUSBのクロックとするUSBUARTのテストプログラムUSBUARTのサンプルを探してみるCypressのサンプルプログラムを見つけたんだけど、関数名が違うみたいなので、適当に直してみた。}}USBUARTのDATASHEETを見たんだけど、サンプルが全くないので困るPSoC1のモジュールのDATASHEETには必ず簡単なサンプルがあって、とても分かりやすかったんだけど。USB機器として認識させるUSBケーブルを接続しても、USB機器が認識されない旨のダイアログが一瞬出るだけ。デバイスマネージャをみても、それらしいデバイスが無い。Creatorを終了させてから接続したら、認識したというか、USB書込み用のUSB接続デバイスが残っていて、邪魔していたようだ。右クリックで、ドライバソフトウェアの更新を行うドライバは、プロジェクトのcydsn→Generated_Source→PSoC5ディレクトリ以下に、USBUART_1_cdc.infという名前で生成されているので、このディレクトリを指定して、インストールするインストールが成功すると、COMxxというように、COMポートとして認識されるので、TeraTermのようなターミナルソフトで、接続してテストしてみる正常に書き込めていれば、ターミナルでタイプした文字が、大文字に変換されて表示される。ドライバのインストールは、最初の1回だけ行えば良い。Creatorを終了させなくてもUSBコネクタの差換えで、HIDデバイスとしてちゃんと認識するようになる。独自API関数を使う教科書で独自のAPI関数を紹介している。便利そうなので使ってみる。雑誌の付録のボードは、Creatorでそのまま書けるし、電源はUSBから取れるので、とても使いやすいただUSBUARTとか使う場合、書込み後にケーブル差換えがちょっと面倒だった。PSoC5LPが、PSoC1と比較して、良いと思ったのはMPUがかなり高速になっている。Decoderやシフトレジスタモジュールの追加ちょっとがっかりだったのは、アナログの構成がPSoC1とかなり違う、特にSCFモジュールが無いのが悲しい入出力端子が専用化されて、少し自由度が減った気がするDFB(デジタルフィルタブロック)に関しては、いまいち理解できなかった。プログラム可能なDSPになっていて、いろいろ出来そうなんだけど、ちょっと難しそうPSoC1のMPUだけ高速版に交換して、アナログ構成はそのままにして欲しかったなぁ。デジタルブロックは、単純なシフトレジスタやUP/DOWNカウンタが欲しいとかレジスタ読み書きが、カウンタ動作に影響しないようにして欲しいとかあるけど、基本そのままでCreatorは、回路図で配線できるのは分かりやすいんだけど、Designerのパズルみたいなところや、自由度の高さはやはり良かったと思う。