ccs c - frekansmetre yapımı

cctv16

Üye
Katılım
1 Eyl 2012
Mesajlar
259
Puanları
6
ccs c de timer modülünü kullanarak nasıl frekansı ölçebilirim, ölçüm 100 hz e kadar olsa yeterli.
 
timer 0 ve timer 1 modülünü kullandım, timer0 kesmeler toplamı 1 sn olacak şekilde ayarladım, 1 sn olduktan sonra clock sinyalini hariciden alan timer 1 kaç kez kesme oluşturmuş onu hesapladım, böylece frekansı bulacaktım, ancak herşey pratikte olduğu gibi olmuyor, programlamam biraz zayıf öğrenmeye çalışıyorum.
 
Fikri olan var mi yardimlarinizi rica ederim

timer 0 ve timer 1 modülünü kullandım, timer0 kesmeler toplamı 1 sn olacak şekilde ayarladım, 1 sn olduktan sonra clock sinyalini hariciden alan timer 1 kaç kez kesme oluşturmuş onu hesapladım, böylece frekansı bulacaktım, ancak herşey pratikte olduğu gibi olmuyor, programlamam biraz zayıf öğrenmeye çalışıyorum.
 
hassas birşey istemezsen timer0 ile her yükselen kenarda kesmeye git kesmede değişkeni bir arttır timer1 ilede 10ms lik kesmeler yap her kesmede değişkeni bir arttır 10x10=1000 ms olduğunda timer0 için deki artan değişkeni oku o senin frekans değerin her 1000 ms timer0 içindeki değişkeni sıfırla. eğer yapamazsan ccs c de senin için yazabilirim kardeşim .
 
Tesekkurler cevabiniz icin hassas bisey degil maksimun 100hz olcecegim kodlari bi turlu calistiramadim proteusta hic deger gostermiyor,yardimci olursaniz sevinirim sagolun.

hassas birşey istemezsen timer0 ile her yükselen kenarda kesmeye git kesmede değişkeni bir arttır timer1 ilede 10ms lik kesmeler yap her kesmede değişkeni bir arttır 10x10=1000 ms olduğunda timer0 için deki artan değişkeni oku o senin frekans değerin her 1000 ms timer0 içindeki değişkeni sıfırla. eğer yapamazsan ccs c de senin için yazabilirim kardeşim .
 
Bi de 2 kesmeyi de ayni kesme fonksiyonu icinde mi yaziyoruz acaba
 
fonksiyon içinde fonksiyon yazamassın ayrı ayrı yazıyosun
ccs c de bişeyler yaptım bak çalıştır iştediğin gibi bişimi istersen modifiye ederiz ccs ve proteus dosyasını atıyorum.
 
foruma yükleyemiyorum mail at özelden göndereyim
 
yılmaz rumuzlu arkadaşın gönderdiği kodlar, sistem çalışıyor.

#include "C:\Users\tah\Desktop\DENEME FREKANSMETRE\main.h"
#define data pin_b7


int8 frekans=0,saniye=0,frekans_sonuc=0,seri_data=0;
#int_timer0
void frekans_kesme()
{
++frekans;
set_rtcc(255);
}
#int_timer1
void zaman_kesme()
{
if (++saniye==10)
{
frekans_sonuc=frekans;
frekans=0;
saniye=0;
for(seri_data=0;seri_data<frekans_sonuc;++seri_data)
{
output_high(data);
output_low(data);
}
}
set_timer1(15536);
}


void main()
{


setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_1);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_2);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(int_timer0);
enable_interrupts(int_timer1);
enable_interrupts(global);
set_timer0(255);
set_timer1(15536);

for(;;){


}}
 

Forum istatistikleri

Konular
129,811
Mesajlar
930,329
Kullanıcılar
452,618
Son üye
mberber

Yeni konular

Geri
Üst