Sinyalin Periyodunu Hesaplama

Başlatan ovaliiismail, 10 Mart 2018, 16:56:32

ovaliiismail

Merhaba arkadaşlar.PIC'e gelen sinyalin periyodunu hesaplayıp lcd ekrana yazdırdım.Sıkıntı şurda kodlara göre bence ilk başta periyodu sıfır yazdırmamalı ama proteus simülasyonunda periyod hesaplanana kadar periyodu sıfır yazdırıyor.Sıkıntı kodlarda mı kodlardaysa nerde yardımcı olursanız sevinirim.

#include <16f877.h>

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay(clock=4000000)

#use fast_io(c)

#define use_portb_lcd TRUE

#include <lcd.c>

double periyod=0;

#int_timer0
void timer0_kesmesi()
{
   set_timer0(0);
   periyod+=2.048;
}

#int_ccp1
void ccp1_kesmesi()
{
   periyod=0;
   enable_interrupts(int_timer0);
}

#int_ccp2
void ccp2_kesmesi()
{
   disable_interrupts(int_timer0);
   printf(lcd_putc,"\fPeriyod=%f\nms",periyod*2);
}

void main()
{
   setup_psp(PSP_DISABLED);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   
   set_tris_c(0x06);
   
   output_c(0x00);
   
   setup_timer_0(RTCC_INTERNAL | RTCC_DIV_8);
   
   set_timer0(0);
   
   setup_ccp1(CCP_CAPTURE_RE);
   
   setup_ccp2(CCP_CAPTURE_FE);
   
   enable_interrupts(int_ccp1);
   enable_interrupts(int_ccp2);
   enable_interrupts(GLOBAL);
   
   lcd_init();
   
   delay_ms(200);
   while(1)
   {
     
   }
}

ibrahim96

Periyod degilkenini ilk başda 0 olarak atamışsınız ve ilk seferde yazdırırken de 0x2.048 cevapı yüzünden 0 sonraki lerde proplem yok ise sıkıntıyı anlayamadım

OptimusPrime

Ccp2 kesmesini hesaplamadan cok once kosturuyor demekki
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||