/*********************************************************
Project : DEV带 ̿ HC-SR04 ļ ϱ
Version : 
Date    : 2014-07-23
Author  : Kyung Nam Lee
Company : LKEMBEDDED 
Compiler: CodevisionAVR + AVRStudio
Comment:  

ءǻסء
ATmega128 DEV PORTE <------------->  


SRF-04 Դϴ.
 
Ʈ ޽ PWM  Ѻ
ֱ 50ms ϰڽϴ.
 RC   FAST PWM 14 ϰ
    DDRB=0x60;   // PB5 out
    TCCR1A=0x82; // FAST PWM
    TCCR1B=0x1A; // 64=4usec
    OCR1A=2;      // 4usec*3=12usec, Ʈ ޽
    ICR1=12499;  // 4usec*12500=50000usec=50ms, pwmֱ
//
ڴ ܺ ͷƮ4 ؼ ް
high  ð  Ϸ
ʱ  ¡ Ʈ  ϰ
 Ŀ  Ʈ  ð ϸ ˴ϴ.


****************************************************/

#include <mega128.h>
#include <stdio.h>
#include <delay.h>

unsigned int start=0,end=0,dist=0;

interrupt [EXT_INT4] void ext_int4_isr(void){
    if(EICRB==3){    // ¡() ͷƮ ɸ 
        start=TCNT1; // TCNT1 صΰ
        EICRB=2;    // ϰ  ͷƮ falling edge .
    }
    else{   //falling edge ͷƮ ɸ
        end=TCNT1;  //TCNT1  ΰ
        EICRB=3;    // ͷƮ rising edge .
        dist=(int)((float)(end-start)/14.5); //58us(1cm=58us)/4us=14.5, cm ȯ     
        /*
        Ÿ dist ̿ؼ LCD ǥϰų ø  ۰ϴ.(if̿)
        */    
    }
}
//
void main(void){
    DDRB=0x20;  // 0010_0000   Pb5 OUT to trigger.
    TCCR1A=0x82;  //1000_0010ܺ 4,  ġ OCnx Ŭ, TOP OCnx     
    TCCR1B=0x1B;  //0001_1011 Fast PWM  64=4uS                                           
    OCR1A=2;      //
    ICR1=14999;   // TOP   4uS*12500uS=50mS, PWMֱ 
    
    EICRB=3;    //0000_0011 INT4   ͷƮ 䱸
    EIMSK=0x10; //0001_0000 INT4 ̿,  
    EIFR=0x10;  //0001_0000 INT4
    SREG=0x80;  // Global INterrupt Enable. ͷƮ ο̺ set. 
    
    // USART0 initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART0 Receiver: Off
    // USART0 Transmitter: On
    // USART0 Mode: Asynchronous
    // USART0 Baud Rate: 9600
    UCSR0A=0x00;
    UCSR0B=0x08;
    UCSR0C=0x06;
    UBRR0H=0x00;
    UBRR0L=0x67;
                 
    while(0)
    {   
        printf("test");
        delay_ms(1);
    }
       
    while(1){
    printf("%d\r\n",dist);
    delay_ms(1);   
    
     
    //if(dist=>30)
    
    }
}

    
        
//=====================================================================//
            
