616079 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

工作工房

工作工房

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
2006年11月13日
XML
カテゴリ:カテゴリ未分類

PSoC CPU SBL.JPG

ストロベリーリナックス社のサイプレスPSoC(CY8C27443-PXI)を使用したマイコンボードキットです。LCD表示とタイマーを使用しタイマー1で青色LEDを点灯した画面です。

制御にはタイマーは必要不可欠ですがPSoC CPUのタイマーは使えないと思っていましたが試行錯誤の結果、KIさんのホームページでタイマーは使用できることがわかりました。LCDはすんなり表示でき表示画面は参考資料のままです。

 Timer16のParametersをこのようにし、Periodを3276(32.768KHz/10)で100msecとします。

Timer16.JPG

 

boot.asmの ljmp _Timer16_1_ISRをljmp _int_timer16_1に変更します

org   24h                      ;PSoC Block DBB01 Interrupt Vector
    //ljmp _Timer16_1_ISR
    ljmp _int_timer16_1
    reti

 

タイマーとLCDのプログラムです 

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

#pragma interrupt_handler int_timer16_1  //ここが必要

unsigned  int timer_1;
unsigned  int timer_2;
unsigned  int timer_3;

void int_timer16_1()
{
 //PRT0DR ^= 0x0F;   //点滅テスト用

 if(timer_1 != 0){   //
  timer_1--;
 }
 if(timer_2 != 0){   //
  timer_2--;
 }
 if(timer_3 != 0){   //
  timer_3--;
 }
}

void main()
{
 // Insert your main routine code here.
 //port0 all out mode(001)
 //PRT0DM0 = 0xff;    //
 //PRT0DM1 = 0x00;    //
 //PRT0DM2 = 0x00;    //

 //port1 all out mode(001)
 PRT1DM0 = 0xff;    //
 PRT1DM1 = 0x00;    //
 PRT1DM2 = 0x00;    //

 Timer16_1_EnableInt();  //割り込みマスク1 Enable
 M8C_EnableGInt;    //CPU 全体の割り込み許可
 Timer16_1_Start();   //これがないとタイマーは機能しませんでした(詳細不明)

lcd_disp();  //LCD表示

Loop1:
 timer_1=10;

Loop2:
 if(timer_1 == 0){
  PRT1DR = 0x01;
 } 
 else{
  goto Loop2;
 }

 timer_2=10;
Loop3:
 if(timer_2 == 0){
  PRT1DR = 0x02;
 } 
 else{
  goto Loop3;
 }
 timer_3=10;
Loop4:
 if(timer_3 == 0){
  PRT1DR = 0x04;
 } 
 else{
  goto Loop4;
 }
 goto Loop1;
}

void lcd_disp()
{
 char str[ ] = "User Module";      // Define "RAM" based string
    LCD_1_Start();                    // Initialize LCD hardware
    LCD_1_Position(0,4);              // Position cursor @ row 0, col 4
    LCD_1_PrCString("PsoC LCD");      // Print a constant "ROM" string
    LCD_1_Position(1,2);              // Position cursor @ row 1, col 2
    LCD_1_PrString(str);              // Print "RAM" based string.

}

 

 

 






お気に入りの記事を「いいね!」で応援しよう

最終更新日  2006年11月14日 20時59分09秒
コメント(0) | コメントを書く



© Rakuten Group, Inc.