チーム1565

課題名

キータイマー

研究者名

Naoya Miyata
Singuu Kiichi

概要

PCのシリアルポートを用いて、キーボードで入力した数値から始まるタイマーを作成した。

使用器具

PSoC基盤 1個
PSoCMiniProg 1個
ストレート通信ケーブル 1個
ジャンパ線 2本

ソースコード

#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#pragma interrupt_handler countISR

int TC = 0;
int sec = 0;
char* strPtr;

char *atoa( int val, char *a, int radix ){
  char *p = a;
   unsigned int v = val;
   int n = 1;
   while(v >= radix){
       v /= radix;
       n++;
   }
   p = a + n;
   v = val;
   *p = '\0';
   do {
       --p;
       *p = v % radix + '0';
       if(*p > '9') {
           *p = v % radix - 10 + 'A';
       }
       v /= radix;
   } while ( p != a);
   return a;
}

void inputSec(void){
  UART_1_CPutString("\r\nHow many second?\r\n");
   while(1){
       if(UART_1_bCmdCheck()){
           strPtr  = UART_1_szGetParam();
           break;
       }
   }
   UART_1_PutString(strPtr);
   sec = atoi(strPtr);
}


void countISR(void){
  TC++;
   if(TC == 6){
       sec--;
       TC = 0;
       if(sec == 0){
           UART_1_CPutString("\r\nFinish!\r\n");
           sec--;
       }
       else if(sec > 0){
           atoa(sec,strPtr,10);
           UART_1_CPutString("\r\n");
           UART_1_PutString(strPtr);
       }
   }    
}

void main(void){
  
   M8C_EnableGInt;
   
   //Timer
   Timer16_1_EnableInt();
   
   //UART
   UART_1_CmdReset();
   UART_1_IntCntl(UART_1_ENABLE_RX_INT);
   UART_1_Start(UART_PARITY_NONE);
   
   //Counter
   Counter8_1_WritePeriod(155);
   Counter8_1_WriteCompareValue(77);
   Counter8_1_Start();
   
   inputSec();
   
   Timer16_1_Start();
   
   while(1){
   };
}

考察

入力した数値から始まるダウンカウンタをPC画面上で表示することが出来た。
入力した数値から約1秒間隔でカウントダウンを行い、最後には"Finish!"という単語を表示するようにした。
しかし、タイマーを途中で停止したり、LCDに文章の表示、光や音を利用するつもりであったが、時間がなく取り組むことが出来なかった。
結果的に、タイマーとしては完成したが、いまいち機能が物足りないものとなってしまった。

  • 最終更新:2015-12-22 16:36:54

このWIKIを編集するにはパスワード入力が必要です

認証パスワード