INtime Tech

 

¡¸INtime documentary¡¹~INtime ÃʽÉÀÚ Ã¼Çè±â


¾Æ³¯·Î±× µ¥ÀÌÅÍ º¯È¯Ä¡ Ãëµæ ½º·¹µå ¿Ï¼º!

°úÁ¦
¾Æ³¯·Î±× º¸µå¿Í °ÝÅõÇØ, °Ü¿ì ¾Æ³¯·Î±× µ¥ÀÌÅÍ º¯È¯Ä¡¸¦ ÃëµæÇÒ ¼ö ÀÖ°Ô µÇ¾ú½À´Ï´Ù.
¾Æ³¯·Î±×ÀÇ µ¥ÀÌÅÍ´Â 100 msÀÇ Æú¸µ ÁÖ±â·Î ÃëµæÇÕ´Ï´Ù.
½º·¹µåÀÇ È帧À¸·Î¼­´Â,

º¸µå °ËÃâ(¾Æ³¯·Î±× º¸µå¸¦ °ËÃâ)¡æÃʱâ ó¸®(¾Æ³¯·Î±× º¸µåÀÇ ÃʱâÈ­¡æ¾Æ³¯·Î±× µ¥ÀÌÅÍ Ãëµæ Áغñ)¡æ»ùÇøµ °³½Ã¡æµ¥ÀÌÅÍÀÇ Ãëµæ

ÀÌ µË´Ï´Ù.

10¿ù 17ÀÏ···ÀÎÅÍ·´Æ® 󸮡¡(ÀÎÅÍ·´Æ® 󸮱â·ÀÎÅÍ·´Æ® ½º·¹µå)

»ç¾ç¿¡¼­´Â 100 ms ¸¶´Ù ¾Æ³¯·Î±× µ¥ÀÌÅÍ ÃëµæÀ» À§ÇØ "»ùÇøµ °³½Ã "Ä¿¸àµå¸¦ Ãâ·ÂÇØ, 0~7 CHÀÇ"µ¥ÀÌÅ͸¦ ÃëµæÇÏ´Â" ÀÏ·Î ¾Æ³¯·Î±× µ¥ÀÌÅÍ Ãëµæ ½º·¿µå´Â ¿Ï¼ºÇÕ´Ï´Ù.


¡Üº¸µå °ËÃâ ó¸®

¡¡ FindAnalogBord()

¡Ü¾Æ³¯·Î±× º¸µå Ãʱâ ó¸®

¡¡ InitAnalogBoard()

¾Æ³¯·Î±× µ¥ÀÌÅÍ Ãëµæ ½º·¹µå´Â void GetADataThread(void)·Î, ÀÌ ½º·¹µåÀÇ ÁÖµÈ Å½ºÅ©(ÀÏ)´Â 100 ms ¸¶´Ù ¾Æ³¯·Î±× º¸µåÀÇ »ùÇøµ °³½Ã Ä¿¸àµå¸¦ Ãâ·ÂÇØ, 8 CHºÐÀÇ º¯È¯ µ¥ÀÌÅ͸¦ ÃëµæÇÏ´Â °ÍÀÔ´Ï´Ù. 100 msÀÇ Æú¸µ Áֱ⸦ ¸¸µå´Â °ÍÀº···

¾Æ·¡¿Í °°ÀÌ µË´Ï´Ù£º
while(1){
	RtSleep(100);	//100 mssleeve
}

Æ®·¯ºí ¹ß»ý

º¯È¯ µ¥ÀÌÅ͸¦ ÃëµæºÎ¿¡¼­ Æ®·¯ºíÀÌ ¹ß»ýÇß½À´Ï´Ù·····.

¡¸º¯È¯ µ¥ÀÌÅÍÀÇ Ãëµæ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏÁö ¾Ê´Â´Ù!¡¹


ÀÎÅÍ·´Æ® ¿äÀÎÀº ¼³Á¤ÇØ Àִµ¥···.
ÀÎÅÍ·´Æ®¶ó´Â °ÍÀ» Àß ¸ð¸£´Â ³ª´Â, ¹«¾ùÀ» ¾î¶»°Ô Á¶»çÇØµµ ÁÁÀº °ÍÀΰ¡ ¸ô¶ú½À´Ï´Ù.

ÇÊ¿äÇÑ °ÍÀº º¸µåÀÇ IRQ¿Í ±× º¸µåÀÇ ÀÎÅÍ·´Æ® ¿äÀÎÀÇ Æ¯Á¤

¡¡
¡ÜIRQ(ÀÎÅÍ·´Æ® ¹øÈ£)£º0~15±îÁöÀÇ ÀÎÅÍ·´Æ® ¹øÈ£°¡ ÀÖ¾î, °¢°¢ÀÇ ÇÏµå ±â±â´Â ³¢¾îµé¾î ¹øÈ£°¡
¡¡ÇÒ´çÇØÁö°í ÀÖ½À´Ï´Ù.                    
¡ÜÀÎÅÍ·´Æ® ¿äÀÎÀÇ Æ¯Á¤£º»ó±âÀÇ ÀÎÅÍ·´Æ® 

Æ®·¯ºíÀÇ ÇØ°á

¾î¶² »óŰ¡ ÀÎÅÍ·´Æ®°¡ µé¾î°£ »óÅÂÀΰ¡ ¸ô¶ú±â ¶§¹®¿¡, È¥¶õÇØÁ® ¹ö·È½À´Ï´Ù.

ÀüÇô ¿òÁ÷ÀÌÁö ¾ÊÀº »óŰ¡ ±× »óŶó°í Áö·¹ ÁüÀÛÇØ, ¡¸¿òÁ÷ÀÌÁö ¾Ê´Â=ÀÎÅÍ·´Æ®°¡ µé¾î°¡Áö ¾Ê´Â´Ù¡¹¶ó°í »ý°¢Çϰí ÀÖ¾ú½À´Ï´Ù¸¸, WaitForRtInterrupt()·Î ¿¡·¯ üũ¸¦ ÇØ º¸¸é···µÇµ¹¾Æ ¿Â ¿¡·¯ÀÇ ³»¿ëÀº···

····ÀÎÅÍ·´Æ® 󸮱⸦ ¸¸µéÁö ¾Ê¾Ò´Ù!
¡ì·····ÀÌ·¡¼­¾ß ÀÎÅÍ·´Æ®¿¡ µé¾î°¡Áö ¾Ê´Â´Ù·····¡í

¡¸ÀÎÅÍ·´Æ® 󸮱â´Â ƯÁ¤ÀÇ ÀÎÅÍ·´Æ® ·¹º§ÀÇ ½ÅÈ£ ÀÔ·ÂÀ» ¹Þ¾Æ ±âµ¿ÇÕ´Ï´Ù.
ÀÎÅÍ·´Æ® ½ÅÈ£ ¹ß»ý½Ã, ½º·¹µå¸¦ ±âµ¿ÇØ¾ß ÇÒ ÀÎÅÍ·´Æ®ÀÎÁö ¾î¶²Áö¸¦ ÆÇº°ÇØ, ½º·¹µå ±âµ¿À» °ÉÄ£´Ù···±×·¸´Ù°í ÇÏ´Â °ÍÀ̾ú½À´Ï´Ù.¡¹


±× ÈÄ, ÀÎÅÍ·´Æ® 󸮱⸦ ¸¸µé¾ú½À´Ï´Ù¸¸ ¼ö¸¹Àº ½ÇÆÐ°¡ ÀÖ¾ú½À´Ï´Ù.

´ëÇ¥ÀûÀÎ °ÍÀº£º


¡Ü¾Æ³¯·Î±× º¸µåÀÇ ÃʱâÈ­¿¡ ½ÇÆÐÇϰí ÀÖ¾ú±â ¶§¹®¿¡ ÀÎÅÍ·´Æ®ÀÇ ¼³Á¤ÀÌ Àß µÇÁö ¾Ê¾Ò´Ù

¡¡ ¾Æ³¯·Î±× º¸µåÀÇ ¾×¼¼½º¸¦ À§Çؼ­ ¼±µÎ ÁּҷκÎÅÍÀÇ ¿ÀÇÁ¼ÂÄ¡¸¦ ¼±¾ðÇÑ Çì´õ¸¦ ÀÛ¼ºÇß½À´Ï´Ù. ÀÌ ÀÛ¼ºÇÑ Çì´õÀÇ °ªÀÌ 10 Áø¼öÀÇ °ªÀ» 16ÁøÇ¥±âÇÒ °æ¿ì¿¡ ±×´ë·Î 10ÁøÇ¥±âÇϰí ÀÖ´ø ÀÏ¿¡ ÀÇÇØ ¼³Á¤ÇÑ ³»¿ëÀÌ ÁöÁ¤ÀÇ ÁÖ¼Ò¿¡ ½áÁö°í ÀÖÁö ¾Ê¾Ò½À´Ï´Ù.
(BaseAddress + 12 ¢¢¡¡BaseAddress + 0x12¡¡·Î Çϰí ÀÖ´ø, ÀÌÀü¿¡µµ º¥´õ ID, µð¹ÙÀ̽º IDÁöÁ¤ºÎ ÀÌ ½ÇÆÐ¸¦ Çß½À´Ï´Ù.

¡Ü¼³Á¤ÇÑ IRQÄ¡°¡ Â÷À̰¡ ³µ±â ¶§¹®¿¡, ÀÎÅÍ·´Æ®ÀÇ ¼³Á¤ÀÌ Àß µÇÁö ¾Ê¾Ò´Ù

¡¡ ¾Æ³¯·Î±× º¸µåÀÇ °ËÃâ ÇÔ¼ö·Î ³¢¾îµé¾î ·¹º§Ä¡¸¦ µÇµ¹¸®°í ÀÖ´ø °ÍÀ», µµÁß¿¡ ÇÔ¼öÀÇ ÇüŸ¦ º¯°æÇØ, ¹Ýȯ°ªÀ» TRUE/FALSE·Î Çß½À´Ï´Ù. ±×·¯³ª, ±×´ë·Î ¹Ýȯ°ªÀ» ³¢¾îµé¾î ·¹º§°ú ¼³Á¤ÇØ ÀÖ¾ú±â ¶§¹®¿¡, 1(TRUE)À̶ó°í ÇÏ´Â °ªÀ¸·Î ÀÎÅÍ·´Æ® 󸮱⸦ ¼³Á¤ÇØ ÀÖ¾ú½À´Ï´Ù.

»ó±âÀÇ ½ÇÆÐ¸¦ ±Ù°Å·Î ÇØ º¸µå °ËÃâ ó¸® FindAnalogBoard(¾Æ³¯·Î±× º¸µåÀÇ °ËÃâ)ÀÇ °á°ú, º¸µå °ËÃâ OKÀÇ °æ¿ì, CreateRtThread¿¡ ÀÇÇØ GetDataThread(¾Æ³¯·Î±× µ¥ÀÌÅÍ Ãëµæ ½º·¿µå)°¡ »ý¼ºµË´Ï´Ù.

GetDataThreadÀÇ °³½ÃºÎ¿¡¼­, ¾Æ³¯·Î±× º¸µåÀÇ Ãʱâ ó¸® InitAnalogBoard()¸¦ ÄÝ ÇÕ´Ï´Ù, µ¿½Ã¿¡, ÀÎÅÍ·´Æ® ¿äÀÎ(Data Read Enabled)ÀÇ ÀÎÅÍ·´Æ®½Ã¿¡ À̺¥Æ®¸¦ ¹Þ¾Æ, ±× ŸÀֿ̹¡ »ùÇøµÀ» ½Ç½ÃÇÏÁö ¾ÊÀ¸¸é ¾ÈµÇ±â ¶§¹®¿¡, ÀÎÅÍ·´Æ® 󸮱⸦ ¼³Á¤Çß½À´Ï´Ù.

ÀÎÅÍ·´Æ® 󸮱âÀÇ ÄÚµå´Â INtime À§Àúµå·Î ÀÎÅÍ·´Æ® 󸮱â¿Í ½º·¿µå, ¸¦ ÁöÁ¤ÇÏ´Â °ÍÀ¸·Î½á, ÄÚµå´Â Ãâ·ÂµÇ±â ¶§¹®¿¡, 󸮸¦ ±× Áß¿¡ ±â¼úÇß½À´Ï´Ù.

ÀÌÇϰ¡ ÀÎÅÍ·´Æ® 󸮱âÀÇ ¼³Á¤ APIÀÔ´Ï´Ù£º
¡¡ SetRtInterruptHandler(wLevel, 1, Int1Handler))

INtime Help·ÎºÎÅÍ SetRtInterruptHandler¸¦ Á¶»çÇϸé, À§ÀÇ ½Ã½ºÅÛ ÄÝÀº ¡¸ÀÎÅÍ·´Æ® ·¹º§ wLevelÀÇ ÀÎÅÍ·´Æ®°¡ 1µµ ÀÔ·ÂÇϸé Int1Handler¿¡ 󸮸¦ °Ç³×ÁÝ´Ï´Ù(Int1Handler¸¦ ÄÝ ÇÕ´Ï´Ù)¡¹¶ó°í ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù.
¹ú½á À§Àúµå¿¡ ÀÇÇØ Äڵ尡 µÇ¾î Àֱ⠶§¹®¿¡, Çڵ鷯ÀÇ È£Ã⠺κÐÀº ÁÁ¾Æ.

ÀÎÅÍ·´Æ® 󸮱âÃø(Int1Handler)¿¡¼­ ÀÎÅÍ·´Æ® ¿äÀÎÀÇ Æ¯Á¤À» ½Ç½ÃÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
ÀÎÅÍ·´Æ® ·¹º§À» ¼³Á¤ÇÑ Çڵ鷯¿¡´Â, ±× ·¹º§ÀÇ ÀÎÅÍ·´Æ®°¡ ¸ðµÎ µé¾î°©´Ï´Ù.
ÀÎÅÍ·´Æ®ÀÇ ÀԷ½ÿ¡ Àִ ƯÁ¤ »óŽø¸ 󸮸¦ ½Ç½ÃÇÏ´Â °æ¿ì, ÀÎÅÍ·´Æ® 󸮱⳻¿¡¼­ ±× Á¶°ÇÀ» ÆÇº°ÇØ, Á¶°Ç ¼º¸³½Ã´Â SignalRtInterruptThread(wLevel)·Î ÀÎÅÍ·´Æ® ½º·¹µå ±âµ¿À» ÇØ, ±× Àܴ̿ SignalEndOfRtInterrupt(wLevel)·Î ¾ïÁ¦ÇÕ´Ï´Ù.


ÀÎÅÍ·´Æ® 󸮱âÀÇ ±â¼ú ºÎºÐ£º
__INTERRUPT void Int1Handler(void)
{
   __INTERRUPT_PROLOG();	//ÀÎÅÍ·´Æ® 󸮱âÀÇ ¹üÀ§ °³½Ã

    // ÀÎÅÍ·´Æ® ·¹º§À» ¼³Á¤ÇÕ´Ï´Ù
   EnterRtInterrupt(wLevel);

	
   //ÀÎÅÍ·´Æ® ¿äÀÎÀÇ Æ¯Á¤£º
¡¡ if ((inbyte(strInfo.analogAdd + 0x0c & 0x02 != 0x02) 
          SignalEndOfRtInterrupt(wLevel);//ƯÁ¤ÀÇ ÀÎÅÍ·´Æ® Á¶°Ç Àܴ̿ ½Ã±×³Î ¹ß½ÅÀ» Á¤Áö
	
   else
          SignalRtInterruptThread(wLevel);//ƯÁ¤ÀÇ ÀÎÅÍ·´Æ® Á¶°Ç ¼º¸³½Ã´Â ½Ã±×³ÎÀ» ¹ßÇÏ´Â

   __INTERRUPT_RETURN();	//ÀÎÅÍ·´Æ® 󸮱âÀÇ ¹üÀ§ Á¾·á 
}                   
ÀÎÅÍ·´Æ® ¿äÀÎÀÌ È®Á¤ÇßÀ» °æ¿ì¸¸ Ãâ·ÂÇÏ´Â(SignalRtInterruptThread)¿¡ ÀÇÇØ WaitForRtInterrupt()·Î ³¢¾îµé¾î ´ë±â ó¸® ÀÌÇÏÀÇ Ã³¸®°¡ ½ÇÇàµË´Ï´Ù.

 ½ÇÄÚµå´Â ÀÌÇÏ¿Í °°ÀÌ µÇ°ÚÁö¿ä£º

½º·¹µåÀÇ ±â¼ú£º
while(1){
    RtSleep(100);	//100 mssleeve

	
    //º¯È¯ µ¥ÀÌÅͰ¡ ¼³Á¤µÉ ¶§±îÁö(ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÒ ¶§±îÁö) ±â´Ù¸°´Ù£º
    wLevel´Â ¾Æ³¯·Î±× º¸µåÀÇ ¼¼Ä¡±â ¹øÈ£
    if(WaitForRtInterrupt(wLevel,WAIT_FOREVER) != TRUE){
		
            //ºí·Ï
    }

   ¾Æ³¯·Î±× º¯È¯ µ¥ÀÌÅ͸¦ ÃëµæÇÏ´Â

}


¿À´ÃÀÇ °¨»ó

ÀÎÅÍ·´Æ® ½º·¹µå¶õ, ÀÎÅÍ·´Æ® 󸮱⸦ ¼³Á¤ÇØ, Çڵ鷯¿¡ ÀÇÇØ ±âµ¿µÇ´Â ½º·¹µå·Î ±× Àܴ̿ ƯÈ÷ Åë»óÀÇ ½º·¹µå¿Í º¯È­°¡ ¾ø´Ù°í ÇÏ´Â °ÍÀ» ¾Ë¾Ò½À´Ï´Ù(½º·¹µåÀÇ »ý¼º ¹æ¹ý µî···).



HOME | INtime

                                                                                                                                          e-mail : support@tpikorea.com