スキップしてメイン コンテンツに移動

投稿

IRQ 外部割込みサンプル : RX63N

#include "iodefine.h" #include "global.h" #include "vect.h" extern MAIN_STATE main_state; extern MODE_STATE mode_state; extern unsigned char volume; void initIRQ(void); void initIRQ(void){  int i;  ICU.IER[8].BYTE = 0x00;  //デジタルフィルタ 許可ビット  ICU.IRQFLTE0.BYTE = 0x00;  ICU.IRQFLTC0.WORD = 0xFFFF;//64clockに1回  //デジタルフィルタ 許可ビット IRQ0-7  ICU.IRQFLTE0.BYTE = 0xFF;  PORTD.PDR.BYTE = 0;  PORTD.PMR.BYTE = 0x00;//ポートモードレジスタ(0:汎用入出力ポート, 1:周辺機能)  //マルチファンクションピンコントローラ  MPC.PWPR.BYTE &= ~0x80;//PFSプロテクト解除  MPC.PWPR.BYTE |= 0x40;  MPC.PD0PFS.BYTE = 0x40;  MPC.PD1PFS.BYTE = 0x40;  MPC.PD2PFS.BYTE = 0x40;  MPC.PD3PFS.BYTE = 0x40;  MPC.PD4PFS.BYTE = 0x40;  MPC.PD5PFS.BYTE = 0x40;  MPC.PD6PFS.BYTE = 0x40;  MPC.PD7PFS.BYTE = 0x40;  MPC.PWPR.BYTE &= ~0x40;  MPC.PWPR.BYTE |= 0x80;//PFSプロテクト設定  ICU.IRQCR[0].BIT.IRQMD = 1;  ICU.IRQCR[1].BIT.IRQMD = 1;  ICU.IRQCR[2].BIT.IRQMD =...
最近の投稿

sound.c : RX63N

//後でコメントを追加する #include <stdio.h> #include <math.h> #include "iodefine.h" #include "global.h" #define SIN_MAX 256 #define RHYZM_MAX 26 void playSound(void); void stopSound(void); unsigned char ryzhmCnt = 0; unsigned char nextRyzhmCntFlag = 0; unsigned char nextMusicIntervalFlag = 0; unsigned short sinNow  = 0; unsigned char volume = 0x01; unsigned short musicFreq; unsigned short musicSpeed = 10; /* 256 c */ unsigned char sounds[] = {  127,130,133,136,139,142,145,148,  151,154,157,161,164,166,169,172,  175,178,181,184,187,189,192,195,  197,200,202,205,207,210,212,214,  217,219,221,223,225,227,229,231,  232,234,236,237,239,240,242,243,  244,245,246,247,248,249,250,251,  251,252,252,253,253,253,253,253,  253,253,253,253,253,252,252,251,  251,250,249,249,248,247,246,245,  243,242,241,239,238,236,235,233,  231,230,228,226,224,222,220,218,  215,213,211,209,206,204,201,199,  196...

HardwareSetup(周波数設定) : RX63N

void HardwareSetup(void) {  int i;  SYSTEM.PRCR.WORD = 0xA503;  SYSTEM.SOSCCR.BIT.SOSTP = 1;//サブクロック停止  SYSTEM.MOSCWTCR.BYTE = 0x0D;//メインクロック発振待機時間設定  SYSTEM.PLLWTCR.BYTE = 0x0F;//PLL発振待機時間設定  SYSTEM.PLLCR.BIT.PLIDIV = 0;  SYSTEM.PLLCR.BIT.STC = 0x0F;  SYSTEM.MOSCCR.BIT.MOSTP = 0;//メイン発振  SYSTEM.PLLCR2.BIT.PLLEN = 0;//PLL発振  for(i=0; i< 0x600; i++) ; //PLL安定待機時間以上待つ(メイン安定前)  SYSTEM.SCKCR.LONG = 0x21021211;  SYSTEM.SCKCR3.BIT.CKSEL = 4;//PLL回路選択  SYSTEM.SOSCCR.BIT.SOSTP = 0; //サブクロックスタート  SYSTEM.PRCR.WORD = 0xA500; }

PWM(マルチファンクションタイマパルスユニット) : RX63N

#include "iodefine.h" /*  * マルチファンクションタイマパルスユニットでのPWM出力  */ void InitPWM(void){  PORT1.PDR.BIT.B7 = 1;  PORT1.PMR.BIT.B7 = 1;  /*   * MTIOC3A   */  MPC.PWPR.BIT.B0WI = 0;  MPC.PWPR.BIT.PFSWE = 1;  MPC.P17PFS.BIT.PSEL = 0x1;  MPC.PWPR.BIT.PFSWE = 0;  MPC.PWPR.BIT.B0WI = 1;  SYSTEM.PRCR.WORD = 0xA503;  SYSTEM.MSTPCRA.BIT.MSTPA9 = 0;  SYSTEM.PRCR.WORD = 0xA500;  ICU.IPR[152].BIT.IPR = 10;  ICU.IR[152].BIT.IR = 0;  ICU.IER[0x13].BIT.IEN0 = 1;// MTU3 TGIA3  ICU.IER[0x13].BIT.IEN1 = 1;// MTU3 TGIB3  //TGRA カウンタクロックの選択  MTU3.TCR.BYTE = 0x28;//TGRAのコンペアマッチ・インプットキャプチャでTCNTクリア + 立ち下がりエッジでカウント  MTU3.TMDR.BYTE = 0x02;//PWMモード1  MTU3.TIORH.BYTE = 0x37;//初期LOWコンペアマッチでトグル(TRGBの設定) + 初期Highコンペマッチでトグル(TRGAの設定)  MTU3.TIER.BYTE = 0x01;//TGRA割り込みを許可  MTU.TRWER.BIT.RWE = 0x1;//プロテクト解除  MTU3.TGRA = 48000;  MTU3.TGRB = 24000;  MTU.TRWER.BIT.RWE = 0x0;//プロテクト設定  MTU....

I2C接続小型8文字×2行液晶

I2C接続小型8文字×2行液晶 AQM0802A-RN-GBW int initLCDmini(void) {  //以下のディレイはfor文で。  unsigned short time;  for(time = 0; time < 1000 ; time++);  i2cWrite(0x3E, 0x00, 0x38);  for(time = 0; time < 1000 ; time++);  i2cWrite(0x3E, 0x00, 0x39);  for(time = 0; time < 1000 ; time++);  i2cWrite(0x3E, 0x00, 0x14);  for(time = 0; time < 1000 ; time++);  i2cWrite(0x3E, 0x00, 0x70);  for(time = 0; time < 1000 ; time++);  i2cWrite(0x3E, 0x00, 0x56);  for(time = 0; time < 1000 ; time++);  i2cWrite(0x3E, 0x00, 0x6C);  for(time = 0; time < 1000 ; time++);  i2cWrite(0x3E, 0x00, 0x38);  for(time = 0; time < 1000 ; time++);  i2cWrite(0x3E, 0x00, 0x0C);  for(time = 0; time < 1000 ; time++);  i2cWrite(0x3E, 0x00, 0x01);  for(time = 0; time < 1000 ; time++);  return 0; } int LCDminiloc(char row, char column) {  int err = 0;  unsi...

RIIC0(I2C通信設定) : RX63N

#include "iodefine.h" int initRIIC0(void) {  //I2Cモジュールストップ状態の解除  SYSTEM.PRCR.WORD = 0xA502;//モジュールストップレジスタのプロテクト解除  SYSTEM.MSTPCRB.BIT.MSTPB21 = 0;//I2Cモジュールストップ状態の解除  SYSTEM.PRCR.WORD = 0xA500;//モジュールストップレジスタのプロテクト  // set port direction to input  PORT1.PDR.BIT.B3 = 0;// SDA0  PORT1.PDR.BIT.B2 = 0;// SCL0  // set port mode as peripheral device  PORT1.PMR.BIT.B3 = 1;// SDA0  PORT1.PMR.BIT.B2 = 1;// SCL0  // select pin function as RIIC  MPC.PWPR.BIT.B0WI = 0;  MPC.PWPR.BIT.PFSWE = 1;  MPC.P13PFS.BIT.PSEL = 0x0F;// SDA0  MPC.P12PFS.BIT.PSEL = 0x0F;// SCL0  MPC.PWPR.BIT.PFSWE = 0;  MPC.PWPR.BIT.B0WI = 1;  // オープンドレイン設定 外部プルアップ抵抗で出力決めるなら必要  PORT1.ODR0.BIT.B6 = 1;  PORT1.ODR0.BIT.B4 = 1;  //入力プルアップ有効  //PORT1.PCR.BIT.B3 = 1;  //PORT1.PCR.BIT.B2 = 1;  /* RIIC disable for RIIC initial */  RIIC0.ICCR1.BIT.ICE = 0;  RIIC0.ICCR1.BIT.IICR...

S12ADC : RX63N

#include "iodefine.h" #include "vect.h" void initS12ADC(void); unsigned char temperature; //RX63N内蔵の12ビットA/D変換器の初期設定関数本体 void initS12ADC(void) {  //12ビットAD変換器のモジュールストップ状態を解除  SYSTEM.PRCR.WORD = 0xA502;  SYSTEM.MSTPCRA.BIT.MSTPA17 = 0;  SYSTEM.PRCR.WORD = 0xA500;//PMRレジスタを汎用入出力に  PORT4.PDR.BIT.B0 = 0;  PORT4.PDR.BIT.B1 = 0;  PORT4.PDR.BIT.B2 = 0;  PORT4.PMR.BIT.B0 = 0;  PORT4.PMR.BIT.B1 = 0;  PORT4.PMR.BIT.B2 = 0;  MPC.PWPR.BYTE &= ~0x80;  MPC.PWPR.BYTE |= 0x40;  MPC.P40PFS.BIT.ASEL = 1;//アナログ端子に設定(ASELビットを1に)  MPC.P41PFS.BIT.ASEL = 1;  MPC.P42PFS.BIT.ASEL = 1;  //MPC.P40PFS.BYTE = 0x80;  MPC.PWPR.BYTE &= 0x40;  MPC.PWPR.BYTE |= ~0x80;  S12AD.ADCSR.BIT.ADST = 0;//stop ADCコンバータ  S12AD.ADCSR.BYTE = 0x10;//ADコントロールレジスタの設定  S12AD.ADANS0.WORD = 0x07;//AN000・AN001・AN002だけ可  //S12AD.ADANS1.WORD = 0x00;  S12AD.ADCER.BIT.ADRFMT = 0;//右づめ  S12AD.ADCSR.BIT.ADCS = 1; ...