この作業日誌は狩野のPSoCライフを淡々と描くものです。過度なk(ry
目次
#contents
*日付5月20日 [#t099c9bb]
**LED点灯 [#z726274e]
PSoCを借りて遊んでみる。
とりあえず秋田先生のTutorialやってみた。
…LEDの強度変化しねぇorz
というわけで、とりあえず光る色を変えてみた。
これは単にPWMの出力ピンを変えるだけでお手軽に出来ます。
First Touch Guide.pdfやらにピン配置書いてあった。
んで、結果
#ref(led_red.JPG);
Green,Red,Blue三色あるが、一番目立つ赤でこれ。
これでも一応光ってますorz
&color(red,){書き込み機のLED自重しろ};
*日付5月21日 [#m57b0a49]
**タッチセンサ [#p9368db6]
まず、昨日出来なかったLED強度変化について。
PSoC Programmerを再起動したら動いた。
&size(6){何でだよ};
次。タッチセンサ作ってみた。
該当PortはP2[1]〜P2[7]
#ref(sensor.JPG);
↑の部分を使う。プログラムは使いまわしで良い
唯一変わるのは配線。
光センサはADCの直入力に出来たけど、これは出来ない。
つうわけで、一回ユーザ定義の空いてるPort(P0[5]とか)に引き回してやって作る。
#ref(sensor_block.JPG);
↑こんな感じ
''IRDropとか色々あるから正しい値ではないけど、一応動く。''
ADCが8bitなので、255からパルス幅dをさっぴいてやれば、触ると光るセンサになる。
**ブザー [#dbc9fb15]
上記のプログラムを使いまわしてやってみた。
…回路見て判ってたが、単音ツマンネ(ぁ
*日付5月23日 [#o368fcc0]
**センサおさらい [#u0b9aaaa]
たいした説明じゃないが、CSDとCSRの違いについて備忘録程度に
***CSD [#i26fabed]
ΔΣ変調を用いて、周りの白色ノイズを低減+所望周波数のみ抽出
後段のBitStreamはディジタル処理のための波形整形。
***CSR [#o3ae06d7]
上記のような処理なし。そのまま出力。
**可視LED点滅 [#n0102b31]
''男の子の夢。それはLEDチカチカ(違)。''
このPSoCつうものは非常に良く出来ていて、
システムクロック(24MHz)を最大で、16(VC1)→16(VC2)→256(VC3)
分周して回路クロックとして入力が出来る。
つうわけで、8bitカウンタ(Period 255)を用いることで
最大、1.43Hzまで分周できる。
これでLEDを光らせればたいていの人は見えるはず!
ちなみに、システムクロックを弄って6MHzにすれば、もっと少ない分周数でもいける。
その際のエラー解決法は↓参照。これで8bitカウンタ一個で1Hzが作れる。
http://merl.ec.t.kanazawa-u.ac.jp/micon-bu/index.php?FAQ#zc20cf82
**タイマ割り込み [#n7b8dde7]
うちはボケて詰まったところなので詳細に書いてみる。
pragmaとは、コンパイラの挙動を精細に指示する構成要素であり…(うんたらかんたら)
まぁ、アレだ。
タイマ割り込みしたかったら
|LEFT:#pragma interrupt_handler (モジュール名)_ISR|
って入れとけ。これで5割。
ISRはヘッダにかかれてないから任意かもしれんが、
わざわざわかりやすい名前から変更する意義はない。
なお、pragmaの位置は、場所依存性は無いけど(←確認済)
割り込み変数の上あたりに置いとくと忘れなくていいかも。
んで、俺が何をミスったかって言うとだ………
&color(red,){PWM起動し忘れたよウワーン・゜・(/Д`)・゜・。};
みんなはそんなこと無いと思うが、タイマは直接出力出してるわけじゃなくて、
割り込みかけてるだけだからな。
んで、グローバル変数およびパルス幅変更してるだけ。
**LCD制御 [#o27cf4e1]
多分今日中に終わらないが。
折角PSoCが書き込み機いらない子だって知ったので、手元にあるSC1602を使ってみる
↓こんなの
#ref(lcd.JPG);
…bit数たらねぇ。PSoCは4ピンしかだせねぇのに、必要ピンは8bit orz
〜10分後〜
ああ。4bitモードで動かせるらしいぞこのLCD
データシートの端に書いてあった。
〜1時間後〜
#ref(check.JPG);
ところで、PSoC側の端子割り当てPort-X5って何処?
どうみても0ピンからの適当な割り当てでもないし。
当然LCD側はデータシート見て判るんだが、PSoC側に該当する名前無いぞ。
''ワカンネ\(^o^)/''
せっかくパーツ貰ったのにorz
あぁ、把握した。書いとくと
&color(red){Xは任意};
&color(red){最初に指定するPort(たとえばPort0とか)を指定すると};
&color(red){そのPortから4+制御ビットを使う(たとえばP0[0],P0[1]…};
*日付5月24日 [#x9430935]
**FTPC(書き込み機)さようなら [#r5910f17]
このPSoCをいじってて思ったのが、
&size(32){''書き込み機はプログラム書き込んだらいらない子''};
実質電源供給してるだけです。というわけで、一部分ではあるが、脱獄を図ってみる。
動作確認用LEDもつけてみた。
#ref(ext.JPG);
…回路図はいるのかなぁ。
秋田先生のチュートリアル通りに1,3番ピンにそれぞれVdd,Vss入れてます。
LED用の抵抗をあまり大きくしてしまうと、LEDがつきません。自分は1kΩを使いました。
…気になるんだが、一応チャージ用キャパつけたほうがいいんだろうか。
**LCD制御その2 [#i48002a2]
まずはおさらい。
LCD制御に必要なビット数:4+制御(3)=7bit
CY8C21434 : 4bit(グローバルIOのみ)
つうわけで、足りないんだ。うん。
そのため、使えそうなピンを出力にまわさなあかん。
その他使えそうなピン
''ISSP_DAT,ISSP_CLK,I2C_SDA,I2C_SCL''
このうち、DAT,CLK,SDAを用いてオシロで出力波形を見てみる。
以下のPortがHighになる。
FTMFの割り当てで
VEXP_IN,VEXT_OUT:電源のため
I2C_SCL,PO2,PO5 :原因不明
~
~
~
~
~
- 電極を直接ADCにつないだのですね。浮いている電極の電位そのものは、周りの静電気などのいろいろな要因で変化するので、タッチしなくても光る/タッチしても光らない、ということも起こりえそうです。そのあたりを、差分をとったりして自動的にキャリブレーションしてくれるのが、CSD。 -- [[akita]] &new{2008-05-22 (木) 22:18:44};
- タイマ割り込みで、音程を変えてみて、ひゅんひゅん言わせるのはいかがでしょう? -- [[akita]] &new{2008-05-22 (木) 22:19:55};
- 確かにCSDのほうについては、PSoCに手がぶつかるなどの外的要因でも変化します。ちょっと微妙。ただ、ディジタル2個で出来るというのがうまみかなーと。 -- [[kanou]] &new{2008-05-23 (金) 11:10:10};
- 今現在、鈍い音が出てますけど、音程変えればそれも改善されるんでしょうか。 -- [[kanou]] &new{2008-05-23 (金) 11:11:18};
- 電源のところには、本当はパスコンがあったほうがいいです。0.1uFくらいのセラミックコンデンサでいいいです -- [[akita]] &new{2008-05-25 (日) 19:59:45};
- ISSP_DAT, ISSP_CLKは、実体はP0.0, P0.1なので、StdCPUにすれば、ふつうのI/Oポートとして使えるはずですよ。 -- [[akita]] &new{2008-05-26 (月) 08:46:49};
- >パスコン 秋田先生ありがとうございます。探してみます -- [[kanou]] &new{2008-05-27 (火) 07:15:12};
- >Port 基本的な事ですいませんが、ISSP_DAT,ISSP_CLKはぱっと見P1.1,P1.0に見えるのですが、↑な理由教えて貰えますか。 -- [[kanou]] &new{2008-05-27 (火) 07:19:37};
- ごめん、P1.0/P1.1の間違いです>ISSP_{DAT,CLK} -- [[akita]] &new{2008-05-27 (火) 09:53:05};
#comment