ºÇ½ª¹¹¿·¡§ zoidstoeva 2010ǯ03·î31Æü(¿å) 18:54:39ÍúÎò
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; }
- ¥«¥Æ¥´¥ê¡§
- ³ØÌ䡦Íý·Ï
- ¥í¥Ü¥Ã¥È
¥³¥á¥ó¥È¤ò¤«¤¯