という名のSecond Touch(謎)
まずは、UART用のヘッダピンを立てる。
UART_1を設置。
UARTの設定は、面倒だったので自主課題のときのメモをそのまま使う。
VC1=6で(24MHz/6=)4MHz
VC3 SourceをVC1、VC3 Divider=52で(4MHz/52=)76,923Hz≒76,800Hz(9600Hz×8)
UART_1のClockをVC3。
通信に使うピンは、とりあえずGPIOの4本が簡単に使えそうなので、次のように接続した。
RX Input - GlobalInEven2 - P0.3(GPIO3)
TX Output - GlobalOutEven3 - P0.2(GPIO2)
ドライバ入れて、あくのりっち入れて、接続。
まずはオウム返し。
void main() { BYTE d; UART_1_Start(UART_PARITY_NONE); while(1) { d = UART_1_cGetChar(); UART_1_PutChar(d); } }
あくのりっちで送ってやったデータをそのまま返す。
最初は反応なかったけど、つなぎ直してやると動いた。(原因不明…
問題なく動作することを確認。
つづいて、PWM8を設置。
Periodを255、ClockはVC3でいいか…。
CompareOutをRow_0_Output_0からGlobalOutOdd_4、P1.4(LED(G))につないで、
void main() { BYTE d; M8C_EnableGInt; PWM8_1_Start(); UART_1_Start(UART_PARITY_NONE); while(1) { d = UART_1_cGetChar(); // UART_1_PutChar(d); PWM8_1_WritePulseWidth(d); } }
これで、PCから送ったデータに基づいて、LEDの明るさを変えられるようになる。
00を送ってやるとLEDがほぼ消え、FFを送ると最大輝度になる。
プログラムを書き換えるためには、FirstTouchの基板をいちいちつなぎなおさないといけない。
せっかくminiProgが手元にあるので、miniProgで書き込めるようにして、書き込み器からの完全独立を図る。
必要なピンは、
FirstTouchでは、それぞれ1,3,5,7,9番ピンに対応。
どうやら、miniProgと同じように並んでいるらしい。
キットが簡単にUSB接続できるというFirstTouchの利点を殺している気がするのは、気のせいということで。
ver 2.0
使ったもの
進化したところ
とりあえず、ピンを立てただけ。残りはまた今度…。
CSDとPWM8で、デジタルブロック4つを使い果たすのですよね…。
まずはN sensorsで近接センサを試す。
手を近づけるとLEDがホワンホワンすることを確認。
続いてN Sliders。
こ れ は w
いろいろ使えそう。
自主課題のときのACアダプタ(5V)が手元にあるので、そこから駆動すればいいかなと思って適当に製作。
使ったもの
はんだづけの腕が落ちている…
PSoC入門:PSoC First Touch編 をとりあえずやる(予定)
↑未来日記かよ!
家で時間があったので、手元に基板も何もない状態で例題1まで一気にやる。
→USBメモリにぶちこんで研究室でサクっと書き込み。
→動作確認!
…のつもりが、まぁそううまくは行かず。
青LEDはまったく光らず、なぜか赤LEDが煌々と。
…
…
1時間くらい格闘しました。
結局、PWM8のPeriodが0になっていたというオチ。
設定したはずなんだけどなぁ…。
Generateしてなかったか、保存してなかったか。
まぁ、何はともあれ無事に動作しました。
1.はサクっと。
2.は、PWM8をもう1個追加してやればいいが…それじゃ芸がない(というかリソースがもったいない)ので、Row_0_Output_3の出力を…
ということで、こちらも問題なく動作。
#でも携帯電話の白色LEDを思いっきりセンサに近づけても、赤青50:50くらい(体感)にしかならない…。
予習(?)
iPodの入力にも使われてるタッチセンサらしい。
へぇ〜。
ってかデジタルブロック3つも使うんスかw