Hız Ölçüm Devresi

Başlatan VFR, 02 Haziran 2010, 18:32:36

VFR

Arkadaşlar merhaba. Kendimiz yapalımdaki bisiklet hız göstergesini CCS ile yapmaya çalışıyorum. Programı yazdım, ancak hızı hep 0 gösteriyor. Sorunun temel kaynağı timer0 kesmesinde sanırım. Çok gözden geçirdim programı ancak hala yanlışımı görebilmiş değilim. Yardımcı olabilirseni sevinirim.
[IMG]http://img155.imageshack.us/img155/8573/adszoq.jpg[/img]

Uploaded with ImageShack.us

#include <16f628A.h>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOCPD
#use delay (clock=4000000)

#use fast_io(a)

#define use_portb_lcd TRUE
#include <lcd.c>

#INT_TIMER0
#INT_TIMER0 NOCLEAR

unsigned char kontrol=0;
unsigned int32 CX=0;
const float pi=3.14159;
const float r=0.4598;



void timer0_kesme()
{
   CX++;
   if(CX>10000)
   {
      kontrol=1;
   }
   clear_interrupt(int_timer0);
   set_timer0(252);
}

void lcd_yaz()
{
   float hiz;
   unsigned int16 hiz2;
   
   hiz=2*pi*r*3600/CX;
   hiz2=(int)hiz;
   
   if(kontrol==0)
   {
      lcd_gotoxy(1,2);
      printf(lcd_putc," HIZ=%03lu km/sa ",hiz2);
   }  
   else
   {
      lcd_gotoxy(1,2);
      printf(lcd_putc,"*** HIZ=0 ***");
   }
}

void main ()
{
   setup_timer_1(T1_DISABLED);
   setup_CCP1(CCP_OFF);
   setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256);
   
   set_tris_a(0b00000001);
   set_tris_b(0x00);

   delay_ms(250);
   lcd_init();
   printf(lcd_putc," HIZ GOSTERGESI ");
   disable_interrupts(GLOBAL);

   while(1)
   {  
      CX=0;
      kontrol=0;
      while(input(pin_a0)==0);
      set_timer0(252);
      enable_interrupts(INT_TIMER0);
      enable_interrupts(GLOBAL);
      while(input(pin_a0)==1)
      {
         output_high(pin_a1);
      }
      output_low(pin_a1);
      while(kontrol==0)
      {
         if(input(pin_a0)==1)
         {
            break;
         }
      }
      disable_interrupts(GLOBAL);
      lcd_yaz();
      delay_ms(250);
      while(input(pin_a0)==1);
   }
}

VFR

evet onu görmüştüm daha önce, bir de öyle denicem. ama yine de programdaki hatayı gören olursa söylerse çok iyi olur

ipek

genelde sayım girişi için PortA,4 kullanılır gerekçesi bu port schmit trigger barındırır pull up direnç atmak gerekir..

necati

[email]entegreterbiyecisi@yahoo.com[/email]

VFR

Tamam sorunu çözdüm, ilgilenen herkese çok teşekkürler :)

picmanya

sorunu nasıl çözdüğünüde söylermisin

VFR

#INT_TIMER0 ı kesme at programının hemen önüne yazmam lazımdı ama ben daha yukaıya yazmışım 2 haftamı alan problem buymuş :)