HOME . °í°´Áö¿ø . ¿Â¶óÀι®ÀÇ   
 
 
Á¦¸ñ °íÁöÇâ°¢ ÃÊÀ½ÆÄ ¼¾¼­ ±¸µ¿¹®ÀÇ
±Û¾´ÀÌ
¹®ÇØ´Ï Á¶È¸¼ö 1217
ÀÛ¼ºÀÏ
2016-03-30 17:30:07 Ä«Å×°í¸® Á¦Ç°°ü·Ã
÷ºÎ
 

atmega128·Î °íÁöÇâ°¢ÃÊÀ½ÆÄ ¼¾¼­ ºÐ¸®Çü ¾²·Á°íÇÏ°íÀÖ½À´Ï´Ù.

¼Û½ÅºÎ1°³ ¼ö½ÅºÎ3°³¸¦ ¹è¿­·Î ³õ¾Ò°í,

¼Û½ÅÇѹøÇÒ¶§ Àå¾Ö¹°¿¡ ¸Â°í ¹Ý»çµÈ ÃÊÀ½Æĸ¦ ¼ö½ÅºÎ3°³°¡ µ¿½Ã¿¡ ¼ö½ÅÇÏ°Ô µÇ´Â »óȲÀÔ´Ï´Ù.

Çϵå¿þ¾î ±¸Á¶´Â

atmega128 PORTF0 ¿¡ ¼Û½ÅºÎ trigger(ÁÖȲ»ö)¿¬°á /(VCC-GND 12V¿¬°á, ÀÌÇÏ ¼ö½ÅºÎµ¿ÀÏ)

atmega128 INT0,INT1,INT3¿¡ °¢ 3°³ ¼ö½ÅºÎÀÇ echo½ÅÈ£(³ë¶û»ö)¿¬°áÇÑ »óÅÂÀ̸ç

atmega128°ú PC´Â UART0À» »ç¿ëÇÏ¿© Åë½ÅÇÏ°íÀÖ½À´Ï´Ù.


<ÀÛµ¿ ÇÁ·Î¼¼½º>

PC>atmega128 ¹®ÀÚ ¼Û½Å

¡æ UART ¼ö½Å ÀÎÅÍ·´Æ® ÀÛµ¿

   :  1.ÀÌÀüÃøÁ¤µÈ Ä«¿îÆ𪠰Ÿ®°ªÀ¸·Î º¯È¯, PC¿¡¼­ ¼ö½ÅµÈ ¹®ÀÚ¿ÍÇÔ²² °Å¸®°ª Ãâ·Â

      2.PORTF=0xff·Î ÇÏ

¡æ ÃÊÀ½ÆÄ ¼ö½Å ÀÎÅÍ·´Æ®(¿ÜºÎÀÎÅÍ·´Æ® INT0,1,3) ÀÛµ¿ 

    : 1. ù¹ø° ÃÊÀ½ÆÄ ¼ö½Å½Ã(¹Ý»çÆÄ°¡ ¾Æ´Ñ ¹Ù·Î¿·¿¡ÀÖ´Â ¼ö½ÅºÎÀÇ ÃÊÀ½ÆÄ¿¡ ¹ÝÀÀÇÑ°Í) PORTF =0x00

      2. µÎ¹ø° ÃÊÀ½ÆÄ ¼ö½Å½Ã(°¡Àå °¡±î¿î °æ·Î¿¡ ÀÖ´Â Àå¾Ö¹°¿¡ ¹Ý»çµÈ ÃÊÀ½ÆÄ) Ä«¿îÆðª ÀúÀå


ÀÌ ÇÁ·Î¼¼½º·Î ÃÊÀ½ÆÄ ¼ö½ÅºÎ 3°³¿¡¼­ ÃßÃâµÈ 3°¡Áö °Å¸®°ªÀ» ÃøÁ¤ÇÏ·Á°í ÇÏ°í ÀÖ½À´Ï´Ù.

±×·±µ¥ INT1,INT3¿¡ ¿¬°áµÇ¾îÀÖ´Â ÃÊÀ½ÆÄ ¼ö½ÅºÎ¿¡¼­´Â Á¦´ë·ÎµÈ ÃøÁ¤°ªÀÌ ³ª¿À´Âµ¥

INT0¿¡¼­´Â ÃøÁ¤°ªÀÌ 0À¸·Î¸¸ ³ª¿É´Ï´Ù.

±×·±µ¥ ÀÎÅÍ·´Æ®°¡ µÇ´ÂÁö È®ÀÎÇغ¸·Á°í ´Þ¾Æ³í LED(PORTA0)´Â INT0 ÃÊÀ½ÆÄ ¼¾¼­¿¡ Ãæ°ÝÀ» °¡ÇÒ¶§¸¶´Ù ±ô¹Ú°Å¸®´Â °ÍÀ» È®ÀÎÇÒ¼ö ÀÖ¾ú½À´Ï´Ù. ¶ÇÇÑ ÃÊÀ½ÆÄ ¼¾¼­¸¦ ¹Ù²ã¼­ ÃøÁ¤ÇßÀ»¶§µµ °°Àº °á°ú¸¦ °®´Â°É·Î º¸¾Æ ¼¾¼­ ÀÚüÀÇ ¹®Á¦´Â ¾Æ´Ñµí ÇÕ´Ï´Ù.

±×¸®°í INT1,3¿¡¼­ °Å¸®°ªÀ» Àß ³ª¿À±äÇϳª °¡²û ½ÇÁ¦°ª°ú ´Ù¸¥ °ªÀÌ ÀÚ²Ù Ãâ·ÂÀÌ µË´Ï´Ù.

¾Æ¿¹ Å͹«´Ì ¾ø´Â °ªÀÌ¸é ¹«½ÃÇÏ¸é µÇ´Âµ¥

¿¹¸¦ µé¾î 70cmÁ¤µµÀÇ °Å¸®¸¦ °¡²û¾¿ 60cm·Î ÃøÁ¤ÀÌ µË´Ï´Ù. 60~50cm·Î ÃøÁ¤µÇ´Â ºóµµ°¡ Á¼ ³ô½À´Ï´Ù (100¹ø¿¡ 20~30¹ø)

¹«¾ùÀÌ ¹®Á¦ÀÎÁö ¸ð¸£°Ú½À´Ï´Ù..¤Ì¤Ì µµ¿ÍÁÖ¼¼¿ä

ÀÌÇÏ atmega128 ¼Ò½ºÄÚµå ÀÔ´Ï´Ù.


#include <iom128v.h>
#include <macros.h>


char data;
int cnt, flag, intd, cnt3, flag3, intd3, cnt0, flag0, intd0;
float d, d3;

////////////COUTNER////////////
void Counter3_setting(void)
{
    TCCR3A = 0X00;
    TCCR3B = 0X02;
    TCNT3 = 0;
}

////////////UART///////////////////
void tx0Char(char message);
void tx0number(unsigned int Data)
{
    tx0Char( (Data/10000)    +'0');
    tx0Char(((Data/ 1000)%10)+'0');
    tx0Char(((Data/  100)%10)+'0');
    tx0Char(((Data/   10)%10)+'0');
    tx0Char( (Data       %10)+'0');
}
void tx0Char(char message)
{
    while (!(UCSR0A & 0x20));
    UDR0 = message;
}

#pragma interrupt_handler UART0_RX : 19
void UART0_RX(void)
{
    CLI();
    data = UDR0;
    d = cnt*0.085+40;
    d3 = cnt3*0.085+40;
    intd = (int)d;
    intd3 = (int)d3;
    intd0 =(int)cnt0*0.085;  //°Å¸®°ª °è»ê
    tx0Char(data); tx0number(intd); tx0Char('\r'); tx0Char('\n');
    tx0Char('T'); tx0number(intd3); tx0Char('\r'); tx0Char('\n');
    tx0Char('Z'); tx0number(intd0); tx0Char('\r'); tx0Char('\n'); tx0Char('\r'); tx0Char('\n');  //PC·Î °Å¸®°ª Ãâ·Â
    PORTA = ~(PORTA);
    flag=0; flag3 = 0; flag0 = 0;
    PORTF = 0XFF; //ÃÊÀ½ÆÄ ¼Û½Å
    Counter3_setting(); //Ä«¿îÆýÃÀÛ
    SEI();
}
void uart0_init(void)
{
    UCSR0B = 0b10011000; //rxcie ON RXEN ON TXEN ON
    UCSR0A = 0X00;
    UCSR0C = 0X06;
    UBRR0L = 0X67; //9600BPS
    UBRR0H = 0X00;
}

//////////INTERRUPT

#pragma interrupt_handler ISR1 : iv_INT1
void ISR1(void) //ÃÊÀ½ÆÄ 1 ¼ö½Å½Ã ÀÛµ¿
{
    PORTA = ~(PORTA);
    flag++;
    if( flag == 1){ PORTF = 0x00; }
    else if(flag == 2)
    {
        cnt=TCNT3;

    }
}
#pragma interrupt_handler ISR3 : iv_INT3
void ISR3(void)
{
    PORT if(flag3 == 2)
    {
        cnt3=TCNT3;

    }
}
#pragma interrupt_handler int0_isr : 2
void int0_isr(void)
{
    PORTA = ~(PORTA);
    flag0++;
    if( flag0 == 1){ PORTF = 0x00; }
    else if(flag0 == 2)
    {
        cnt0=TCNT3;
    }
}
////////INT setting/////////
void int_setting(void)
{
    EICRA = 0X0c;   EICRA |= 0XC0;
    EICRA |= 0X03;
    EICRB = 0X00;
    EIMSK = 0X02;   EIMSK |= 0X08; EIMSK |= 0X01;
}
int main(void)
{
    SEI();
    uart0_init();
    int_setting();

    DDRA = 0xFF;
    PORTA = 0x00;

    DDRF = 0XFF;
    PORTF = 0X00;

    // Insert code

    while(1);
}A = ~(PORTA);
    flag3++;
    if( flag3 == 1){ PORTF = 0x00; }
    else if(flag3 == 2)
    {
        cnt3=TCNT3;

    }
}
#pragma interrupt_handler int0_isr : 2
void int0_isr(void)
{
    PORTA = ~(PORTA);
    flag0++;
    if( flag0 == 1){ PORTF = 0x00; }
    else if(flag0 == 2)
    {
        cnt0=TCNT3;
    }
}
////////INT setting/////////
void int_setting(void)
{
    EICRA = 0X0c;   EICRA |= 0XC0;
    EICRA |= 0X03;
    EICRB = 0X00;
    EIMSK = 0X02;   EIMSK |= 0X08; EIMSK |= 0X01;
}
int main(void)
{
    SEI();
    uart0_init();
    int_setting();

    DDRA = 0xFF;
    PORTA = 0x00;

    DDRF = 0XFF;
    PORTF = 0X00;

    // Insert code

    while(1);
}

 
     

147 / 3
 
  ¹øÈ£ Á¦¸ñ ÀÛ¼ºÀÚ µî·ÏÀÏ Á¶È¸¼ö  
   
  117 [Á¦Ç°°ü·Ã] HG-M40DAI ÃÊÀ½ÆÄ ¼¾¼­ °ü·Ã ¹®ÀÇ ±è¿ëÈÆ 2016-11-22 0  
  116 [Á¦Ç°°ü·Ã] öµµ ŽÃËÀÚ°ü·Ã ¹®ÀÇ Á¤´ëö 2016-11-17 0  
  115 [Á¦Ç°°ü·Ã] HG-C40U¹®Àǵ帳´Ï´Ù. ±èµ¿Çö 2016-09-21 2  
  114 [Á¦Ç°°ü·Ã] ¹®ÀÇ µå¸³´Ï´Ù. À¯±âÁ¾ 2016-09-02 1  
  113 [Á¦Ç°°ü·Ã] HG-C40U ¾ÆµÎÀ̳ë , ¶óÁ¸®ÆÄÀÌ¿¡¼­ »ç¿ë... ÀÌ°æ¼ö 2016-08-30 0  
  112 [Á¦Ç°°ü·Ã] Á¦Ç° ¹®ÀÇ µå¸³´Ï´Ù.(Hagisonic Ultra-1t1r... °­´ëÇö 2016-06-01 1  
  111 [Á¦Ç°°ü·Ã] [HG-M40½Ã¸®Áî] ÀϹÝÇü ÃÊÀ½Æļ¾¼­, ¸ðµâ ... ¼ÕÁ¾ÀÏ 2016-05-02 1  
  110 [Á¦Ç°°ü·Ã] HG-M40 °ü·Ã Áú¹®ÀÔ´Ï´Ù ;; È«Áö¿ø 2016-04-26 0  
  109 [Á¦Ç°°ü·Ã] °íÁöÇâ°¢ ÃÊÀ½ÆÄ ¼¾¼­ ±¸µ¿¹®ÀÇ ¹®ÇØ´Ï 2016-03-30 1218  
  108 [Á¦Ç°°ü·Ã] HG-P40C Á¦Ç° ¹®ÀÇ (°¨µµÁ¶Àý, °¨Áö°Å¸® Á¶... ¹Ú¼¼¿õ 2016-03-22 910  
  107 [Á¦Ç°°ü·Ã] HG-LB40C-5V µ¥ÀÌÅͽÃÆ® ¿äû ¹Ú¼¼¿õ 2016-02-16 0  
  106 [Á¦Ç°°ü·Ã] HG-M40 ½Ã¸®Áî ¸ðµâ ¹®ÀÇ ±è»ó¿ø 2016-02-16 0  
  105 [Á¦Ç°°ü·Ã] HG-M40 ¹®Àǵ帳´Ï´Ù. ±è»ó¿ø 2016-01-18 0  
  104 [Á¦Ç°°ü·Ã] HG-B40A¿¬°á¿¡ Áú¹®ÀÔ´Ï´Ù. Á¤ºÀÁØ 2015-10-23 0  
  103 [Á¦Ç°°ü·Ã] HG-M40DNI °ü·Ã ¹®ÀÇ»çÇ×ÀÔ´Ï´Ù. ¹ÚÂù 2015-10-10 0  
1/2/3/4/5/6/7/8/9/10