PSoC 4 Prototyping Kitは600円@秋月で安くていいのだが、USB端子的な端子の接触が甘くて、パソコンとのUSBの接続がうまくいかない場合が多い。
PSoC 4 Prototyping Kitは「I2CをやるためにPSoC 4 Prototyping Kitを使ってみた」で書いた通り、ボード上のタクトスイッチを押しながらUSBを抜き差しするとプログラミングモードになるのだが、USBの認識で失敗することが多い。
接続に失敗するとパソコンの再起動が必要となり、かなり困るので、mini-USBのDIP化キットとモーメンタルのタクトスイッチを使って接続しやすくすることを考えてみた。
まず、USB-Serial Bridgeの部分を折って、本体と切り離して本体とつなぐホールにピンヘッダをはんだ付けする。
USB端子的なところに線材をはんだ付けして線材の逆側をブレッドボード/ピン・ソケットに挿せるように加工する。いつもやっているようにQIピンを圧着して、熱収縮チューブで導体の露出部分をカバーした。
GND、D+、D-だけでよく、VBUS(プラス電源)は逆側のピンヘッダの方から供給する。
配線図
配線は大して手間ではないので、毎回ブレッドボードで組むことにする。
ブレッドボード上のタクトスイッチで電源をオフにして、PSoC 4 Prototyping Kit上のタクトスイッチを押しながら電源をオンにすると、プログラミング・モードに入る。
PSoC 4 Prototyping Kit上のタクトスイッチを押さない状態で電源オン/オフすれば通常モードで起動する。
プログラミングされるPSoC Prototyping Kitとは、P4.0(RX)/P4.1(TX)の2線だけ(と電源のVDD/GND)なので回路に組み込んだ状態でもP4.0/P4.1にアクセスできればプログラミングできると思う。
2017年2月8日水曜日
2016年12月14日水曜日
ロギング可能な温度計 でけた

基板図

VBUSとGNDのテスト・ポイントを追加。
部品面

PSoC 4 Prototyping KitとChar LCDを取り外した状態

ジュンフロン線でジャンパを配線してみた。
PSoC 4 Prototyping KitのUSB-Serial Bridgeの基板が裏返っているのは設計ミス。裏返したらつじつまがあったので苦肉の策(^q^; Eableで自分でDeviceを作って利用したがDeviceのConnectでミスってたようだ。Eagleで部品を作るのはだいぶ慣れてきたが、あんまり使いやすいとは思えない(--;
ピンソケットに刺しているRは、サーミスタの抵抗値を算出するための基準とするもので差し替えられるようにしておいた。
はんだ面

部品面でジャンパを這わせたのではんだ面はスッキリした。
Github: (ギフハブじゃないよ)
https://github.com/ryood/PSoC_4_Thermistor
自作のEagleのパーツ
https://github.com/ryood/EAGLE_Library
↑mylib2.lbrを使用
メモ:
Eagleで部品面でジャンパを配線する方法がわかったので(参考:「Eagleでユニバーサル基板の部品面でジャンパー配線を作図する (メモ)」)実践してみた。配線の手間ははんだ面でポリウレタン線を使って配線した場合と大差ない感じだが、部品面の見た目はあまりよくないな~。ショートしたり抜けたりする事故が減ることを期待している。
あまり考えていなかったが、この基板上でBootloader Hostを使って、そのままPSoC 4 Prototyping Kitにプログラミングできる。PSoC 4 Prototyping Kit上のタクトスイッチを押しながら、基板上の電源スイッチをOn/Offすればプログラミング・モードに入る。ということは、PSoC 4 Prototyping Kitのプログラマーとしても使える(^q^/
サーミスタはカプトンテープを使って測定対象に貼りつけようと思っているが、aitendoで買った5mm幅のカプトンテープの粘着力が弱くてすぐはがれてしまう。全然消費していないのでもったいないが、違う製品も試してみるべきか。
2016年12月6日火曜日
ロギング可能な温度計 基板設計
2016年12月4日日曜日
ロギング可能な温度計の構想
参考「PSoC 4 Prototyping Kitでサーミスタを使ってみる。(LCD表示)」
回路図

基板図(配線はまだ)

PSoC 4 Prototyping KitにくっついているUSB Serial BridgeのUSBプラグ的なプリントパターンは接触が甘いので使わないことにして、Mini-USBジャックを別途用意して、こちらでPCとのUART通信をさせることにした。
ちょっと困ったのが、PSoC 4 Prototyping KitのUSB Serial Biridge基板の両脇のピンヘッダ/ソケット用のパターンにUSBからの入力信号線が引き出されていないこと。USBジャックに差し込む用のパターンに直に線材をはんだ付けして使うことにした。

ブレッドボードで実験
部品並べ

部品並べ(LCDを外した状態)

パワースイッチはオルタネート・タイプ(押したらずっとON、もう一度押したらずっとOFF)タイプのプッシュスイッチで、強制的にUSBからの給電を接続、切断して再起動する。これはPSoC 4 Prototyping KitのUSB Serial Bridgeを再起動しないとPCのシリアル・コンソールがUSBデバイスとして認識しない場合があるため。
2016年10月20日木曜日
PSoC DCOにショットキーバリアダイオードで電源の逆接続対策をしてみる。
「ダイオードで電源の逆接続に対策する実験」で試したのをPSoC4 DCOに施してみた。
回路図
基板図
Github:
https://github.com/ryood/PSoC4_DCO/tree/master/PSoC%204%20Prototyping%20Kit%20DCO
回路図
基板図
Github:
https://github.com/ryood/PSoC4_DCO/tree/master/PSoC%204%20Prototyping%20Kit%20DCO
2016年9月25日日曜日
PSoC 4 Prototyping Kitでサーミスタを使ってみる。(LCD表示)
サーミスタ(SEMITEC 103AT)の測定回路をPSoC 4 Prototyping Kitに移植してみた。
UART通信に加えて、キャラクタLCDに値を表示するようにしてみた。
配線図(Pioneer Kit)
配線図(Prototyping Kit)
Github:
https://github.com/ryood/PSoC_4_Thermistor/tree/master/PSoC/PSoC%204%20Pioneer%20Temp%20Meas/PSoC%204%20Prototyping%20Temp%20Meas.cydsn
Putty、CPLTではソフトウェアの起動後にPSoC 4 Prototyping KitをUSB接続しないとシリアル通信がうまくいかない。PSoC 4のResetではだめで、USB-Serial BridgeをResetしないとダメなのかも?
Teratermは接続しなおさなくてもシリアル出力を読み取れるようだ。
UART通信に加えて、キャラクタLCDに値を表示するようにしてみた。
配線図(Pioneer Kit)
配線図(Prototyping Kit)
Github:
https://github.com/ryood/PSoC_4_Thermistor/tree/master/PSoC/PSoC%204%20Pioneer%20Temp%20Meas/PSoC%204%20Prototyping%20Temp%20Meas.cydsn
メモ:
Putty、CPLTではソフトウェアの起動後にPSoC 4 Prototyping KitをUSB接続しないとシリアル通信がうまくいかない。PSoC 4のResetではだめで、USB-Serial BridgeをResetしないとダメなのかも?
Teratermは接続しなおさなくてもシリアル出力を読み取れるようだ。
2016年9月22日木曜日
PSoC 4でCharLCD(HD44780)を使う
HD44780互換の普通のキャラクタLCDをPSoC 5LPで使うとPinによって動いたり動かなかったりしたので、PSoC 4でも確認してみた。PSoC 4 Pioneer KitとPSoC 4 Prototyping Kitを持っているので両方試してみた。
PSoCは割と自由にPin配置が決められるが、完全に自由と言うわけではなく機能によって使えるPinが決まっている。
PSoC 4 Pioneer Kit(3000円@秋月)とPSoC 4 Prototyping Kit(600円@秋月)は同じCY8C4245AXI-483を使っている。
CharLCDの割り当て可能なPinは
配線図
プログラムはPSoC CreatorのExampleの「CharLCD_CustomFont」プロジェクトをベースに、DWRエディターで割り当てるPinを変更しながら実験した。
PSoC 4 Pioneer KitではP1[6]がヘッダに引き出されていないのでPort P1は使えないようだ。
Prototyping Kitの方はP1[6]もヘッダに引き出されているが、CharLCD用にP1[7:1]を割り当てるとちゃんと表示されなかった。
信号線にLEDがつながっているので何か影響があるのかもしれない。
PSoC 4 Prototyping Kitはまたまた認識されにくくて困った。
Windowsのデバイスマネージャーの「ポート(COMとLPT)」に現れず、「ユニバーサル シリアル バス コントローラー」にあやしいデバイスが表示される場合(プロパティを見ると、製造元がCypressになっている)、Windowsを再起動すると認識されるようだ。←今日の経験則
<追記:2016.09.25>
画像のように、ポートの項にCOMポートが追加されず、ユニバーサル シリアル バス コントローラーの項の囲みのような項目が表示される。
</追記>
Bootloader Hostで書き込む場合Baudが115200になっていないと書き込みに失敗する。
PSoC 4ではPort[P1]を避ければCharLCDを使えそうだ。
PSoC 5LPでCharLCDがポートによってちゃんと使えなったのは実験ミスかもしれないしPSoCのバグかもしれない。PSoC 5LPをまた使う機会があれば調べてみたい。
PSoCは割と自由にPin配置が決められるが、完全に自由と言うわけではなく機能によって使えるPinが決まっている。
PSoC 4 Pioneer Kit(3000円@秋月)とPSoC 4 Prototyping Kit(600円@秋月)は同じCY8C4245AXI-483を使っている。
CharLCDの割り当て可能なPinは
P0[6:0]
P0[7:1]
P1[6:0]
P1[7:1]
P2[6:0]
P2[7:1]
PSoC 4 Pioneer Kit
配線図
プログラムはPSoC CreatorのExampleの「CharLCD_CustomFont」プロジェクトをベースに、DWRエディターで割り当てるPinを変更しながら実験した。
PSoC 4 Pioneer KitではP1[6]がヘッダに引き出されていないのでPort P1は使えないようだ。
PSoC 4 Prototyping Kit
Prototyping Kitの方はP1[6]もヘッダに引き出されているが、CharLCD用にP1[7:1]を割り当てるとちゃんと表示されなかった。
信号線にLEDがつながっているので何か影響があるのかもしれない。
PSoC 4 Prototyping Kitはまたまた認識されにくくて困った。
Windowsのデバイスマネージャーの「ポート(COMとLPT)」に現れず、「ユニバーサル シリアル バス コントローラー」にあやしいデバイスが表示される場合(プロパティを見ると、製造元がCypressになっている)、Windowsを再起動すると認識されるようだ。←今日の経験則
<追記:2016.09.25>
画像のように、ポートの項にCOMポートが追加されず、ユニバーサル シリアル バス コントローラーの項の囲みのような項目が表示される。
</追記>
Bootloader Hostで書き込む場合Baudが115200になっていないと書き込みに失敗する。
メモ:
PSoC 4ではPort[P1]を避ければCharLCDを使えそうだ。
PSoC 5LPでCharLCDがポートによってちゃんと使えなったのは実験ミスかもしれないしPSoCのバグかもしれない。PSoC 5LPをまた使う機会があれば調べてみたい。
2016年9月12日月曜日
PSoC 4 Prototyping KitのDCOの設計
Firmware:
https://github.com/ryood/PSoC4_DCO/tree/master/PSoC/PSoC4_PrototypingKit_DCO_for_NucleoF401RE.cydsn
ブレッドボード図
ピン接続表
外部クロックが使えないか試してみたが、外部クロックの入力端子のP0[6]をSPIのSCKで使ってて外部クロック用として設定できない。DWRエディタで他のいくつかのPinも指定できて、P0[6]を開けられれば外部クロックが使えそうなので頑張ってみたが、ビルドエラーになったり、正常動作しなかったりで結局P0[6]から動かせなかったのであきらめた。
回路図
基板図
部品ならべ
C基板サイズの縦。ホール数を稼ぎたいのでサンハヤトのICB-288を使用。
ストックしていた新しいPSoC 4 Prototyping Kitを使ってみたが、こちらは割と簡単にUSBの認識がされる。製造の当たり外れがあるのかな(@@?
テスト表を作成してはんだ付け。
SPIピンを変更できないのはCypressのコミュニティで質問してみようか。
https://github.com/ryood/PSoC4_DCO/tree/master/PSoC/PSoC4_PrototypingKit_DCO_for_NucleoF401RE.cydsn
ブレッドボードで実験。
ブレッドボード図
ピン接続表
外部クロックが使えないか試してみたが、外部クロックの入力端子のP0[6]をSPIのSCKで使ってて外部クロック用として設定できない。DWRエディタで他のいくつかのPinも指定できて、P0[6]を開けられれば外部クロックが使えそうなので頑張ってみたが、ビルドエラーになったり、正常動作しなかったりで結局P0[6]から動かせなかったのであきらめた。
回路図
基板図
部品ならべ
C基板サイズの縦。ホール数を稼ぎたいのでサンハヤトのICB-288を使用。
ストックしていた新しいPSoC 4 Prototyping Kitを使ってみたが、こちらは割と簡単にUSBの認識がされる。製造の当たり外れがあるのかな(@@?
メモ:
テスト表を作成してはんだ付け。
SPIピンを変更できないのはCypressのコミュニティで質問してみようか。
2016年9月10日土曜日
PSoC DCOをPSoC 4 Pioneer KitからPSoC 4 Prototyping Kitに移行してみる。
以前、PSoC 4 Prototyping Kitを外部48MHzのクロックで動かす実験をしたが、何かと不安定なようなので一旦内蔵クロックの48MHzで動作させてみることにした。
内蔵クロックなら簡単だと思っていたが、USERボタンを押しながらUSBを差しても認識しない。デバイスマネージャーのUSBの項目には何やら怪しげな項目が現れるが、ポート(COMとLPT)には何も現れない。(参考:「PSoC 4 Pioneer Kit用のProjectをPSoC 4 Prototyping Kitで使う方法 (PSoC Creator 3.3)」
怪しいので、Cypress Update Managerで「CY8CKIT-090-42xx PSoC 4 Prototyping Kit 1.0」をUninstallして、Cypress公式のPSoC 4 Prototyping Kitのページから「Download CY8CKIT-049-42xx Kit Setup (Kit Design Files, Creator, Programmer, Documentation, Examples) 」を再インストールしてみたら認識された(^q^/)
以前、PSoC 4 Prototyping kitを使った時はまだWindows8.1だったと思う。知らない間にWindows10になっていたのでこれが原因かもしれない。
PSoC 4 Prototyping KitはUSERボタンを押しながらUSB端子を接続してもなかなか一発では認識されないので結構困る。安いから仕方ないけどねえ。
配線図
現状のベースマシンのPSoC 4 Pioneer Kitと同様に3.3V駆動させてみた。
周波数はちょっとずれてるけど(設定では440Hz)
Github:
https://github.com/ryood/PSoC4_DCO/tree/master/PSoC/PSoC4_PrototypingKit_DCO_for_NucleoF401RE.cydsn
内蔵クロックなら簡単だと思っていたが、USERボタンを押しながらUSBを差しても認識しない。デバイスマネージャーのUSBの項目には何やら怪しげな項目が現れるが、ポート(COMとLPT)には何も現れない。(参考:「PSoC 4 Pioneer Kit用のProjectをPSoC 4 Prototyping Kitで使う方法 (PSoC Creator 3.3)」
怪しいので、Cypress Update Managerで「CY8CKIT-090-42xx PSoC 4 Prototyping Kit 1.0」をUninstallして、Cypress公式のPSoC 4 Prototyping Kitのページから「Download CY8CKIT-049-42xx Kit Setup (Kit Design Files, Creator, Programmer, Documentation, Examples) 」を再インストールしてみたら認識された(^q^/)
以前、PSoC 4 Prototyping kitを使った時はまだWindows8.1だったと思う。知らない間にWindows10になっていたのでこれが原因かもしれない。
PSoC 4 Prototyping KitはUSERボタンを押しながらUSB端子を接続してもなかなか一発では認識されないので結構困る。安いから仕方ないけどねえ。
配線図
現状のベースマシンのPSoC 4 Pioneer Kitと同様に3.3V駆動させてみた。
ch1:DCOの出力
周波数はちょっとずれてるけど(設定では440Hz)
Github:
https://github.com/ryood/PSoC4_DCO/tree/master/PSoC/PSoC4_PrototypingKit_DCO_for_NucleoF401RE.cydsn
2016年5月15日日曜日
PSoC 4 Prototyping Kitを外部クロックで動かす。
動作クロックの精度を上げるために、PSoC 4 Prototyping Kitを外部クロックで動作させてみた。
ATMega(88V、 328P)やPSoC 5LP Prototyping Kitは水晶振動子を外付けすればよかったが、PSoC4はクロック信号を与えないといけないようだ。P0_6にクロックを入力する。
ブレッドボード図
Top Design
TopDesignに配置したコンポーネントはPSoC 4 Prototyping Kitのお約束のBootloadble(参考「PSoC 4 Pioneer Kit用のProjectをPSoC 4 Prototyping Kitで使う方法 (PSoC Creator 3.3)」)とCPUの駆動クロックのSYSCLKを出力するPINだ。
PSoC 4ではクロックを直接Output Pinに繋げないのでこうしている(参考「PSoC4のClockとTimerを調べる」
クロックの設定は*.cydwrのクロック・タブで以下のように設定。
EXTCLKが24MHzでそのままSYSCLKにつながる。
PSoC4の場合PSoC 5LPとは違ってPLLで逓倍して外部クロックより高い周波数を使う、ということはできないようだ。
「PLL1_Sel」とかPLLが使えそうに思えるがよくわからない。そもそもPLLが何かということもよくわかっていない(^q^;
main.c
どっちのモードでつながってるかはまあまあわかりやすいと思う(^q^;
外部クリスタルをEXTCLKとして使うと、きっちり同期して24MHzで動作しているようだ。
74HCU04(アンバッファ・インバータ)と水晶振動子を使って発振回路を作ってPSoC4に入力してみた
ブレッドボード図
水晶からGNDに落としているCは22pF、水晶と並列に入れているRは1MΩにした。(ブレッドボード図のカラーコードは直し忘れました)
クロックの出力
PSoCのプログラムは変更していないが、12MHzで動作しているようだ。
PSoC4の最大駆動周波数は48MHzなので48MHzの水晶発振器に差し替えればすぐに動くかと思ったが、そうでもなかった。
1) ブレッドボードからクロック源(水晶発振器等)を取り去って、PSoC4を内蔵クロックで48MHz駆動にするように設定して動作確認。
2) 外部クロックの48MHzを使うように設定してプログラム。
3) USBを引っこ抜く
4) 48MHzの発振器をブレッドボード上に設置してPSoC4のP0_6に接続
5) 全体に電源を供給
という手順でやっと動いてくれた。
DIP28PinのARM Cortex-M0のLPCが秋月で値上がりしてディスコンになるかもしれないという情報。
mbedは使えないけどPSoC4 Prototyping KitもCortex-M0で、まだ600円@秋月。
水晶発振器を間違えて上下逆刺ししたらめちゃくちゃ発熱した(@@; しばらく触れないぐらい。生きてただけありがたい
ATMega(88V、 328P)やPSoC 5LP Prototyping Kitは水晶振動子を外付けすればよかったが、PSoC4はクロック信号を与えないといけないようだ。P0_6にクロックを入力する。
24MHzの水晶発信器を使う
ブレッドボード図
Top Design
TopDesignに配置したコンポーネントはPSoC 4 Prototyping Kitのお約束のBootloadble(参考「PSoC 4 Pioneer Kit用のProjectをPSoC 4 Prototyping Kitで使う方法 (PSoC Creator 3.3)」)とCPUの駆動クロックのSYSCLKを出力するPINだ。
PSoC 4ではクロックを直接Output Pinに繋げないのでこうしている(参考「PSoC4のClockとTimerを調べる」
クロックの設定は*.cydwrのクロック・タブで以下のように設定。
EXTCLKが24MHzでそのままSYSCLKにつながる。
PSoC4の場合PSoC 5LPとは違ってPLLで逓倍して外部クロックより高い周波数を使う、ということはできないようだ。
「PLL1_Sel」とかPLLが使えそうに思えるがよくわからない。そもそもPLLが何かということもよくわかっていない(^q^;
main.c
#include <project.h>
int main()
{
CyGlobalIntEnable; /* Enable global interrupts. */
/* Place your initialization/startup code here (e.g. MyInst_Start()) */
for(;;)
{
/* Place your application code here. */
// タン・タ・タンのLチカ
Pin_LED_Write(1u);
CyDelay(100);
Pin_LED_Write(0u);
CyDelay(500);
Pin_LED_Write(1u);
CyDelay(100);
Pin_LED_Write(0u);
CyDelay(100);
Pin_LED_Write(1u);
CyDelay(100);
Pin_LED_Write(0u);
CyDelay(500);
}
}
PSoC4 Prototyping KitはプログラミングするときにUserボタンを押しながらUSBにつないで、青色LEDがチカチカすると「書き込みモードでつながりました」という合図になるので、普通に書き込んだプログラムが動作している状態を表すために「タン・タ・タン」というタイミングで青色LEDがチカチカするようにしてみた。どっちのモードでつながってるかはまあまあわかりやすいと思う(^q^;
クロック出力(PSoC4の内蔵クロックで動作させた場合)
ch1:24MHzの水晶発信器の出力 ch2:PSoC4のSYSCLK
クロック出力(水晶発信器のクロックで動作させた場合)
ch1:24MHzの水晶発信器の出力 ch2:PSoC4のSYSCLK
外部クリスタルをEXTCLKとして使うと、きっちり同期して24MHzで動作しているようだ。
12MHzの水晶とロジックICを使って発振回路を作ってみる
74HCU04(アンバッファ・インバータ)と水晶振動子を使って発振回路を作ってPSoC4に入力してみた
ブレッドボード図
水晶からGNDに落としているCは22pF、水晶と並列に入れているRは1MΩにした。(ブレッドボード図のカラーコードは直し忘れました)
クロックの出力
ch1:12MHzの水晶回路の出力 ch2:PSoC4のSYSCLK
PSoCのプログラムは変更していないが、12MHzで動作しているようだ。
48MHzで動作させる
PSoC4の最大駆動周波数は48MHzなので48MHzの水晶発振器に差し替えればすぐに動くかと思ったが、そうでもなかった。
1) ブレッドボードからクロック源(水晶発振器等)を取り去って、PSoC4を内蔵クロックで48MHz駆動にするように設定して動作確認。
2) 外部クロックの48MHzを使うように設定してプログラム。
3) USBを引っこ抜く
4) 48MHzの発振器をブレッドボード上に設置してPSoC4のP0_6に接続
5) 全体に電源を供給
という手順でやっと動いてくれた。
ch1:P0_6(ext_clkの入力) ch2:P0_0(SYSCLKの出力)
メモ:
DIP28PinのARM Cortex-M0のLPCが秋月で値上がりしてディスコンになるかもしれないという情報。
mbedは使えないけどPSoC4 Prototyping KitもCortex-M0で、まだ600円@秋月。
水晶発振器を間違えて上下逆刺ししたらめちゃくちゃ発熱した(@@; しばらく触れないぐらい。生きてただけありがたい
登録:
投稿 (Atom)








































