Alt programda kesme kapatma

Başlatan ~ENES~, 17 Ağustos 2014, 18:40:49

~ENES~

Değerli ete hocam ve arkadaşlar yapmis olduğum bir projede iki adet kesme kullanıyorum tmr0 ve rb0 kesmesi fakat alt programın birinde rb0 kesmesini iptal edip alt programdan cikinca tekrar aktif etmek istiyorum yazilimi koymadim çünkü hem çok uzun hem de yazilim üzerinde anlatamam sizce bunu Nasil yapmaliyim ? Disable komutunu verince bütün kesmeler pasif oluyor ben sadece rb0 ı pasif etmem lazim yardimlariniz için tesekkur ederim ...
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

ete

Tmr0 kesmesini kullandığına göre nasıl aktif hale getirildiğini biliyor olman gerekirdi . Aynı şekilde rb0 kesmeside nasıl aktif ediliyorsa tersi işlemle pasif hale getirilebilir. Sonuç olarak,
- Intcon.5 biti ni set edince Tmr0 kesmesi aktif olur. Aynı biti reset (low) edince pasif olur.
- Intcon.4 biti set edilince Rb0 kesmesi aktif , reset edilince de pasif olur.

Ete

~ENES~

Hocam çok tesekkur ederim aslında bildiğim birşey ama kaç haftadir gece gündüz program yazmaktan kafa gitti :) bir sorum daha olacaktı hocam ntc ile sicaklik ölçümü yapiyorum burada belli bir sicaklik set değeri var örn 30 °  bir sayaç olacak sicaklik bir derece artinca sayaç kendini sifirlayacak yani sicaklik sabitken sayaç başlayacak eğer artarsa her derecede sayaç sifirlanacak buna Nasil bir algoritma gerekir ..
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

ete

IF ISI=30 THEN
  SET=ISI
   SAYAC=0
ENDIF
.
.
IF ISI=SET THEN
  SAYAC=SAYAC+1
Else
  Sayac=0
Endif

Ete

~ENES~

Hocam galiba yanlis anlattim diyelimki sicaklik üst seviye (set dediğimiz sicaklik ) 30 ° ye ayarladik ... Sicaklik mesela 25 derecede başladı artmaya 26 oldu sicaklik sayaç basladi 27 oldu sayaç sifirlayip tekrar başladı 28 oldu tekrar sifirlayip yeniden başladı .... 30 a gelince sicaklik artsa bile sayaç calismayacak sayaci kesme ile olusturdum bu arada ( tmr0 ) ...
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

ete

Anlattıklarını anlamak gerçekten zor. Ancak tahminde bulunarak yapmaya çalışıyorum.
Aşağıdaki yazdıklarım , program başlamadan önce set değerini belirleyip ön bir sıcaklık okuması yapmakta ve SIMDI diye adlandırdığım o andaki sıcaklık değerini okunan ISI değerine eşitleyerek programa girmektedir.
İlk yapılan iş  Sıcaklık okunup SET değeri ile aynı mı değilmi ona bakmak olacaktır. Şayet eşit ise sayac çalışmaması ve hiç bir şey yapılmamamsı için program BASLA etiketine gönderilmektedir.
Okunan Sıcaklık (ISI) Set değerinden az yada fazla ise Sayac çalışacak demektir. Ancak öncelikle okunan sıcaklıklığın artıp artmadığını kontrol etmek gerekiyor. Artıyor yada azalıyor ise sayacı sıfırlamak gerekiyor çünki. Şayet Okunan ISI okunmuş bir önceki sıcaklıktan farklı ise SAYAC sıfırlanıyor ve Onceki Okuma değeri (SIMDI) yeni okunana eşitleniyor. Bunlarıda aştıktan sonra Sayac değerini artırıyoruz. Orada nokta nokta yaptığım satırlar mevcut. Buralara bir takım değerleri ekranda göstermek gerekiyor ise LCD komutları gelebilir. Yada başka ihtiyaçlar için kullanılabilir.
İşte algoritma;
SET=30
GOSUB SICAKLIK_OKU
SIMDI=ISI
BASLA:
      GOSUB SICAKLIK_OKU
      IF ISI=SET THEN BASLA
     
      IF ISI<>SIMDI THEN
        SAYAC=0
        SIMDI=ISI
      ENDIF
     
      SAYAC=SAYAC+1
      ...
      ...
      GOTO BASLA


Ete

Powered by EzPortal