timer0 kodda hata nerededir ?

Başlatan AYKIRI, 07 Eylül 2013, 11:42:07

AYKIRI

arkadaşlar merhaba. aşağıdaki kodda sıcaklık ölçümü yapıyorum herşey normal fakat timer0 çalışmıyor
fakat sıcaklık ölçümü için kodları kaldırdığımda timer çalışıyor hatayı bulamadım.
saygılar


#include <16F877A.h>
#device adc=8
#FUSES NOWDT, xt, PUT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP, NOCPD, NOWRT     
#use delay(clock=4000000)
#include<1wire.c>
#include<flexy_lcd.c>
#include<ds1820.c>
#use fast_io(d)
#use fast_io(c)
int i=0;
#int_timer0 //timer0 kesmesi
void timer0_kesme()
{
set_timer0(60); //timer0 degeri belirleniyor
i++;
if(i==10)
output_high(pin_c1);
if(i==50)
{
  output_low(pin_c1);
  i=0;
}
}

void main()
{
setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_spi(SPI_SS_DISABLED);   
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);   
   set_tris_d(0b00011110);
   output_d(0x00);
  set_tris_c(0b00000000);
   output_c(0x00);   
   setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256); //timer0 ayarları yapılıyor
   set_timer0(60); 
   enable_interrupts(INT_timer0); //int_timer0 kesmesi aktif edilyor
   enable_interrupts(GLOBAL);
float temperature;
set_timer0(60);
lcd_init();  delay_ms(200);
lcd_putc("\f");
while (1)
{
  temperature = ds1820_read();
  lcd_gotoxy(1,1);
  printf(lcd_putc,"SICAKLIK öLÇüMü");
   lcd_gotoxy(1,2);
      printf(lcd_putc,"SICAKLIK:  %3.1f", temperature);
     lcd_putc(223);
   
}
}

mir_as82

#int_timer0 //timer0 kesmesi
void timer0_kesme()

Alt kod şişhane üst kod karaköy :)

AYKIRI

Alıntı yapılan: mir_as82 - 07 Eylül 2013, 11:51:37
#int_timer0 //timer0 kesmesi
void timer0_kesme()

Alt kod şişhane üst kod karaköy :)

o satırda hata nedir yardımcı olurmusunuz ?

ofk58

#3
#int_timer0 da int= interrupt demek diye biliyorum.Denetleyicinin frekansını 20mhz kristal kullanırsanız duzelebılır belkı.

mir_as82

#4
Hocam adamin adini timer0 koyuyorsun ama adami başka bir adla çagiriyorsun. Üstte yazilan ile altta yazilan fonksiyonlarin ayni olmasi gerekmez mi?pardon aklim baska seye gitti. Arkadasin dedigi dogru.

AYKIRI

bilen bir arkadaş yardımcı olursa iyi olur
teşekkürler

WrtM

void main döngüsü içerisindeki set_timer(60) kodunu birde while döngüsü içerisine koyup denermisiniz?

AYKIRI

Alıntı yapılan: WrtM - 07 Eylül 2013, 18:16:16
void main döngüsü içerisindeki set_timer(60) kodunu birde while döngüsü içerisine koyup denermisiniz?
denedim sonuç değişmedi maalesef

mir_as82

  temperature = ds1820_read();
Olan kodda sıkıntı vardır o zaman.

AYKIRI

Alıntı yapılan: mir_as82 - 07 Eylül 2013, 18:40:20
  temperature = ds1820_read();
Olan kodda sıkıntı vardır o zaman.

sıcaklık sensöründen bilgi alıyor o kodla.  eğer başka nir örnek varsa sıcaklık sensörüyle ilgili onu deneyebilirim test için

AYKIRI

kodda bir türlü hata bulamadım uzman bir arkadaş bakabilirmi lütfen

sadogan

Programı derlediğinizde warning oluyormu varsa nelerdir.

AYKIRI

Alıntı yapılan: sadogan - 07 Eylül 2013, 23:40:56
Programı derlediğinizde warning oluyormu varsa nelerdir.

warning var ama while döngüsünün devamlılığı ile ilgili onun dışında yok
ısı ölçümü falan hepsi doğru çalışıyor. sadece timer çalışmıyor
ısı ile ilgili kodları comment haline çektiğimde ise timer çalışıyor

sadogan

Tmr0 ın çalışmadığını nasıl anlıyorsunuz pin_c1 den mi ?
ds1820 hangi pine bağlı.
Tmr0 ın çalışmasını pin_c1 den anlıyorsanız tmro kesmesindeki 'i' yi LCD de yazmayı deneyin
değeri değişiyormu?

AYKIRI

Alıntı yapılan: sadogan - 08 Eylül 2013, 00:07:40
Tmr0 ın çalışmadığını nasıl anlıyorsunuz pin_c1 den mi ?
ds1820 hangi pine bağlı.
Tmr0 ın çalışmasını pin_c1 den anlıyorsanız tmro kesmesindeki 'i' yi LCD de yazmayı deneyin
değeri değişiyormu?

ilgilendiğiniz için öncelikle teşekkür ederim
evet c1 den kontrol ediyorum led hiç yanmıyor
ds18b20 d2 pinine bağlı
i değer,n, lcd yazdırdığımda sabit 5 te kalıyor hiç değişmiyor
eğer i değerini 10 değilde 5 e çekersem led yanıyor ve tekrar sönmüyor
eğer i değerini 10 ve 50 yerine 4 ve 5 e çekersem led yanıyor 5 e gelince sönüyor ve 0 oluyor bunu lcd de 0 olarak görebiliyorum ama 0 olarak kalıyor değişmiyor bunun dışında ölçümler normal
saygılar