Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: ovaliiismail - 10 Mart 2018, 16:56:32

Başlık: Sinyalin Periyodunu Hesaplama
Gönderen: ovaliiismail - 10 Mart 2018, 16:56:32
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)
   {
     
   }
}
Başlık: Ynt: Sinyalin Periyodunu Hesaplama
Gönderen: ibrahim96 - 28 Nisan 2018, 14:48:40
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
Başlık: Ynt: Sinyalin Periyodunu Hesaplama
Gönderen: OptimusPrime - 30 Nisan 2018, 08:10:46
Ccp2 kesmesini hesaplamadan cok once kosturuyor demekki