PSoCをはじめよう

by K.I
2005/01/01? 〜

Index


概要


[top]

PSoCライタ

→10Pのフラットケーブルの片側だけ使って接続する。

書込み方法


1実は以前はこれを知らなかったので、いちいちUSBケーブル抜いてました。。。

[top]

実験基板について

→訂正:本当は水晶の両端に付いてる容量はVcc側に接続します。

インベンションボードだけでも大丈夫


[top]

サンプルを動かしてみよう

LED点滅

LED正弦波ドライブ

GPIO

温度計

テストオシレータ

感想


[top]

ロータリーエンコーダ

おかしなロータリーエンコーダ

あぁ、勘違い

タイマ割込みで

        cfreq = 0;
        set_freq(cfreq);
        psw = pdat;
        while(1) {
                csw = pdat;                     // スイッチ情報取得
                onsw = ((psw ^ csw) & ~csw);    // '1'から'0'に変化したものを抽出s
                psw = csw;
                if (onsw & (SW_UP | SW_DOWN)) { // UP/DOWNスイッチのいずれかが押された
                    if ((onsw & SW_UP) && (csw & SW_DOWN)) {
                        cfreq = (cfreq+1) % NUM_FREQ;           // count up!
                    }
                    if ((onsw & SW_DOWN) && (csw & SW_UP)) {
                        cfreq = (cfreq-1+ NUM_FREQ) % NUM_FREQ; // count down!
                    }
                    set_freq(cfreq);
                }
        }

割り込みなしで

I/Oの割り込みで動かす

        #pragma interrupt_handler PSoC_GPIO_ISR()       →boot.asmにも割込みベクタが必要

        void PSoC_GPIO_ISR()
        {
                unsigned char cdat;
        
                cdat = PRT0DR;
        
                if ((~cdat & SW_DOWN) && (cdat & SW_UP)) {
                  cfreq = (cfreq-1+ NUM_FREQ) % NUM_FREQ;        // count down!
                }
                if ((~cdat & SW_UP) && (cdat & SW_DOWN)) {
                  cfreq = (cfreq+1) % NUM_FREQ;                  // count up!
                }
                set_freq(cfreq);
        }

                :
                略
                :
        INT_MSK0=INT_MSK0_GPIO;        // I/O割込み許可

2if文以外は、オリジナルのままです。カウントUPDOWNのやり方は自分流に書き換えたけど。まぁ意味なし。
3LCD表示は時間が掛かるから、速く回した時に、追い付かなくなる。

[top]

外部水晶発振

ECOの起動手順

水晶の接続

AN2027には、他にもいろいろ書いてあるので、良く読んだ方が良さそうだ。 AN2014をみると、とりあえずは、水晶を接続したままでも書き込めそうな気がする。→いや、実際書き込めてるんですが。

動かしてみよう

        CPU_SCR1  |=  0x04;     // ECO_Ex
        OSC_CR0   |=  0x40;     // PLL_Mode
        OSC_CR0   |=  0x80;     // 32K_Select
Global Resource
32K_Select External
PLL_Mode Ext Lock
Port Select Drive
P1[0] XtalOut High Z
P1[1] XtalIn High Z

PSoCのクロックってどうなってるの?

水晶を付け替えてみる

32k_SelectPLL_mode 32kHz水晶 40kHz水晶 水晶なし
External Ext_Lock 8.51kHz 8.51kHz 8.51kHz
Disable 10.05kHz 10.05kHz 10.04kHz
Internal Ext_Lock 8.51kHz 8.51kHz 8.51kHz
Disable 10.04kHz 10.04kHz 10.05kHz

もしかすると

32k_SelectPLL_mode 32kHz水晶 40kHz水晶 水晶なし
External Ext_Lock9.98〜10.02kHz12.20〜12.23kHz8.92〜9.07kHz
Disable 10.08kHz 10.07kHz 10.08kHz
Internal Ext_Lock 8.53kHz 8.54kHz 8.54kHz
Disable 10.08kHz 10.08kHz 10.08kHz

4古い仕様の方が読み易いんじゃないかなぁ。新しい仕様は回りくどい書き方のような。。。
5じゃ、32k_Select→external、PLL_mode→Disableは意味あるのかなぁ。

[top] [電子工作関連に戻る]