[[PSoC4]] #contents 2015/06/07からのアクセス回数 &counter; ** 参考資料 [#x330ad0b] [[基板付き体験編 ARM PSoCで作るMyスペシャル・マイコン>http://shop.cqpub.co.jp/hanbai/books/48/48171.html]] に倣って、LEDチカチカ(ソフト版)を試してみます。 *** プロジェクトの作成 [#r337f051] [[PSoC4/LEDチカチカ(ハード版)]]と同様に新しいプロジェクトをPSoC4_LED_Interruptという名前で作成します。 TopDesignでPorts and PinsからDigital Output Pinをドラッグし、ダブルクリックでConfigureを開き、 以下の様に名前をLEDとし、HW connectionのチェックを外します。 &ref(th_LED_Cfg.jpg); 次にPSoC4_LED_INterrupt.cydwrを開き、PinsタグでLEDにP1[6]を割り当てます。 システムのクロックの設定には、Clocksタブを開きEdit Clock...をクリックして、 &ref(th_Edit_Clock.jpg); 以下の様に内蔵発振回路(IMO)を使って最高の48MHzにセットします。 &ref(th_Clock_Setting.jpg); *** ビルド [#hd5cd045] main.cを編集する前に、ハード構成だけでビルドをします。 Build→Build PSoC4_LED_interruptを選択します。 次にmain.cをダブルクリックして、以下の様に編集し、再度ビルドします。 - CLOCK_FREQ=48000000, INT_FREQ=1000で1m秒での割込とします - CY_ISRは割込関数を定義するときに使用するマクロです - CyIntSetSysVectorでSysTickの割込ベクタ15にSysTick_Handlerをセットします - SysTick_Configで割込間隔をセットします - CyGlobalIntEnableマクロで割込可能にします #pre{{ #include <project.h> #define CLOCK_FREQ 48000000L // クロック周波数 #define INT_FREQ 1000 // 割り込み周波数 volatile uint32 gTick = 0; // SysTick Interrupt Handler CY_ISR(SysTick_Handler) { gTick++; } // Delay Routine void Delay(uint32 tick_delay) { uint32 tick_entry = gTick; // wait for tick while ((gTick - tick_entry) < tick_delay) continue; } int main() { /* Place your initialization/startup code here (e.g. MyInst_Start()) */ // Set the SysTick Interrupt Vector (=15) in Vector Table in RAM CyIntSetSysVector(15, (cyisraddress)SysTick_Handler); // Start SysTick periodic Interrupt SysTick_Config(CLOCK_FREQ/INT_FREQ); // SysTick=1000Hz(1ms) // Enable global interrupts CyGlobalIntEnable; for(;;) { /* Place your application code here. */ LED_Write(~LED_Read()); // Toggle LED Terminal Delay(500); } } }} *** プログラムの書き込み [#oe212e77] Debug→Programでプログラムが書き込まれます。 ** コメント [#b3d764a6] #vote(おもしろかった[0],そうでもない[1],わかりずらい[0]) #vote(おもしろかった[1],そうでもない[1],わかりずらい[0]) 皆様のご意見、ご希望をお待ちしております。勉強会で分からなかったこと等、お気軽に問い合わせて下さい。 スパム防止に画像の文字列も入力してください。 #comment_kcaptcha