【新時代!】PSoC スレ  其の参

このエントリーをはてなブックマークに追加
938774ワット発電中さん:2006/10/15(日) 07:06:51 ID:iyw07PO5
>>936
じゃあ、現状では扱いが面倒なので、手直ししてから公開します。
939919:2006/10/15(日) 07:09:08 ID:qL4IwSDR
>>926-928
有難うございます。
ってことはあの書き方じゃ動作しないんですね・・・
もうちょっと勉強してみます。
940774ワット発電中さん:2006/10/15(日) 12:04:37 ID:AnV9MsLq
>>939
ソフトがどうのっていう話ではないんですよ。 思考に問題があるんです。

例えば
 初めに10mS でパルスを出す設定をしたら
そのカウントが済むまでにデューティ変えたらそれまでカウントしていたカウンタはどうなるの?
また初めから10msをカウントし直すの?
それとも書き換えを無視してそのまま継続してくれるの?

だからCPUに正しくカウントさせるのにはそのカウントが0まで(少なくとも10ms+1クロック)
はデューティを書き換えたら「いかんやろ」ってこと。

void main(){
int adc=4999;
while(1){
  adc--;
  pwm(adc);

  //ここをソフトタイマーにするか割り込みにするかフラグチェックかはお好きにってこと
  delay_1ms(1000); //pwm カウントup待ち
}
}
これならば1秒毎にデューティが変わるでしょ。
∴pwm出力とデューティ変更は処置上は別次元なのよ。

こうゆうのってデバッカでステップ実行すると動くいてしまうので
初物のチップのときにハマる場合があるかもね。

941919:2006/10/15(日) 21:33:16 ID:qL4IwSDR
そういうことだったんですか!!!
判りやすい解説有難うございます。
ですがタイマーの使い方が判らずdelay_msという関数スラ作れません・・・
難しいですね。。。
942774ワット発電中さん:2006/10/15(日) 22:29:11 ID:nHMD10sn
そういうことなら、とりあえずはPICあたりからやってみては?
あっちなら懇切丁寧な(たまには間違いもあるだろうけど)書籍
も何もかも山ほどあって便利だろう
943774ワット発電中さん:2006/10/16(月) 00:25:59 ID:R74Mlz8K
PWM のデューティー比を変えて電子ホタルを作るデモ

main.c
//----------------------------------------------------------------------------
// C main line
//----------------------------------------------------------------------------

#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules

#pragma interrupt_handler RewritePWM16PWidth

int i = 0;
#define N 40
int a[N]={4999,5765,6513,7223,7879,8463,8963,9364,9659,9838,
9899,9838,9659,9364,8963,8463,7879,7223,6513,5765,
4999,4232,3484,2774,2118,1534,1034,633,338,159,
99,159,338,633,1034,1534,2118,2774,3484,4232};
void RewritePWM16PWidth(void) {
PWM16_1_WritePulseWidth(a[i]);
if (++i >= N) i = 0;
}

void main()
{
// Insert your main routine code here.
M8C_EnableGInt;
PWM16_1_DisableInt();
PWM16_1_WritePulseWidth(10);
PWM16_1_Start();
Timer16_1_EnableInt();
Timer16_1_Start();
}

プログラムはなんとも簡単
944774ワット発電中さん:2006/10/16(月) 00:36:18 ID:R74Mlz8K
>>943 つづき
Device Editor の設定がむしろ最初はわからないか
モジュールは PWM16_1 と Timer16_1 の2つ
VC1=SysClk/8,VC2=VC1/3としてVC2を1MHzにする
VC3Source を VC2 にし VC3Deviderを20にして VC3 を 50KHz にする
PWM16_1のClockをVC2 にし 10000カウントで0.01秒になるようにセット
Periodは9999にセット Compare Out を LED のつながった 端子に
出す MiniProg1 でP2[0]にでも出すなら RO0[0]-GOE0-P2[0]とか
Timer16_1のClockをVC3にし 5000カウントで0.1秒になるようにセット
こっちのPeriodは4999にして Interrupt Type を Terminal Count に
あとは Timer16_1の割り込みルーチンで PWM16_1_WritePulseWidthを
実行してデューティー比を変える
PMWモジュールは 何も考えなくても デューティー比の書き換えを
各サイクル(Period回だけカウントする)ごとに実施する
945774ワット発電中さん:2006/10/16(月) 08:12:19 ID:hmUdNUXY
PWM16_1_int.asmあたりの書き換えも必要かと
946774ワット発電中さん:2006/10/16(月) 08:22:17 ID:R74Mlz8K
>>945 おおそうでした でも書き換えるのは Timer16_1_int.asm の
ほうです.lcallでなくてもljmp でいいです.

_Timer16_1_ISR:

;@PSoC_UserCode_BODY@ (Do not change this line.)
;---------------------------------------------------
; Insert your custom code below this banner
;---------------------------------------------------
; NOTE: interrupt service routines must preserve
; the values of the A and X CPU registers.
ljmp _RewritePWM16PWidth
;---------------------------------------------------
; Insert your custom code above this banner
;---------------------------------------------------
;@PSoC_UserCode_END@ (Do not change this line.)

reti
947774ワット発電中さん:2006/10/16(月) 08:27:17 ID:R74Mlz8K
>>943 main関数の修正 ごみが残っていました

void main()
{
// Insert your main routine code here.
M8C_EnableGInt;
PWM16_1_DisableInt();
PWM16_1_Start();
Timer16_1_EnableInt();
Timer16_1_Start();
}

配列aは99から4899までを sin で振ったもの
いろいろ変えて遊びましょう
948774ワット発電中さん:2006/10/16(月) 14:08:12 ID:/2SWWlec
>>941
でもすでにあなたはソフトタイマーの記述をしています。
考え方を変えれば以下はタイマーでしょ。(概念だけね)
実用的ではないけど初物チップの時はここからが始まりなのよ。

どっかのLED光らせて実測しながら決めれば
取りあえずオシロなくてもいけるやろ。

void delay_10us(void)
{
#define E_1usCnt 20 //ここで調整
int i:
for(i=0; i<E_10usCnt; i--){
i=i; //dummy
}
}

void delay_1ms(int iVal)
{
int i:
for(i=0; i<iVal; i--){
delay_10us(100);
}
}
949774ワット発電中さん:2006/10/16(月) 14:10:03 ID:/2SWWlec
誤 #define E_1usCnt 20
正 #define E_10usCnt 20
950774ワット発電中さん:2006/10/20(金) 17:59:22 ID:TXOZEecg
ライセンスキーがまだ来ない。

この土日にCで遊びたかったのに・・・orz
951774ワット発電中さん:2006/10/21(土) 10:10:20 ID:r76Ki7NE
催促すれば、運がよければ半日も経たないでくるよ。
952774ワット発電中さん:2006/10/21(土) 17:26:29 ID:ScBJiO6E
日本サイプレスに日本語でメール出してもOKだったよ。
953774ワット発電中さん:2006/10/23(月) 10:37:14 ID:+IUXL2mu
950です。
>>951
先週メールで催促してみたんですが・・・。

>>952
日本サイプレスですか。
調べてメールしてみます。

ありがとうございました。
954774ワット発電中さん:2006/10/24(火) 21:23:44 ID:YQ0ti9jy
PSoCのアナログ部のノイズに関する資料無いですか?

普通のオペアンプのデータシートにあるようなノイズ nV/√Hzの様な感じであれば助かります。

定番の高精度オペアンプとかと比べてどうなんでしょう?
955774ワット発電中さん:2006/10/24(火) 23:37:55 ID:lAm34N4r
( ´_ゝ`).。○ なんでデータシートを読もうとしないんだろう・・・・
956954:2006/10/25(水) 00:13:15 ID:X/T1I5SL
アヒャ PSoC Noiseとかで適当にググってあきらめてますた。
普通に載ってたんですね。
にしても100nV/rtHzってやっぱり素直に普通のオペアンプ使います。
お騒がせしますた。
957774ワット発電中さん:2006/10/25(水) 00:34:06 ID:300/DY+A
アナデジ混在だし、普通のオペアンプに匹敵するほどの性能が出たら
オペアンプなエンジニア連中の立場ってもんが無いしで、
ヌルく使うもんだってことで。
958774ワット発電中さん:2006/10/25(水) 02:39:51 ID:SxFQ/gGs
むしろデジタルブロックのみのPSoCが欲しい
959774ワット発電中さん:2006/10/25(水) 03:09:04 ID:vDnKX658
それなんてFPGA?
960774ワット発電中さん:2006/10/25(水) 08:38:46 ID:NVnx4o3i
>>958 アナログブロックつかわなきゃいいじゃんwww
それとも24個(29x)では全然不足?
961774ワット発電中さん:2006/10/25(水) 10:19:45 ID:bY6rqZuQ
LAN用の素子ENC28J60とつなげた漢はおりませぬか?

PICやAVRとの例はインターネッツで出てくるのですが、
PSoCが見つからんのじゃ。
962774ワット発電中さん:2006/10/25(水) 10:34:42 ID:Rw6guXPq
アナログ入出力に保護抵抗入れています?
とりあえず100Ω入れてみましたが、
psoc_datasheetのp266見てもどうなっているかよくわからんです。
963774ワット発電中さん:2006/10/26(木) 01:08:43 ID:vCKrN4Ji
>>960 24794(USBが使えるやつ)はデジタルブロック4つしかないから
足りない。あとROMも16Kbyteしか無いのに初期設定で8KByteぐらい使うから
これも足りない。USB-UARTも使いたいのに…
964774ワット発電中さん:2006/10/26(木) 09:39:39 ID:+wGuBNsQ
>>963 そこで29xとI2CorSPI通信でつよ!
ま いまのままじゃ24中途半端だろ っていう主張はわかるけど
ゆるさが身上のPSoCだからなあ これでけっこうさじ加減が微妙にうまい
このぐらいの素子数でうまくやるのが腕前よ といわんばかり ああしゃくだ
965774ワット発電中さん:2006/10/26(木) 22:52:17 ID:AIFLZK5Q
むしろ規模はもっと小さくてもいいから、USBでDIPなの出てくれないかな・・・
966774ワット発電中さん:2006/10/27(金) 00:37:11 ID:xg4Qzjj2
DIP自体があんまり使われないしね
967774ワット発電中さん:2006/10/31(火) 14:31:08 ID:ghlDZmjS
DIP厨ウザー
968774ワット発電中さん:2006/10/31(火) 18:06:08 ID:qGzOzPHh
DIPでUSBなPSoC俺も欲しい。使い易いし。
969774ワット発電中さん:2006/10/31(火) 18:22:47 ID:9H3FNpeZ
お前らバカだな
DIPは宣伝用だろ。
970774ワット発電中さん:2006/11/03(金) 02:54:30 ID:HCWeQOIR
サイプレスからCコンパイラの登録のなんだかというメールが二通来た。
なんだべ。
971774ワット発電中さん:2006/11/03(金) 09:59:05 ID:bFX3QXIg
Cコンパイラのライセンスキーゲットのサイトが
サイプレスマイクロシステムズのサイトからサイプレスのサイトに
移ったってことでしょ。
コンパイラ自動的にサイトの登録ユーザになるけど、まだキーをもらって
ないならユーザ登録してログインしてコンパイラのライセンス登録してねと。
972774ワット発電中さん:2006/11/04(土) 11:45:14 ID:cZOvIOS7
PSoC Designer 4.3 の SP1 を最新のに差し替えてくれってメールがきたよ
CSR モジュールが動かなくなるって ぶっそうやなあ
---
Dear PSoC Designer User,

Our records show that you have downloaded PSoCDesigner 4.3 SP1.

We have re-released PSoCDesigner SP1 since you have downloaded due to a critical
bug fix.

The bug is this:

Many projects using the CapSense CSR user module will not function (including the
CSR example projects). Specifically, the following legacy variables were pointing
to an incorrect location in RAM: CSR_iaSwBaseline[], CSR_iaSwResult[], and
CSR_iaSwDiff[]. Projects that don't use the legacy variables are not affected.

If your project is using this user module, or if you plan to use this user module
in the future, we recommend that you re-download the PD4.3 SP1 from the website
and reinstall the service pack.

The website to access the service pack is http://www.cypress.com/design/SD1071.

Thanks,

PSoC Designer Release Team
Cypress Semiconductor
---
zip をダウンロードして解凍してできるexeを2回実行してやれば
差し替え完了 1回目で削除 2回目で再インストール

973774ワット発電中さん:2006/11/04(土) 13:43:42 ID:DManogzc
$10きっとかってコンパイラのライセンスももらったけど
メール着てない…
974774ワット発電中さん:2006/11/04(土) 16:10:37 ID:cZOvIOS7
>>973 このメール 
>Our records show that you have downloaded PSoCDesigner 4.3 SP1.
とあるように すでに SP1 をダウンロードした人に送られているようです
10ドルキットについてくるCコンパイラライセンスは4.3でも
大丈夫のはずなので 上げちゃいましょう やっぱ新モジュール魅力だし
975774ワット発電中さん:2006/11/06(月) 23:54:58 ID:yOFwCfbf
使ったこと無いんで教えて欲しいんですけど、カットオフ周波数1kHz位のLPFとHPFが欲しいんです。
センサ信号の濾波に使います。アナログ波を入れて、フィルタ通過後のアナログ信号を2波出します。
できれば周波数とスカートをシリアルで変更できるとうれしい。
PSoCでできますか?
976774ワット発電中さん:2006/11/07(火) 00:21:12 ID:22agRg43
LPFとBPFはあるけど、HPFは無いなぁ

SCだから、周波数はクロック変えれば良い
スカートなんかは厄介かな。何パターンか予め計算しておいて、
すり替える形か。
切り替え時間が問題にならないなら、ダイナミック・リコンフィグレーション
という手もあり?
977774ワット発電中さん:2006/11/07(火) 02:41:40 ID:mQ9wNoye
LPFから出た信号を反転してもとの信号に混ぜたらHPFになるんじゃないの
978774ワット発電中さん:2006/11/07(火) 06:35:39 ID:M/OSFHzt
目的周波数がわかっていたら、BPFでよろしいかと。
一入力でBPFを2個並列して通すもよし。
ブロードなBPFを設計してもよし。
おせっかいですが、フィルタ設計は添付のエクセルファイルで、スカートを見ながら決めますので、どうにかなります。
29466ならコンパレータ出力ができますし、ちょうどよいかも。
979774ワット発電中さん:2006/11/08(水) 16:47:09 ID:Y789uM/H
>>977
その発想は無かったわ。
でも、LPF通ったら位相が遅れるんじゃないの。
980774ワット発電中さん:2006/11/09(木) 06:35:38 ID:51b+ba3O
ということは
LPFから出た信号を反転してHPFから出た信号に混ぜたらにもとの信号なる?
981774ワット発電中さん:2006/11/09(木) 14:14:26 ID:eETkaRns
新手法セミナー
ワクテカ
982774ワット発電中さん:2006/11/09(木) 15:12:03 ID:5fUuk+qG
>>980
それって、Band Loss Filterにならんかい?
983774ワット発電中さん:2006/11/09(木) 17:23:36 ID:ddS3MIQ1
HPF = 1 - LPF
ならば、LPFを移項して
HPF + LPF = 1
反転しないで足す

(物凄い省略ごめん)
984774ワット発電中さん:2006/11/09(木) 19:28:03 ID:DEGoejcu
ちゅうか、構成的にDCサーボだな。HPFの一種ではある。
985774ワット発電中さん:2006/11/09(木) 20:02:16 ID:wGvJq2bP
>今年、3回目になりましたPSoCセミナーのご案内です。
メールが来たー。行こうかな。
986774ワット発電中さん:2006/11/09(木) 21:11:04 ID:5fUuk+qG
そろそろと新スレ、たてました

【Capsense】PSoC スレ  其の四【USB】
http://science4.2ch.net/test/read.cgi/denki/1163073993/l50

よろしくおねがいしますです。
987774ワット発電中さん
>>985 申し込んじゃいました :-)
ここに情報があるのだが
ttp://www.cypress.com/portal/server.pt?space=CommunityPage&cached=true&parentname=CommunityPage&parentid=10&in_hi_userid=18780&control=SetCommunity&CommunityID=201&PageID=540&CID=ILC-shortlinks&shk=seminars/psoc
ここに掲載の登録申し込みURLが間違ってる X-<
正しくは ttp://www.cypress.com/expresstour
日本語で登録できたが項目の並び順がまるっきりあちゃら風なので
よく見て入力しよう いきなり 名 姓 の順だもんなあ
危うく間違えるとこだった