|
|
ÀÚ·á½Ç > °ÁÂÀÚ·á |
|
|
Á¶È¸ : 6104 |
ŸÀÌ¸Ó Çϳª·Î 8°³ÀÇ ¼º¸¸ðÅÍ µ¹¸®´Â pseudoÄÚµå..
|
|
|
¾Æ´ÂºÐÀº ´Ù ¾Æ½Ã°ÚÁö¸¸ Ȥ½Ã³ª ÇÊ¿äÇÑ ºÐÀÌ ÀÖÀ»±îºÁ ¿Ã¸³´Ï´Ù.
ÀÏ´Ü Å¸À̸ÓÀÇ µ¿ÀÛÀ̳ª ÀÔ/Ãâ·Â¿¡ °üÇÑ ³»¿ëÀº ¾î´ÀÁ¤µµ ¾Æ´Â »ç¶÷À» À§ÇØ ÀÛ¼ºÇß½À´Ï´Ù.
ÆÄÇüÀÇ ±×¸²ÀÌ ¾Æ±Í°¡ ¸ÂÁö ¾ÊÀ»¶§´Â ¸Þ¸ðÀå¿¡ º¹»çÇϱâ/ºÙÀ̱⸦
Çؼ º¸½Ã¸é Á¦´ë·Î µÈ ±×¸²À» º¼ ¼ö ÀÖ½À´Ï´Ù.
Ȥ½Ã ±Ã±ÝÇϽÅÁ¡À̳ª ´õ ÀÚ¼¼ÇÑ ³»¿ëÀÌ ÇÊ¿äÇϽźÐÀº ´ä±Û ¸»°í
Àú¿¡°Ô ¸ÞÀÏ Áֽñ⠹ٶø´Ï´Ù.
=================================================== //ŸÀÌ¸Ó ÀÎÅÍ·´Æ® ÇÔ¼ö void timer0(void) { if(flag) { port = 0x01<<motorIndex; countValue = dat[motorIndex]; flag = 0; } else { port = 0; countVlaue = 2500 - dat[motorIndex]; motorIndex++; motorIndex %= 8; flag = 1 } }
//ŸÀÌ¸Ó ÀÎÅÍ·´Æ® ÇÔ¼ö(¼Óµµ°ü·Ã ºÎºÐ ³ÖÀº°Í) void timer0(void) { if(targetDat[motor0] > dat[motor0])dat[motor0] += velocity[motor0]; else if(targetDat[motor0] < dat[motor0])dat[motor0] -= velocity[motor0];
if(flag) { port = 0x01<<motorIndex; //ÀÌ °ªÀ» Æ÷Æ®¸¦ ÅëÇØ Ãâ·ÂÇÑ´Ù. countValue = dat[motorIndex]; //ÀÌ °ªÀ» ŸÀ̸Ó/Ä«¿îÆ® ·¹Áö½ºÅÍ¿¡ ¼¼ÆÃÇÑ´Ù. flag = 0; } else { port = 0; countVlaue = 2500 - dat[motorIndex]; motorIndex++; motorIndex %= 8; flag = 1 } }
*º¯¼ö ¼³¸í: flag : Àü¿ªº¯¼ö, intÇüÀ̵ç, char ÇüÀÌµç »ó°ü ¾ø´Ù. ŸÀ̸Ӱ¡ °É¸®¸é¼ 1À» Ãâ·ÂÇÒ Â÷·ÊÀÎÁö, 0À» Ãâ·ÂÇÒ Â÷·ÊÀÎÁö¸¦ ÀúÀåÇÏ´Â º¯¼ö port : ÀÌ °ªÀ» Ãâ·ÂÆ÷Æ®¸¦ ÅëÇØ Ãâ·ÂÇÑ´Ù. »ç¿ëÇÏ´Â ÄÄÆÄÀÏ·¯¸¶´Ù ´Ù¸£Áö¸¸ outport¸¦ ÀÌ¿ëÇϰųª ·¹Áö½ºÅÍ ÁÖ¼Ò¸¦ ÀÌ¿ëÇØ Ãâ·ÂÇÑ´Ù. Æ÷Æ®´Â 8ºñÆ®°¡ ¼ø¼´ë·Î µÇ¾îÀִ°ÍÀ» »ç¿ëÇÑ´Ù. countValue : ŸÀ̸Ó/Ä«¿îÆ®°ª. high½ÅÈ£°¡ Ãâ·ÂµÇ´Â ±æÀÌÀÌ´Ù. ¿©±â¼´Â 2500À̶ó´Â °ªÀÌ ¼¼ÆõǾî ÀÖÀ» °æ¿ì ŸÀ̸ÓÀÇ ÁֱⰡ 2.5ms°¡ µÈ´Ù°í °¡Á¤ÇÏ¿´´Ù. ŸÀ̸ÓÀÇ ¼¼Æÿ¡ µû¶ó ÀÌ °ªÀº ´Þ¶óÁö°Ô µÈ´Ù. motorIndex : ¾î´À ¸ðÅÍ(¶Ç´Â Æ÷Æ®ÀÇ ¾î´À ºñÆ®)¿¡ ÇØ´çÇÏ´Â PWMÀ» Ãâ·ÂÇÏ´ÂÁö¸¦ ÀúÀåÇÏ°í ÀÖ´Â º¯¼ö. 0~7±îÁöÀÇ °ªÀ» °®´Â´Ù. dat[] : ŸÀ̸Ó/Ä«¿îÆ®¿¡ µé¾î°¥ °ª. ÀÌ °ªÀ» Á¶Á¤ÇØ ÁÜÀ¸·Î½á °¢µµ¸¦ Á¶Á¤ÇÒ¼ö ÀÖ´Ù. ¿©±â¼´Â dat[]ÀÇ °ªÀÇ 1500À» °¡Áú¶§ highÀÇ ½ÅÈ£°¡ 1.5ms°¡ µÇ¸ç, ¼º¸¸ðÅÍ°¡ Áß°£¿¡ ¿À°Ô µÈ´Ù.
*Áï 2.5ms¸¶´Ù ŸÀ̸Ӱ¡ µÎ¹ø¾¿ °É¸®°Ô µÇ¸ç, ÇѹøÀº high·Î, ÇѹøÀº low·Î ½ÅÈ£¸¦ ¹Ù²Ù¾îÁÖ°Ô µÈ´Ù. ÀÌ·¯ÇÑ µ¿ÀÛÀÌ 20msµ¿¾È 8¹ø ¹ß»ýÇϸç, ÀÌ 8¹ø µ¿¾È motorIndex¶ó´Â °ª¿¡ µû¶ó Á¤ÇØÁø ¸ðÅÍ¿¡ ÇØ´çÇÏ´Â Æ÷Æ®¿¡ high¿Í low¸¦ Ãâ·ÂÇØÁØ´Ù. ŸÀ̹ÖÀº ´ÙÀ½°ú °°´Ù.
__ Æ÷Æ®0 | |_______________________________ __ Æ÷Æ®1 ____| |___________________________ __ Æ÷Æ®2 ________| |_______________________ __ Æ÷Æ®3 ____________| |___________________
: : __ Æ÷Æ®6 _________________________| |______ __ Æ÷Æ®7 _____________________________| |__
¿©±â¼ Æ÷Æ® 0¹ø°ú 1¹øÀÇ Ã³À½ 5.0ms±¸°£À» È®´ëÇØ º¸¸é ___________ | | 0 | |_____________________________ ___________ | | 1 _____________________| |________
½Ã°£(ms) 0 1.5 2.5 4.0 5.0
ÀÌ¿Í°°Àº ½ÄÀÌ µÈ´Ù. ¿©±â¼ 1.5ms³ª 4.0ms´Â ¼º¸¸ðÅÍ°¡ Áß°£¿¡ ¿À´Â °ªÀ̸ç, dat[]°ª¿¡ µû¶ó ´Þ¶óÁö°Ô µÈ´Ù. ±×¸®°í 2.5ms³ª, 5.0ms´Â º¯ÇÏÁö ¾Ê´Â´Ù.
*¼Óµµ°ü·ÃºÎºÐ¿¡ Ãß°¡µÈ º¯¼ö targetDat[] : ¸ðÅÍÀÇ ¸ñÇ¥ °¢µµ¸¦ ´ã°í ÀÖ´Â º¯¼ö. ¸Å¹ø ŸÀÌ¸Ó ÀÎÅÍ·´Æ®°¡ °É¸±¶§¸¶´Ù dat[]°ªÀÌ targetDat[]¸¦ µû¶ó°¡µµ·Ï µÇ¾î ÀÖ´Ù. velocity[] : ¸» ±×´ë·Î ¸ðÅÍÀÇ ¼Óµµ. dat[]°ªÀÌ targetDat[]°ªÀ» µû¶ó°¡´Âµ¥ ÀÖ¾î ¾ó¸¶³ª »¡¸® µû¶ó°¡´ÂÁö¸¦ Á¤Çؼ ¼Óµµ¸¦ Á¶ÀýÇÑ´Ù. Áï Å« °ªÀ» °¡Áú¼ö·Ï ºü¸¥ ¼Óµµ°¡ ³ª¿À°Ô µÈ´Ù.
|
|
[ ÇöÀç ÆäÀÌÁö Àüü ¸ñ·Ï ]
|
|
|