timer0 birimi ile mesafe ölçümü yapamıyorum

Başlatan forzac, 17 Aralık 2016, 14:47:21

forzac

merhaba arkadaşlar timer0 birimi ile ultrasonik sensör kullanarak mesafe ölçümü yapmam gerekiyor
bu kodlar ile çok alakasız sonuclar alıyorum standart olarak yanlış sonuc da alamıyorum.
örneğin elimi 5 cm de tutarak bakıyorum 7.48cm gösteriyor..elimi uzaklaştırıyorum 5 küsür oluyor..elimi çok yaklaştırıyorum 6 yazıyor 0 yazıyor değişiyor
timer0 birinimini kullanarak yapmam gerekiyor..sanırım ayarlarında bir sıkıntı yaptım ama işin içinden çıkamıyorum

#include <timer 0 mesafe.h>

#define use_portd_lcd true
 
#define trig PIN_a0
#define echo PIN_a4

#include <lcd.c>

float mesafe, zaman;

void main()
{
   setup_psp(PSP_DISABLED);      
   setup_timer_2(T2_DISABLED,0,1);
   setup_adc_ports(NO_ANALOGS);    
   setup_adc(ADC_OFF);            
   setup_CCP1(CCP_OFF);         
   setup_CCP2(CCP_OFF);           

   //setup_timer_1(t1_internal | t1_div_by_1);
   setup_timer_0(rtcc_internal | rtcc_div_2);
   set_tris_a(0x10);
   set_tris_c(00000010);
   set_tris_d(0x00);
   
   output_b(0x00);
   output_c(0x00);
   output_d(0x00);
   
   output_high(pin_c2);
   delay_ms(1000);
   output_low(pin_c2);
   
   lcd_init();
   lcd_gotoxy(1,1);
   lcd_putc("mesafe denemesi");
   delay_ms(1500);
   
   while(TRUE)
   {
    output_high(trig);
    delay_us(10); 
    output_low(trig);
     
    while(input(echo)!=1); 
    set_timer0(0); 
    while(input(echo)!=0); 
    zaman=get_timer0();
    mesafe=zaman*0.017; 
    
    if(mesafe<5)
      output_high(PIN_C2);
    else
      output_low(PIN_C2);
     
    lcd_init();
    lcd_gotoxy(1,1);
    lcd_putc("\fMesafe:");
    lcd_gotoxy(1,2);
    printf(LCD_PUTC,"%.2fcm",mesafe);
    delay_ms(500); 
   }

}

rree

- Yöntem belirlenmeli sinyal kesildiği anımı veya sinyal geldiği anı mı ölçmek gerekir.
-Uzak mesafe için benim bildiğim sinyalin kesildiği anı hesaplamak daha iyidir.
-Kesme kullanmalısın alıcıda örneğin #int   
-Vericide Pwm modülü uygun olabilir.
-Döngüler içinde kritik zaman ölçümleri yapılamaz.