|
|
Re..ahrs°ßÀû,Áú¹®
RC ¼ö½Å±â ½ÅÈ£¸¦ ĸÃçÇÏ´Â ¹æ¹ýÀº ¿©·¯°¡Áö°¡ ÀÖÀ»¼ö ÀÖÀ¾´Ï´Ù. AVRÀ» »ç¿ëÇÒ°æ¿ì External Interrupt PinÀ» ÇØ´ç ü³Î ¼ö¸¸Å ÇÒ´çÇÏ¿© Á÷Á¢ PWM ÆøÀ» ÃøÁ¤ÇÏ´Â ¹æ¹ý°ú ¼ö½Å±â¿¡¼ ¿¬¼ÓµÇ¾î µé¾î¿À´Â ½ÅÈ£ÀÎ PPM ½ÅÈ£¸¦ ICP ¸¦ ÅëÇؼ ÆøÀ» ÃëµæÇÏ´Â ¹æ¹ýÀ¸·Î º¼¼ö ÀÖÀ¾´Ï´Ù. Áú¹®ÇϽŠ³»¿ëÀº ÀüÀÚÀÎ°Í °°Àºµ¥ ü³Î¼ö°¡ ¸¹À»¼ö·Ï Ext. Int ÇÉ ÇÒ´çÀÌ ¸¹¾ÆÁ®¼ °£È¤ Æ¢´Â Çö»óÀ¸·Î ³ªÅ¸³¯¼ö´Â ÀÖÀ¾´Ï´Ù. ±×·¯³ª ¾ð±ÞÇϽŠ³»¿ë¸¸À¸·Î´Â H/WÀÎÁö S/WÀÎÁö ¿ÜºÎ ³ëÀÌÁÇâÀÎÁö´Â ÆÇ´ÜÇϱ⠾î·Æ½À´Ï´Ù. Áö±Ý »óÅ¿¡¼ ½±°Ô Çغ¸½Ç¼ö ÀÖ´Â ICP¸¦ ÅëÇÑ ½ÅÈ£ ÃëµæÀ» ±ÇÇغ¾´Ï´Ù. °ßÀûÀº ¸ÞÀϵµ ´äº¯ µå·ÈÀ¾´Ï´Ù. AVR ICP »ùÇà ¿¹Á¦ ////////////////////////////////////////////////////// void init_servo(void) // ICP ÃʱâÈ { TCCR1B=(1< sbi( TIMSK, TICIE1 ); return; } SIGNAL(SIG_INPUT_CAPTURE1) // ICP ¼º¸½ÅÈ£ Ãëµæ { static unsigned int AltICR=0; signed int signal = 0,tmp; static int index; signal = (unsigned int) ICR1 - AltICR; AltICR = ICR1; //Syncronisationspause? if((signal > 20000) && (signal < 30000)) { if(index >= 4) NewPpmData = 0; // Null bedeutet: Neue Daten index = 1; } else { if(index < 10) { if((signal > 2300) && (signal < 5000)) { revever_width[index] = signal; } index++; } } } ===================================== ¡á [Çöµ¿ÀÌ] ahrs°ßÀû,Áú¹® (2010-02-11 00:01) ¼ÒÇü ahrsÀÇ °ßÀûÁ» ºÎŹµå¸³´Ï´Ù.^^ ±Û°í ÇÑ°¡Áö Áú¹®Çϳª µå·Áµµ µÉ¸¥Áö,, °øºÎ¸¦ ÇÏ´Ù°¡ rc¼ö½Å±âÀÇ ½ÅÈ£¸¦ ¿ÜºÎÀÎÅÍ·´Æ®·Î avr·Î ¹Þ´Âµ¥, ¿ÜºÎ ¿µÇâÀÌ ¾øÀ¸¸é Á¤»óÀÛµ¿ÇÏÁö¸¸ ¿ÜºÎÀÇ °í¾ÐÀ̳ª ³ëÀÌÁî·Î ÀÎÇØ °ªÀÌ °¡²û¾¿ ¹«ÁöÇÏ°Ô Æ¢´Â Çö»óÀÌ ÀϾ´Ï´Ù. Áß°£¿¡ ½´¹ÌÆ® Á¢¸ñÇغÁµµ Áõ»óÀº °°Àºµ¥,,, ÇØ°á¹æ¹ýÀÌ ¾øÀ»±î¿ä? »ùÇøµÀ¸·Î ¹ÞÀ¸¸é ¿ÜºÎ ¿µÇâ°ü°è¾øÀÌ Á¤»óÀÛµ¿Çϳª Çػ󵵰¡ ³Ê¹« ¶³¾îÁ®¼ »ç¿ëºÒ°¡ÀÔ´Ï´Ù. |