devir ölçümü tacho metre yapımında yardım!!!

Katılım
14 Nis 2018
Mesajlar
8
Puanları
1
Yaş
27
programlama yaparken
while(1 ) {
delay_ms(1000);
sayac=sayac+1;
if(PORTC.RC3=1)
{tur=tur+1;
}
} yaparak mesela timer oluşturuyoruz.döngüsüne koyuyoruz ve bu kendi içinde sayıyor burada sıkıntı yok ama if ile porttan aldığım 1 değeriyle tur eklersem aynı anda çalışmada sıkıntı yaşanıyor bir yandan sayaç ile saniyeyi saydırıp bir yandan da tur sayımı yaparken sıkıntı çıkıyor bunların ikisini aynı anda nasıl kullana bilirim bir fikri olan yardımcı olabilir mi ?
 
RC3 , 1 değilse 1sn aralıklarla sayaç artmaya devam eder. İf yapısının içine else eklerseniz ve RC3 ün 1 olmadığı durumda if yapısını tekrarlatabilirsiniz.
 
Öncelikle bir saniyede örnek almak yerine
yardımcı malzemeler kullanarak alınacak
örneği; bir saniyeden daha az bir zamanda,
çok örnek almalıyız. Zira, bir sonraki deviri
algılayabilmek için 1000ms(1sn) geçmesini
beklememiz gerekecek. Bu zaman içindeki
devir değişiklikleri hassasiyetine göre birim
zamanın düşürülmesi gerekmekte.

Size iki kesme gerekli; biri harici port kesmesi,
diğeri de hassas ayarlanmış bir timer kesmesi.

Harici port kesmesinde sadece bir değişken
artırılacak o kadar. Başka bir görevi olmayacak.

Timer kesmesinde ise; yine bir değişken sayacak.
Bu değişken -diyelim ki- 250mS olunca; harici
kesmede sayan değişkeni başka bir değişkene
kopyalayıp aynı değişkeni sıfırlayacak.

Böylece her 250mS de kaç puls geldiğini öğrenmiş
oluruz. Sonra da bir kaç hesap ile d/d değeri
çıkmış olur.
 

Forum istatistikleri

Konular
127,959
Mesajlar
913,913
Kullanıcılar
449,606
Son üye
rasit.

Yeni konular

Geri
Üst