kesmeler hakkında yardım

Başlatan antiteror, 08 Temmuz 2008, 23:12:34

antiteror

arkadaşlar 16f877 de rb0/int kesmesi ve TMR0  kesmesini aynı anda kullanabilirmiyiz?? nasıl olabilir. pic basic dilinde çalışıyorum

hiashua

basic bilmiyorum ancak c kodu olarak sana söyle anlatmaya çalışayım mantığına uygun olarak sen yazarsın;
void interrupt kesmeAltProgramı(void)
{
 if(TMR0IF)   // tmr0 kesmesi mi ? TMR0IF : tmr0 int. flagı
 {
  GIE = 0;    // kesmeler pasif
  TMR0IF =0;  // flagı sıfırla
  //...
  //kodunu yaz.
  //...
  GIE = 0;  // kesmeler aktif
 
 }
 if(INTF)  // rb0 kesmesi mi?
 {
   GIE =0;
   INTF = 0;
   //....
   // kodunu yaz.

   GIE = 1;
 }
}
/*  Merak ilmin hocasıdır.  */

stlg

Sevgili kardesim

Yukardaki gibi bir programla yapılabilir ama kesme rutinine yazacagın program kadar diger kesme kontrol edilmeyecektir, buda kesmenin hızını kullanmamızı engeller kolay gelsin

Birde ilk kesme rutininden cıkarken gıe=1 olması gerekiyor
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

ete

Aynı anda iki kesme kullanmanın mantığı kesmelerin oluşturduğu flag(Bayrakların) kontroluna dayanmaktadır.
Her iki kesme yide aktif hale getirdikten sonra kesmenin oluştuğu alt programda hangi kesmenin oluştuğunu anlamak için önce flag lar kontrol edilmeli ve aktif olan flag'a göre de program kesme alt programı içinde ilgili bölüme dallandırılmalıdır.
Sonuçta işlem tamamlandıktan sonra ilgili kesme flag'ı sıfırlanıp kesme alt programından çıkılmalıdır.

Her zaman söylüyorum. Pic Basic de kesme oluşması için kesmenin oluştuğu anda işlenen basic komutu ile ilgili işlem bitmeden kesme alt programına gidilmez. Bu nedenle kesme kullanılan programlarda PAUSE komutlarına çok dikkat etmek gerekir. Bu tip programlarda en büyük gecikmeyi 5-10 us olarak kullanın. Daha uzun gecikmeler yaratmak için gerekir FOR-NEXT döngüleri kullanın.
FOR I=0 to 100
PAUSEUS 5
NEXT
gibi bir program 100 x 5 = 500 us lik bir gecikme yaratır. Ancak her bir basic komut süresi en fazla 5 us olduğundan kolaylıkla arada kesme oluşturulabilir.

KOlay Gelsin
ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

semesu

mrb,
ben 16F76 entegre ve C dilini kullanıyorum.programım soyle olmalı , yapmak istedigim ac fan motorunun 1dk da kac devir attıgını hesaplayan ve pc ye gonderen program.ben soyle dusundum, pic e ilk energy geldiginde  timer baslıycak mesela 15ms olsun ve o suredede tanımladıgım k degiskeni artacak (k degiskeni  motorun devrını gosterıyor) ve tımer a verdıgım sure sona erdıgınde  ınterrupt la kesecek ve k nın degerını  gosterecek.oradan orantıyla da 1dk dakı devrını hesaplatacagım. bu programı nasıl yazacagım hakkında yardımcı olursanız sevınırım arkadaslar.
iyi calısmalar

hiashua

Alıntı yapılan: "semesu"mrb,
ben 16F76 entegre ve C dilini kullanıyorum.programım soyle olmalı , yapmak istedigim ac fan motorunun 1dk da kac devir attıgını hesaplayan ve pc ye gonderen program.ben soyle dusundum, pic e ilk energy geldiginde  timer baslıycak mesela 15ms olsun ve o suredede tanımladıgım k degiskeni artacak (k degiskeni  motorun devrını gosterıyor) ve tımer a verdıgım sure sona erdıgınde  ınterrupt la kesecek ve k nın degerını  gosterecek.oradan orantıyla da 1dk dakı devrını hesaplatacagım. bu programı nasıl yazacagım hakkında yardımcı olursanız sevınırım arkadaslar.
iyi calısmalar

Hem soruyu sorup hem cevabı veriyorsun sonrada nasıl yazacam diyorsun. Program yazmak ; Gerçek hayattaki fiziksel sorun ve problemlerin çözülmesi için evrensel bir dil olan matematik kurallarının bilgisayarın anlayacağı şekilde bir dil ( asm, basic ,c , fortran....3500 tane varmış!)  ile yazılma olayıdır.. Buradaki en önemli nokta problemin çözümünde matematik modelinin yani algoritmasının çıkarılmasıdır. Ansi C de 30 veya 35 civarı kelime ve bir kaç kural olduğunu biliyorum. Problemin çözümü için algoritmayı yazmışsın bunu ben nasıl C dilinde yazarım diyorsun. Önce platformunu  seç yani derleyicini belirle sonrada C ile yazılmış forumda veya nette yer alan örnekleri incele  imkanın varsa bir kitap temin et. Bu anlattıklarım öğrenmeni sağlamak içindi eğer ben yazmak istemiyorum siz yazın ben burdan alayım diyorsan......Kolay Gelsin.
/*  Merak ilmin hocasıdır.  */