timer0 kesmesi

sfarbac

Üye
Katılım
27 Kas 2012
Mesajlar
24
Puanları
1
Yaş
31
CCS c de,timer0 kesmesi için ayarlamaları yaptıktan sonra her kesme geldiğinde kesmenin geldiğini anlamak için d0 pinindeki ledi yakıp söndürüyorum.Fakat while(1) içinde adc(); fonksiyonunu çağırdığımda kesme hiç oluşmuyor yani led yanmıyor.Analog okuma için yaptığım ayarlamaları sildiğimde veya adc(); fonsiyonunu while(1)içinde devre dışı bıraktığım zaman kesme oluşuyor nedenini anlayamadım, yardımcı olursanız sevinrim kodlar şu şekilde;


#include <asd.h>
#use fast_io(d)
int i=0,min[8],bilgim;
long deger=0,bilgi[8]={0},max[8];
int16 j,normalize[8];
int32 pozisyon=0,toplam=0;
long adc() {
for(i=0;i<8;i++){
toplam=0;
deger=0;
set_adc_channel(i);
delay_us(20);
bilgi=read_adc();
}
for(i=0;i<8;i++){
if(bilgi<min)
normalize=0;
else if(bilgi>max)
normalize=1023;
else
normalize=(bilgi-min)*(1023/(max-min));
// normalize = 1023- normalize;
}
for(i=0;i<8;i++){
if(normalize>200){
toplam =toplam+(normalize*i);
deger=deger+normalize;
}
pozisyon=(toplam*1000/deger);
return pozisyon;
}}
#int_timer0
void timer0_kesme ()
{
set_timer0(60);
i++;
if (i==20){
output_high(pin_d0);
}
if (i==80)
{
output_low(pin_d0);
i=0;
}
}
void main()
{
set_tris_d(0x00);
output_b(0x00);
output_c(0x00);
output_d(0x00);
setup_timer_2(T2_DIV_BY_1,255,1);
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_256); // Timer0 ayarları yapılıyor
set_timer0(60); // TMR0 değeri belirleniyor
enable_interrupts(INT_timer0);
enable_interrupts(GLOBAL);
while(1){
//adc();
}
}
 

Forum istatistikleri

Konular
128,332
Mesajlar
916,772
Kullanıcılar
450,176
Son üye
electrical_engineer

Yeni konular

Geri
Üst