CARW¥á¥ó¥Ð¡¼¸þ¤±¤Î¾ðÊó¶¦Í­¡¦¸ò´¹Wiki¤Ç¤¹¡£

MTU20¤ÎPWM¥â¡¼¥É1¤Ë¤è¤ëLEDÅÀÌÇ
#include "iodefine.h"

void initMTU(void)
{
	STB.CR4.BIT._MTU2 = 0;      //MTU¥¹¥¿¥ó¥Ð¥¤¥â¡¼¥É²ò½ü
	
	MTU2.TSTR.BYTE = 0;         //¥«¥¦¥ó¥ÈÄä»ß
	MTU20.TCR.BIT.TPSC = 1;     //¥¯¥í¥Ã¥¯¼þÇÈ¿ô¦Õ/4(MTU¤Î¥¯¥í¥Ã¥¯¤Ï25Mhz)
	MTU20.TCR.BIT.CCLR = 1;     //TGRA¥³¥ó¥Ú¥¢¥Þ¥Ã¥Á¤ÇTCNT¥¯¥ê¥¢
	MTU20.TIOR.BIT.IOA = 1;     //½é´ü¾õÂÖ¤Ç0½ÐÎÏ ¥³¥ó¥Ú¥¢¥Þ¥Ã¥Á¤·¤¿¤é0½ÐÎÏ
	MTU20.TIOR.BIT.IOB = 2;     //¥Ç¥å¡¼¥Æ¥£ ¥³¥ó¥Ú¥¢¥Þ¥Ã¥Á¤ÇH
	MTU20.TGRA = 6144-1;
	MTU20.TGRB = 6143;
	MTU20.TMDR.BIT.MD = 2;      //PWM¥â¡¼¥É1
	
	PFC.PECRL1.BIT.PE0MD = 1;   //¥Ý¡¼¥ÈE¤òMTU2¤ËÀßÄê
	PFC.PEIORL.BYTE.L = 0xff;   //¥Ý¡¼¥ÈE½ÐÎÏÀßÄê
	PE.DRL.BYTE.L = 0;          //LED¾ÃÅô
	
	MTU2.TSTR.BIT.CST0 = 1;     //¥«¥¦¥ó¥È¥¹¥¿¡¼¥È	
}

void initWait(void)
{
	STB.CR4.BIT._CMT = 0;		//CMT¥¹¥¿¥ó¥Ð¥¤¥â¡¼¥É²ò½ü
	
	CMT.CMSTR.BIT.STR0 = 0;		//¥«¥¦¥ó¥ÈÄä»ß
	CMT0.CMCSR.BIT.CKS = 0;		//¦Õ/8(SH7125¤Î¼þÊÕ¥¯¥í¥Ã¥¯¤Ï¦Õ=25MHz)25/8=5MHz¢â1sec
	CMT0.CMCSR.BIT.CMIE = 0;	//¥Õ¥é¥°¥¯¥ê¥¢(³ä¤ê¹þ¤ß¶Ø»ß)
	CMT0.CMCNT = 0;				//¥«¥¦¥ó¥¿¥¯¥ê¥¢
	CMT0.CMCOR = 3125-1;		//¥³¥ó¥Ú¥¢¥Þ¥Ã¥Á¥³¥ó¥¹¥¿¥ó¥È¥ì¥¸¥¹¥¿ÀßÄê 5 / 1000 = 5000¥«¥¦¥ó¥È¢â1msec
}

void wait( int number )
{
	long value;
	
	CMT.CMSTR.BIT.STR0 = 1;				//¥«¥¦¥ó¥È³«»Ï
	
	for( value = 0; value < number; value ++ )
	{
		while( !CMT0.CMCSR.BIT.CMF ) ;	//CMCNT=CMCOR¥Õ¥é¥°ÂÔ¤Á
		CMT0.CMCSR.BIT.CMF = 0;			//¥Õ¥é¥°¥¯¥ê¥¢
	}
	
	CMT.CMSTR.BIT.STR0 = 0;				//¥«¥¦¥ó¥ÈÄä»ß
}

int main()
{	
	int grb;
	
	initMTU();
	initWait();
	
	while(1)
	{	
		for( grb = 6143; grb > 0; grb -- )
		{
			MTU20.TGRB = grb;
			wait(1);	
		}
		
		for( grb = 0; grb < 6144; grb ++ )
		{
			MTU20.TGRB = grb;
			wait(1);	
		}
	}
	
	return 0;
}

¥³¥á¥ó¥È¤ò¤«¤¯


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

¥á¥ó¥Ð¡¼¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹