½©·îÅŻҤÇÆþ¼ê¤Ç¤¤ë£²Áê¥æ¥Ë¥Ý¡¼¥é¥¹¥Æ¥Ã¥Ô¥ó¥°¥â¡¼¥¿¡ÖBH200575048¡×¤ò»È¤Ã¤Æ¡¢¥¹¥Æ¥Ã¥Ô¥ó¥°¥â¡¼¥¿¤ò°·¤¦¤¿¤á¤Î¼þÊÕ²óÏ©¤òºî¤ê¤Þ¤·¤¿¡£
¤¿¤À¤·¡¢º£²ó¤Ï¥¹¥Æ¥Ã¥Ô¥ó¥°¥â¡¼¥¿¤Î¥³¥ó¥È¥í¡¼¥é¤È¤·¤Æ¡¢½©·îÅŻҤÎH8/3048¥Þ¥¤¥³¥ó¥Ü¡¼¥É¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£¡Ê¼ê»ý¤Á¤Ë¤³¤ì¤·¤«¤Ê¤«¤Ã¤¿¤Î¤Çorz¢ª¸½ºß¤âÈÎÇ䤵¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢3052¤ò»ÈÍѤ·¤¿¾¯¤·Àǽ¤ÎÎɤ¤¥Þ¥¤¥³¥ó¥Ü¡¼¥É¤¬¼çÎϤˤʤäƤ¤¤ë¤è¤¦¤Ç¤¹¡£¥×¥í¥°¥é¥à¡¢µÚ¤Ó¥Ô¥óÇÛÃ֤ϸߴ¹À¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤½¤Î¤Þ¤Þ»ÈÍѤǤ¤Þ¤¹¡Ë
¥Þ¥¤¥³¥ó¤«¤é¤Î½ÐÎϤǤÏÅöÁ³¶îÆ°¤Ç¤¤Þ¤»¤ó¤Î¤Ç¡¢ÁýÉý´ï¤¬É¬Íפˤʤê¤Þ¤¹¡£
¡ÊÀè¤Û¤É¤â½ñ¤¤Þ¤·¤¿¤¬¡Ë½©·îÅŻҤÎH8/3048¥Þ¥¤¥³¥ó¥Ü¡¼¥É¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£¤³¤Á¤é¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÆäËÀâÌÀ¤Ï¤·¤Þ¤»¤ó¡£
¤³¤ó¤Ê´¶¤¸¤Î¡¢Èó¾ï¤Ëñ½ã¤Ê²óÏ©¤Ç¤¹¡£
¤³¤Î²óÏ©¤ò£´¸Ä°ìÁȤǡ¢°ì¤Ä¤Î¥¹¥Æ¥Ã¥Ô¥ó¥°¥â¡¼¥¿¤ò¶îÆ°¤Ç¤¤Þ¤¹¡£
¤³¤Á¤é¤Î¼ÂÂֿޤˤϡ¢ÆóÁÈÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¡£
¥Ý¡¼¥È¤ÏPB¤ò»ÈÍѤ·¤Þ¤¹¡£ Àè¤Û¤ÉÀ©ºî¤·¤¿¥â¡¼¥¿¥É¥é¥¤¥Ð¥Ü¡¼¥É¤ÎÆþÎÏü»Ò¤ò°Ê²¼¤Î¤è¤¦¤ËÀܳ¤·¤Þ¤¹¡£
PB-1 | X |
PB-2 | X^ |
PB-3 | Y |
PB-4 | Y^ |
Vcc(+5V) | Common |
¤¿¤À¤·¡¢¥â¡¼¥¿ÍÑÅŸ»¤Ï¡¢¤Ç¤¤ë¤À¤±¥Þ¥¤¥³¥ó¤È¤ÏÊÌÅŸ»¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
forʸ¤Ë¤è¤ê¡¢¥¹¥Æ¥Ã¥×´Ö³Ö¤òÄ´À°¤·¤Þ¤¹¤¬¡¢¥Þ¥¤¥³¥ó¤¬¥â¡¼¥¿¶îÆ°¤Î¤ß¤ËÀìÇ°¤¹¤ë¤¿¤á¡¢¤¢¤Þ¤ê¥ª¥¹¥¹¥á¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
¤Þ¤¿Î弧¥Ñ¥¿¡¼¥ó¤Ï¡¢ÇÛÎó¤Ë¤è¤êÀßÄꤷ¤Æ¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¥³¥á¥ó¥È¥¢¥¦¥È¤òÀÚ¤êÂؤ¨¤ë¤³¤È¤ÇÎ弧¥Ñ¥¿¡¼¥ó¤òÀÚ¤êÂؤ¨¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
Ä̾ï¤Ï¡¢¹â²óž¿ô¡¦¹â¥È¥ë¥¯¤¬ÆÀ¤é¤ì¤ë£²ÁêÎ弧¤ò»ÈÍѤ·¤Þ¤¹¡£
PB.DDR = 0xff;¤Ç¡¢¥Ý¡¼¥ÈPB¤òÁ´½ÐÎϤˤ·¤Æ¤¤¤Þ¤¹¡£
#include <3048.h> void wait(int t) { while (t--); } //¥â¡¼¥¿¶îÆ° void motor(int speed) { int i; // unsigned char md[] = {0x11, 0x22, 0x44, 0x88}; //1ÁêÎ弧 unsigned char md[] = {0x33, 0x66, 0xcc, 0x99}; //2ÁêÎ弧 // unsigned char md[] = {0x11, 0x33, 0x22, 0x66, 0x44, 0xcc, 0x88, 0x99}; //1-2ÁêÎ弧 for (i = 0; i < sizeof(md); i++){ PB.DR.BYTE = md[i]; wait(speed); } } int main(void) { int i, j, speed; PB.DDR = 0xff; speed = 10000; while (1){ motor(speed); //²Ã® if (j > 5){ j = 0; speed -= 500; }else{ j++; } } return 0; }
¥Þ¥¤¥³¥ó¤Î¥¿¥¤¥Þ³ä¤ê¹þ¤ß¤ò»ÈÍѤ·¤Þ¤¹¡£
¥×¥í¥°¥é¥à¤òÀ°Íý¤¹¤ë¤¿¤á¡¢´Ø¿ô¤ËºÙ¤«¤¯Ê¬¤±¤Æ¤¤¤Þ¤¹¡£
//¥¹¥Æ¥Ã¥Ô¥ó¥°¥â¡¼¥¿¤Î²óž //¥¿¥¤¥Þ³ä¤ê¹þ¤ß(ITU0)ÍøÍÑ //10ms¤´¤È¤Ë³ä¤ê¹þ¤ß #include <3048.h> int global_iMotorStep; //Æþ½ÐÎϽé´ü²½ void init_io(void) { PB.DDR = 0xff; } //ITU½é´ü²½ void init_itu(void) { ITU0.TCR.BIT.CCLR = 1; //¥«¥¦¥ó¥¿¥¯¥ê¥¢Í×°ø ITU0.TCR.BIT.TPSC = 3; //¥¿¥¤¥Þ¥×¥ê¥¹¥±¡¼¥é 25MHz / 8 = 3.125MHz ITU0.GRA = 62499; // 1 / 3.125MHz = 3.2e-4 ms , 20ms / 3.2e-4 ms = 15625 ITU0.TIER.BIT.IMIEA = 1; //IMFA¥Õ¥é¥°¤Ë¤è¤ë³ä¤ê¹þ¤ßµö²Ä } //ITU¥¤¥ó¥¿¡¼¥Ð¥ë¥¿¥¤¥Þ³ä¤ê¹þ¤ß void int_imia0(void) { static int iStep = 0; ITU0.TSR.BIT.IMFA = 0; PB.DR.BYTE = global_iMotorStep; global_iMotorStep <<= 1; if (global_iMotorStep == 0x110){ global_iMotorStep = 0x11; } } //¼ç½èÍý int main(void) { int i; init_io(); init_itu(); ITU.TSTR.BIT.STR0 = 1; //¥¿¥¤¥Þ³«»Ï global_iMotorStep = 0x11; EI; //³ä¤ê¹þ¤ß¤Îµö²Ä while(1); return 0; }
ÊÌ¥Ú¡¼¥¸¤Ç¾Ò²ð¤·¤Æ¤¤¤ë¥·¥ê¥¢¥ëÄÌ¿®¥é¥¤¥Ö¥é¥ê¤ÈÁȤ߹ç¤ï¤»¤¿Îã¤Ç¤¹¡£
Tera TermÅù¤ÎÄÌ¿®¥×¥í¥°¥é¥à¤«¤é¥â¡¼¥¿¤Î²óž®ÅÙ¤ÈÎ弧¥Ñ¥¿¡¼¥ó¤òÀÚ¤êÂؤ¨¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
//¥¹¥Æ¥Ã¥Ô¥ó¥°¥â¡¼¥¿¤Î²óž //¥¿¥¤¥Þ³ä¤ê¹þ¤ß(ITU0)ÍøÍÑ //10ms¤´¤È¤Ë³ä¤ê¹þ¤ß #include <3048.h> #include "h8sci.c" //¥¹¥Æ¥Ã¥Ô¥ó¥°¥â¡¼¥¿¤ÎÎ弧¥Ñ¥¿¡¼¥ó #define STEP_PATTERN_1 0 #define STEP_PATTERN_2 1 #define STEP_PATTERN_12 2 unsigned char global_cMotorStep[3][9] = { {0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88}, //1ÁêÎ弧 {0x33, 0x66, 0xcc, 0x99, 0x33, 0x66, 0xcc, 0x99}, //2ÁêÎ弧 {0x11, 0x33, 0x22, 0x66, 0x44, 0xcc, 0x88, 0x99}}; //1-2ÁêÎ弧 unsigned char global_iStepPattern = STEP_PATTERN_2; //Æþ½ÐÎϽé´ü²½ void init_io(void) { PB.DDR = 0xff; } //ITU½é´ü²½ void init_itu(void) { ITU0.TCR.BIT.CCLR = 1; //¥«¥¦¥ó¥¿¥¯¥ê¥¢Í×°ø ITU0.TCR.BIT.TPSC = 3; //¥¿¥¤¥Þ¥×¥ê¥¹¥±¡¼¥é 25MHz / 8 = 3.125MHz //ITU0.GRA = 62499; // 1 / 3.125MHz = 3.2e-4 ms , 20ms / 3.2e-4 ms = 62499 //ITU0.GRA = 46874; ITU0.GRA = 31249; // 1 / 3.125MHz = 3.2e-4 ms , 10ms / 3.2e-4 ms = 31249 //ITU0.GRA = 15625; // 1 / 3.125MHz = 3.2e-4 ms , 5ms / 3.2e-4 ms = 15625 ITU0.TIER.BIT.IMIEA = 1; //IMFA¥Õ¥é¥°¤Ë¤è¤ë³ä¤ê¹þ¤ßµö²Ä } //ITU¥¤¥ó¥¿¡¼¥Ð¥ë¥¿¥¤¥Þ³ä¤ê¹þ¤ß void int_imia0(void) { static int iStep = 0; ITU0.TSR.BIT.IMFA = 0; //³ä¤ê¹þ¤ß¥¹¥Æ¡¼¥¿¥¹¥Õ¥é¥°¡¡¥¯¥ê¥¢ //¥â¡¼¥¿¤Î¶îÆ° PB.DR.BYTE = global_cMotorStep[global_iStepPattern][iStep]; if (iStep++ > 7){ iStep = 0; } } //¼ç½èÍý int main(void) { int i; char cBuffer; char strMessage[100]; init_h8sci(BR57600); init_io(); init_itu(); h8sci_out_string("Hello\n"); ITU.TSTR.BIT.STR0 = 1; //¥¿¥¤¥Þ³«»Ï EI; //³ä¤ê¹þ¤ß¤Îµö²Ä while (1){ //¥¡¼ÆþÎϤμõÉÕ cBuffer = h8sci_in_data(); switch (cBuffer){ //¥â¡¼¥¿²óžÀ©¸æ case 'z': ITU0.GRA += 2000; h8sci_out_string("> Speed Down\n"); break; case 'a': ITU0.GRA += 500; h8sci_out_string("> Speed Down\n"); break; case 'q': ITU0.GRA -= 500; h8sci_out_string("> Speed Up\n"); break; case '1': ITU0.GRA -= 2000; h8sci_out_string("> Speed Up\n"); break; case 'w': global_iStepPattern = STEP_PATTERN_12; h8sci_out_string("> Step Pattern 1-2\n"); break; case 's': global_iStepPattern = STEP_PATTERN_2; h8sci_out_string("> Step Pattern 2\n"); break; case 'x': global_iStepPattern = STEP_PATTERN_1; h8sci_out_string("> Step Pattern 1\n"); break; default: break; } } return 0; }