Sinyalin Periyodunu Hesaplama

Başlatan ovaliiismail, 10 Mart 2018, 16:34:12

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)
   {
     
   }
}

SAMED

bence sorununuz
periyot=2.048;
c dili bu sayıyı kendisi 8 veya 10 bit sayı olarak tanımlıyor belirtilmediği için
periyot=(float)2.048 veya
periyot=2.048.0 olmalı kolay gelsin
ADINI HATIRLA...

Powered by EzPortal