いつもお世話になっております.
今回CS+で生成されたCファイルの扱いでつまずいてしまったので質問させてください.
現在私はルネサスエレクトロニクスさんの統合開発環境CS+によってマイコンへの書き込みおよび
A/D変換の結果をシリアル通信で行おうとしています.
そこでチュートリアルを進めていく中で疑問が発生しました.
CS+でコード生成,ビルドデバックを行うと様々なcファイルやhファイルが生成されました.
マニュアルに書いてあったA/D変換のコードはr_cg_cmt_user.cに記載されていました.
このcファイルの中身を実行させたいのですが,CS+上にある実行のボタンを押すと
r_cg_main.cが作動します.
ここで皆さんにお聞きしたいのですが,
確かにCS+がmainファイルを動かしたい気持ちはわからなくも無いのですがこの場合
・r_cg_main.cの中にr_cg_cmt_user.cの動かしたい部分を搭載する
・r_cg_cmt_user.cだけを作動させる(させ方は調べたのですがよくわかりません)
・そもそもコンパイルやビルドの考え方の時点で私が間違っている
の様なことが考えられたのですが,プログラミング初心者なのでまず何が違うのかよくわかりません.
どなたかご教授いただけないでしょうか.
よろしくお願い致します.
以下にr_cg_main.cとr_cg_cmt_user.cのコードをincludeするところから載せておきます
(#を前に打つと表記が変になるのでincludeなどの前の#は消しています)
・r_cg_main.c
include "r_cg_macrodriver.h"
include "r_cg_cgc.h"
include "r_cg_icu.h"
include "r_cg_gpt.h"
include "r_cg_cmt.h"
include "r_cg_sci.h"
include "r_cg_s12ad.h"
/* Start user code for include. Do not edit comment generated here /
/ End user code. Do not edit comment generated here */
include "r_cg_userdefine.h"
/***********************************************************************************************************************
Global variables and functions
**********************************************************************************************************************/
/ Start user code for global. Do not edit comment generated here */
volatile unsigned long x;
unsigned char sw2=0;
unsigned long sw2_counter=0;
const unsigned long sw2_counter_skip=2000;
unsigned char sci_buf[SCI_BUF_SIZE];
unsigned short sci_buf_write_p=0;
unsigned short sci_buf_read_p=0;
unsigned char pos;
/* End user code. Do not edit comment generated here */
static void R_MAIN_UserInit(void);
/***********************************************************************************************************************
- Function Name: main
- Description : This function implements main function.
- Arguments : None
- Return Value : None
**********************************************************************************************************************/
void main(void)
{
R_MAIN_UserInit();
/ Start user code. Do not edit comment generated here */
sciInit(); sciPrint("BLUSHLESS MOTOR STARTER KIT TUTORIAL3¥n"); MPC.PWPR.BIT.B0WI = 0; MPC.PWPR.BIT.PFSWE = 1; //LED PORT0.PMR.BIT.B5 = 0; //ポートモードレジスタ MPC.P05PFS.BYTE = 0x00; //I/Oポート選択 PORT0.PODR.BIT.B5 = 0; //初期出力0 PORT0.PDR.BIT.B5 = 1; //出力モード //SW PORT0.PMR.BIT.B7 = 0; //ポートモードレジスタ MPC.P07PFS.BYTE = 0x00; //I/Oポート選択 PORT0.PDR.BIT.B7 = 0; //入力モード //HS //PORTD.PDR.BIT.B5 = 0; //入力モード //PORTD.PDR.BIT.B6 = 0; //入力モード //PORTD.PDR.BIT.B7 = 0; //入力モード while (1U) { sw2 = PORT0.PIDR.BIT.B7; if((sw2 == 0) && (sw2_counter == sw2_counter_skip)) { PORT0.PODR.BIT.B5 = ~PORT0.PODR.BIT.B5; } if((sw2 == 1) && (sw2_counter < sw2_counter_skip)) sw2_counter++; else if(sw2 == 0) sw2_counter=0; if(sci_buf_read_p != sci_buf_write_p) { sciWrite(sci_buf[sci_buf_read_p++]); if(sci_buf_read_p == SCI_BUF_SIZE) sci_buf_read_p=0; } nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop(); } /* End user code. Do not edit comment generated here */
}
/***********************************************************************************************************************
- Function Name: R_MAIN_UserInit
- Description : This function adds user code before implementing main function.
- Arguments : None
- Return Value : None
**********************************************************************************************************************/
void R_MAIN_UserInit(void)
{
/ Start user code. Do not edit comment generated here /
R_SCI1_Start();
clrpsw_i();
R_ICU_IRQ5_Start();
R_ICU_IRQ6_Start();
R_ICU_IRQ7_Start();
ICU.IR[69].BIT.IR = 0; //割り込みフラグクリア
ICU.IR[70].BIT.IR = 0;
ICU.IR[71].BIT.IR = 0;
for(x=0; x<10; x++) nop(); //wait
setpsw_i();
/ End user code. Do not edit comment generated here */
}
/* Start user code for adding. Do not edit comment generated here */
unsigned char hs_read(void)
{
unsigned char pos;
pos = (PORTD.PIDR.BIT.B7 << 2) + (PORTD.PIDR.BIT.B6 << 1) + PORTD.PIDR.BIT.B5; return pos;
}
/* End user code. Do not edit comment generated here */
・r_cg_cmt_user.c
include "r_cg_macrodriver.h"
include "r_cg_cmt.h"
/* Start user code for include. Do not edit comment generated here /
include "blsm_temp_table.h"
/ End user code. Do not edit comment generated here */
include "r_cg_userdefine.h"
/***********************************************************************************************************************
Global variables and functions
**********************************************************************************************************************/
/ Start user code for global. Do not edit comment generated here /
/ End user code. Do not edit comment generated here */
/***********************************************************************************************************************
- Function Name: r_cmt_cmi0_interrupt
- Description : This function is CMI0 interrupt service routine.
- Arguments : None
- Return Value : None
**********************************************************************************************************************/
if FAST_INTERRUPT_VECTOR == VECT_CMT0_CMI0
pragma interrupt r_cmt_cmi0_interrupt(vect=VECT(CMT0,CMI0),fint)
else
pragma interrupt r_cmt_cmi0_interrupt(vect=VECT(CMT0,CMI0))
endif
static void r_cmt_cmi0_interrupt(void)
{
/ Start user code. Do not edit comment generated here */
unsigned short temparature_ad_val, vr_ad_val;
unsigned short temparature;
unsigned char i;
static unsigned long timer_counter=0;
timer_counter++; R_S12AD0_Start(); //A/D conv start while(S12AD.ADCSR.BIT.ADST == 1); //wait finished R_S12AD1_Start(); //A/D conv start while(S12AD1.ADCSR.BIT.ADST == 1); //wait finished R_S12AD0_Get_ValueResult(6, &temparature_ad_val); R_S12AD1_Get_ValueResult(8, &vr_ad_val); //tempatature calc for(i=0; i<80; i++) { if(temparature_ad_val < g_blsm_ad_val_table[i]) break; } temparature = g_blsm_temp_table[i]; GPT2.GTCCRA = (unsigned short)((float)(vr_ad_val)/4095.0*3000.0); if((timer_count
er % 500) == 0)
{
sciPrintBuf("\n");
sciPrintBuf("Tempatature(A/D value) : ");
sciPrintShortIntBuf(temparature_ad_val);
sciPrintBuf("\n");
sciPrintBuf("Tempatature(degree) : "); sciPrintShortIntBuf(temparature); sciPrintBuf("\n"); sciPrintBuf("VR(A/D value) : "); sciPrintShortIntBuf(vr_ad_val); sciPrintBuf("\n"); sciPrintBuf("P21 duty : "); sciPrintShortIntBuf(GPT2.GTCCRA); sciPrintBuf(" / 3000 \n"); } /* End user code. Do not edit comment generated here */
}
/* Start user code for adding. Do not edit comment generated here /
/ End user code. Do not edit comment generated here */