Picproje Elektronik Sitesi

DERLEYİCİLER => Proton+ => Konuyu başlatan: Mucit23 - 24 Temmuz 2011, 19:38:18

Başlık: ihtiyac halinde kesmeyi acma-kapama
Gönderen: Mucit23 - 24 Temmuz 2011, 19:38:18
Merhaba arkadaslar
Protonda graofik lcd ile calisirken kesme ile ilgili bir sorun cikiyor. Programin biryerinde bir tablo olusturmusum. Tabloyu olustururken bir cok line komutu kullaniyorum tabloyu bu line komutlari ile yaptim. Programin bazi yerinde tmr0 kesmesi ni kullanmam gerekiyor . Kesmeler kapali iken kendi olusturdugum tablo sorunsuz calisiyor. Kesmeyi actigim zaman tablo yine cikiyor ama bir sure sonra goruntu bozulmaya basliyor
Sanirim line komutlari islenirken kesme geldigi zaman komutlar duzgun calismiyor.
Programda sadece bazi bolumlerde kesme kullanmam gerekiyor. Bu yuzden sadece lazim oldugunda kesmeleri acip ihtiyac olmadigindada kesmeleri kapatmak istiyorum. Simdi program islerken kesmeyi kapatiyorum.  Fakat kesmeleri tekrar aktif ettigimde kesme tekrar calismiyor. Kullandigim islemci 18F4620 20 mhz de calistiiriyorum. Amacim sadece gerektiginde kesmeyi aktif etmek.  Acaba neden kesme tekrardan calismiyor. Neyapmam gerekiyor.
(Cep telefonu ile yazdigim icin turkce
karakterler nedense cikmiyor. Bu seferlik
mazur gorun)
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: tyildizak - 24 Temmuz 2011, 20:41:42
intcon.7 bitini temizlerseniz(0) tüm kesmeler iptal olur. Tekrar aktif hale getirmek için de set edersiniz.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: -Hasan- - 24 Temmuz 2011, 20:42:34
Peki öncelikli interrupt olayını kullanıyormusunuz? RCON registerinin 7. bitini 1 yapınca öncelikli kesme açılmış oluyor, 0 yapılırsa 16f lerdeki gibi oluyor.

Eğer RCON,7=0 ise, yani öncelikli interrupt olayı kapalı ise:

INTCON ' un 7. biti ile tüm kesmeleri açıp kapatabilirsiniz.

Eğer RCON,7=1 ise, yani öncelikli interrupt özelliği açık ise:

INTCON ' un 7. biti yüksek öncelikli kesmeleri açıp kapatır.
INTCON ' un 6. biti düşük öncelikli kesmeleri açıp kapatır.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: tyildizak - 24 Temmuz 2011, 20:44:54
Rcon.7 ne durumda olursa olsun intcon.7 temizlendiğinde tüm kesmeler iptal olur.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: -Hasan- - 24 Temmuz 2011, 20:53:49
Alıntı YapRcon.7 ne durumda olursa olsun intcon.7 temizlendiğinde tüm kesmeler iptal olur.

(http://s3.postimg.cc/1tzn23nt0/nterrupt.jpg) (http://postimg.cc/image/1tzn23nt0/)

PIC18F4620 Datasheet Sayfa 111
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: tyildizak - 24 Temmuz 2011, 21:02:19
Alıntı yapılan: Hasan Oguz - 24 Temmuz 2011, 20:53:49
Alıntı YapRcon.7 ne durumda olursa olsun intcon.7 temizlendiğinde tüm kesmeler iptal olur.

(http://s3.postimg.cc/1tzn23nt0/nterrupt.jpg) (http://postimg.cc/image/1tzn23nt0/)

PIC18F4620 Datasheet Sayfa 111

@hasan oğuz, aynı datasheetten bende de var :)




bit 7 GIE/GIEH: Global Interrupt Enable bit

when IPEN= 0                                      // Ipen 0 iken
1 = Enables all unmasked interrupts
0 = Disables all interrupts                  // tüm kesmeleri engeller


When IPEN = 1:                                 //  Ipen 1 iken
1 = Enables all high-priority interrupts
0 = Disables all interrupts                     // tüm kesmeleri engeller


Siz ne tür kesmeler set etmiş olursanız olun, gie/gieh bitini temizlediğinizde, bunların hiçbiri gerçekleşemez!

Bunu görsel olarak takip etmek için lojik şemaya da bakabilirsiniz.

Orada göreceğiniz gibi her iki kesme vektörünü gösteren and kapılarından her ikisinde de gie/gieh biti girişe bağlıdır ve 0 olursa her iki tür kesme de gerçekleşemez.

(http://img850.imageshack.us/img850/9537/unled1ov.gif)





Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: -Hasan- - 24 Temmuz 2011, 21:11:40
Eğer RCON,7=0 ise, yani öncelikli interrupt olayı kapalı ise:

INTCON ' un 7. biti ile tüm kesmeleri açıp kapatabilirsiniz.

Eğer RCON,7=1 ise, yani öncelikli interrupt özelliği açık ise:

INTCON ' un 7. biti 1 olursa yüksek öncelikli kesmeler açık, 0 olursa tüm kesmeler kapalı.
INTCON ' un 6. biti düşük öncelikli kesmeleri açıp kapatır.

tyildizak arkadaşım gerçekten çok teşekkürler, kaçırdığım o ufak ayrıntıyı bana göstermiş oldunuz, o zaman yukarıdaki gibi düzenleyebiliriz.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: tyildizak - 24 Temmuz 2011, 21:20:23
Rica ederim, ek olarak, tüm kesmeleri gie biti ile engelleyip, sonradan biti set ederek kesmeleri tekrar aktif ettiğinizde de, arada geçen sürede herhangi bir kesme oluşup ilgili kesme bayrağını set etmiş olabilir.
Gie biti ile  tüm kesmeleri aktif hale getirmeden önce bunları da temizlemek  gerekecektir.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: -Hasan- - 24 Temmuz 2011, 21:31:08
Alıntı Yaptüm kesmeleri gie biti ile engelleyip, sonradan biti set ederek kesmeleri tekrar aktif ettiğinizde de, arada geçen sürede herhangi bir kesme oluşup ilgili kesme bayrağını set etmiş olabilir.
Gie biti ile  tüm kesmeleri aktif hale getirmeden önce bunları da temizlemek  gerekecektir.

tyildizak arkadaşım gerçekten önemli bir noktayı vurgulamışsın.

Mucit23 arkadaşımız anlattığına göre sadece TMR0 kesmesini kullanıyormuş, o zaman onun sadece TMR0 kesme bayrağını (TMR0IF) temizlemesi yeterli.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: muhittin_kaplan - 24 Temmuz 2011, 22:03:33
enable ve disable ı da bir araştırınız
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: Tagli - 24 Temmuz 2011, 22:34:25
Kesme bitleriyle aynı sorunu ben de yaşamıştım. Aslında bu durum bana mantıksız geliyor ama yapacak birşey yok gibi, adamlar öyle tasarlamış.  Bu başlığı (https://www.picproje.org/index.php/topic,33732.0.html) bir inceleyin.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: Mucit23 - 25 Temmuz 2011, 15:20:08
asrkadaşlar cevaplarınız için teşekkür ederim. Şimdi sorunu çözdüm. Dediğiniz gibi Kesmeyi tekrar aktif etmeden önce Kesme bayrağını Ve TMR0L sayacını temizlemek gerekiyormuş.

   Boş zamanlarımda program yazmak dışında yürütmekte olduğum projelerde kullandığım işlemcilerin datasheedini açıp incelerim. Kesmede birçok şeyi öğrendimde Bu öncelikli kesme işini anlayamadım. Pic hangi durumlarda neye göre kesmelere öncelik tanıyor.
Bunun yanı sıra öğrenmek istediğim bir konu daha var. Diyelim biz hem tmr0 kesmesi hemde RB0 kesmesini aynı anda kullanmak istiyorum. Veya birden fazla kesmeyi aynı anda kullanmak istiyorum. Bunun için her kesme çeşidi için ayrı ayrı kesme alt programları olmuyor herhalde. Tek bir alt program yapıp sadece kesme bayrakları ile kesmenin nereden geldiğinemi bakmak gerekiyor?
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: -Hasan- - 25 Temmuz 2011, 15:33:22
Alıntı YapKesmede birçok şeyi öğrendimde Bu öncelikli kesme işini anlayamadım. Pic hangi durumlarda neye göre kesmelere öncelik tanıyor.

Öncelik tanınacak kesmeleri sen ayarlayacaksın. INTCON2, INTCON3, IPR1, IPR2 registerlerinden bu ayarlanabiliyor.

Alıntı Yapbirden fazla kesmeyi aynı anda kullanmak istiyorum. Bunun için her kesme çeşidi için ayrı ayrı kesme alt programları olmuyor herhalde. Tek bir alt program yapıp sadece kesme bayrakları ile kesmenin nereden geldiğinemi bakmak gerekiyor?

Evet her kesme çeşidi için ayrı ayrı alt programlar olmuyor, düşük öncelikli interrupt geldiğinde 0x18, yüksek öncelikli interrupt geldiğinde 0x08 adresine gider PIC, bu sabittir. Aynen dediğiniz gibi olacak; kesme bayrakları ile hangi kesmenin geldiğine bakacaksınız. Daha ayrıntılı bilgi için datasheeti incelemenizi öneririm, orada ayrıntılı bir şekilde anlatılmış.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: Mucit23 - 25 Temmuz 2011, 16:12:34
Çok teşekkür ederim Aynen tahmin ettiğim gibiymiş. 18F4620 çok hoşuma gitti. Datasheedini incelerken kendimi kaybediyorum. Herkese teşekkür ederim
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: -Hasan- - 25 Temmuz 2011, 17:31:09
Alıntı yapılan: Mucit23 - 25 Temmuz 2011, 16:12:34
Çok teşekkür ederim Aynen tahmin ettiğim gibiymiş. 18F4620 çok hoşuma gitti. Datasheedini incelerken kendimi kaybediyorum. Herkese teşekkür ederim

Arkadaşım dediğine katılıyorum; 18F4620 gerçekten de PIC18 ailesinin en iyi mikrodenetleyicilerinden biri, en göze çarpan özelliği de belleklerin geniş kapasiteli olması:

FLASH PROGRAM MEMORY : 64 KB
RAM : 3968 B                                 (doldur doldurabilirsen) 8)
EEPROM : 1024 B

Ben de yukarıda saydıklarımın yanında diğer birçok özellikleriyle 18F4620 ' yi tercih ediyorum.
En sevdiğim PIC18 modeli. :)
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: Mucit23 - 03 Ağustos 2011, 15:09:19
Arkadaşlar sorunu kısmende olsa çözdüm ama anladımki sorun daha farklı bir boyutta. Şöyleki kesmeyle ilgili bir sorunum kalmadı çok şükür. İstediğim yerde kesmyi açıp kapayabiliyorum. Fakat kesme açık olduğu zaman ve program grafik lcdye veriler gönderilen bir döngü içerisine girdiği zaman grafik lcddeki görüntü pixel pixel silinmeye başlıyor. Kesme kapalı olduğu zaman herhangi bir sorun olmuyor. Protonda Hardware kesmesi kullanıyorum. TMR0 bölücü oranı 1/64, Kesme alt programında ise sadece bir sayacı saydırıyorum. Acaba sorun neyle ilgili olabilir.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: Mucit23 - 04 Ağustos 2011, 10:39:28
Arkadaşlar bu konuda kimsenin bi fikri yokmu? Neden böyle bir sorun yaşıyorum. Bilgilerinize ihtiyacım var...
Başlık: Ihtiyaç halinde kesmeyi açma kapama
Gönderen: Mucit23 - 05 Ağustos 2011, 12:46:30
Arkadaşlar forumda pek fazla kimse yok galiba konuyu yine güncel tutmak istiyorum çünkü hala sorunu çözebilmiş değilim. Yardımlarınıza ihtiyacım var
Başlık: Ihtiyaç halinde kesmeyi açma kapama
Gönderen: Mucit23 - 06 Ağustos 2011, 13:27:09
Arkadaşlar konuyla ilgili kimsenin pek fazla bilgisi yok galiba. Bu konuda farklı çıkış yolları aramaya başladım. Yani farklı kesmelerdede aynı sorun oluyormu ona bakayım.  Umarım konuyla ilgili tecrübe yaşayan birilerine rastlarım
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: Klein - 06 Ağustos 2011, 22:09:26
Sorun sıradan bir sorun değil.  Kesmeye girdiğinde saçma sapan şeyler yapıyor olsa , mantıklı bir açıklama bulmak daha kolay olurdu. Ama kesme açıkken piksellerin tek tek silinmesi , belirli bir düzen olduğunun göstergesi. Kodu görmeden birşey söylemek pek mümkün değil.
Aklıma gelen tek ihtimak stack şişmesi. Belki kesme hizmet rutinine gidince yığına bir değer atılıyor , bu değer önceki bir değerin üzerine yazılıyor, sonrada kesmeden döndükten sonra bu hatalı değer ığından çekiliyor olabilir.
Ama yığında taşma varsa bunu derleyicinin bildirmesi gerekirdi.
Eğer  lcd yazma için bir fonksiyon çağırıyorsan , bu fonksiyon içindeki kodları ana döngüye alarak , sorunun yığın taşmasından kaynaklanıp kaynaklanmadığını test edebilirsin.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: F.T - 07 Ağustos 2011, 00:29:37
protonda hardware kesmede bu tip bir sorun yaşadım.kodu görmeden bir çözüm karanlık odada iğne aramak gibi bir şey.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: ErsinErce - 07 Ağustos 2011, 01:05:11
context save ve context restore komutlarını kullanıyor musunuz bilmiyorum ama kullanmıyorsanız bu komutları kullanın
Başlık: Ihtiyaç halinde kesmeyi açma kapama
Gönderen: Mucit23 - 07 Ağustos 2011, 13:55:15
 hocam ilginiz için teşekkür ederim. Dediklerinize göre bazı denemeler yaptım. Programda ekrana yazı yazılan kısım alt program halindeydi. Sizin dediğiniz gibi bu alt programdaki kod parçacıklarını ana döngüye taşıdım. Buna rağmen değişen birşey olmadı. Daha önce ekran pixel pixel siliniyor dedim ama öyle değil aslında. Ekranı 8 satır 128 sütun olarak düşünürsek rastgele bir satırdan herhangi bir sütun komple siniyor. Ama hemen ardından program silinen yeri yeniliyor sadece benim grafik lcd de benim herhangi bir işlem yapmadığım yerler silinip kalıyor. Bunu yeni anladım. Hocam şimdi ceptelefonu ile girmişim internete bugün değil ama yarın sorunu ençok gördüğüm yerden bir kod parçacıgı paylaşacagım. Orada herşey belli olur herhalde.  Feritt hocam yaşadığınız sorunla ilgili biraz ayrıntı verebilirmisiniz? Sizdedemi ekrandaki veriler siliniyor. Cynetron hocam hocam kesme alt programında dediğiniz komutları kullanıyorum zaten.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: F.T - 07 Ağustos 2011, 14:16:59
muhittin kaplan hocamın yazılarına göz atmak lazım."Hardware kesmesinde ise, kesme altprogramına girer girmez sistemi etkileyen kayıtcı durumlarının yedeklenmesi ve kesmeden çıkarken bunların tekrardan yüklenmesi gerekir. Yedekleme işlemini Context Save, geri alma işlemini Context Restore komutları yapar. Hardware Kesmesi için intcon kayıtcısının ayarlanması için yapılması gereken önemli hususlardan biri de Ayar yapmaya başlamadan önce Global Int bayrağının "0" yapılması gerekliliğidir. Ayrıca kesme altprogramı içerisinde mümkün olan en kısa zamanda çıkılması gerekir. Diğer uzun beklemelerde ana program çalışmayabilir."
bende ki sorun global int bayrağı ile ilgili idi.sistem kesmeye giriyor canı isterse çıkıyor istemezse çıkmıyordu.kesme içine bir sayaç koyup kesmenin sürekli oluştuğunu takip edebilirsin.
ayrıca muhittin hocaya  bu faydalı eser için tekrar teşekkür ediyorum. ;D
Başlık: Ihtiyaç halinde kesmeyi açma kapama
Gönderen: Mucit23 - 07 Ağustos 2011, 14:57:06
Bende zaten muhittin hocamızın kitabından yararlanarak kesme ayarlarını yapmıştım. Kitapta geçenlerin hepsini uygulamısim. Zaten kesmenin çalışmasında ben bir sorun göremiyorum.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: Mucit23 - 08 Ağustos 2011, 13:39:59
Arkadaşlar sorunu en çok gördüğüm yerden bir parça programcık ekleyeyim. Burada ufak bi menü yapmıştım. Bu şekilde bir menü çok daha iyi yapılabilir. Fazla düşünmedim zaten üzerinde. Simülasyonda denerseniz çokdaha iyi anlarsınız ne denli bir sorun olduğunu.
En çok burada kendini belli ediyor.

Device 18F4620

Config_Start
   OSC = HS ; HS
   FCMEN = OFF ; Disabled
   IESO = OFF ; Disabled
   PWRT = OFF ; Disabled
   BOREN = OFF ; Disabled
   WDT = OFF ; Disabled
   MCLRE = On ; Enabled
   LPT1OSC = OFF ; Disabled
   PBADEN = OFF ; PORTB<4:0> digital on Reset
   STVREN = OFF ; Disabled
   LVP = OFF ; Disabled
   XINST = OFF ; Disabled
   Debug = OFF ; Disabled
Config_End

Xtal 20

TRISA=%00000011
TRISB=%00000000
TRISC=%00000000
TRISD=%00000000
TRISE=%00000000

PORTA=0:PORTB=0
PORTC=0:PORTD=0
    PORTE=0
All_Digital=TRUE
PortB_Pullups= OFF
CMCON=7 
INTCON.7=0
INTCON=%00100000
T0CON=%11000101
TMR0L=0
On_Hardware_Interrupt GoTo KESME
INTCON.7=1


LCD_DTPort = PORTB                 'GLCD DATA PORTLARI PORTB'YE BAĞLI
LCD_RSPin = PORTD.4                'GLCD RS PİNİ PORTC.5 BAĞLI
LCD_ENPin = PORTD.2                'GLCD ENABLE PİNİ PORTC.1 BAĞLI
LCD_RWPin = PORTD.3               'GLCD RW PİNİ PORTC.4 BAĞLI
LCD_CS1Pin = PORTD.0               'GLCD CS1 PİNİ PORTC.2 BAĞLI
LCD_CS2Pin = PORTD.1               'GLCD CS2 PİNİ PORTC.3 BAĞLI
LCD_Type =  Samsung             'GLCD TİPİ GRAFİK KS0108 128*64B WİNSTAR
Internal_Font = On                 
Font_Addr = 0
Declare GLCD_STROBE_DELAY = 5
Declare Shift_DelayUs 10
GLCD_EXTERNAL_PRINT = PPRINT


Dim  Xpos    As Byte
Dim  Ypos    As Byte
Dim  GINV    As Byte
Dim  SAYAC1  As Byte
Dim  SETCLEAR As Byte
Dim  addr    As Word

DelayMS 100
Cls
Print Font Arial____6o75
SETCLEAR=1                   
Line SETCLEAR,39,2,100,2     
Line SETCLEAR,39,52,100,52   
Line SETCLEAR,39,2,39,52     
Line SETCLEAR,100,2,100,52 
SETCLEAR=0                         
For Ypos=3 To 11                   
Line SETCLEAR,40,Ypos,99,Ypos   
Next Ypos
Print At 4,41,Inverse 0,"SEcENEKLER"
SETCLEAR=1
Line SETCLEAR,40,12,99,12         
SETCLEAR=0
For Ypos=13 To 21                 
Line SETCLEAR,40,Ypos,99,Ypos
Next Ypos
Line 1,40,13,99,13 
Line 1,40,14,40,21
For Ypos=14 To 21
Line 1,82,Ypos,99,Ypos
Next
Print At 14,41,Inverse 1,"DdZENLE"
SETCLEAR=1
Line SETCLEAR,40,22,99,22         
SETCLEAR=0
For Ypos=23 To 31                 
Line SETCLEAR,40,Ypos,99,Ypos
Next Ypos
Print At 24,41,Inverse 0,"PRG.bAc"
SETCLEAR=1
Line SETCLEAR,40,32,99,32         
SETCLEAR=0
For Ypos=33 To 41                 
Line SETCLEAR,40,Ypos,99,Ypos     
Next Ypos
Print At 34,41,"PRG.bSiL"
SETCLEAR=1
Line SETCLEAR,40,42,99,42         
SETCLEAR=0
For Ypos=43 To 51                   
Line SETCLEAR,40,Ypos,99,Ypos     
Next Ypos
Print At 44,41,"iPTAL"
SETCLEAR=1
Line SETCLEAR,40,52,99,52
GINV=2
BASLA:
If PORTA.0=0 Then
DelayMS 50
GINV=GINV*2
If GINV>16 Then GINV=16
While PORTA.0=0:Wend
EndIf

If PORTA.1=0 Then
DelayMS 50
GINV=GINV/2
If GINV=1 Then GINV=2
While PORTA.0=0:Wend
EndIf

GoSub EKRAN
GoTo BASLA

EKRAN:
Line GINV.1,40,13,99,13 
Line GINV.1,40,14,40,21
For Ypos=14 To 21
Line GINV.1,82,Ypos,99,Ypos
Next
Print At 14,41,Inverse GINV.1,"DdZENLE"
Line GINV.2,40,23,99,23 
Line GINV.2,40,24,40,31
For Ypos=24 To 31
Line GINV.2,78,Ypos,99,Ypos
Next
Print At 24,41,Inverse GINV.2,"PRG.bAc"
Line GINV.3,40,33,99,33
Line GINV.3,40,34,40,41
For Ypos=34 To 41
Line GINV.3,83,Ypos,99,Ypos
Next
Print At 34,41,Inverse GINV.3,"PRG.bSiL"
Line GINV.4,40,43,99,43 
Line GINV.4,40,44,40,51
For Ypos=44 To 51
Line GINV.4,69,Ypos,99,Ypos
Next
Print At 44,41,Inverse GINV.4,"iPTAL"
Return

KESME:
Context Save
Inc SAYAC1
If SAYAC1>150 Then SAYAC1=0
If SAYAC1>74 Then
High PORTC.7
Else
Low PORTC.7
EndIf
INTCON.2=0
TMR0L=10
Context Restore
End

Include "ARIAL_S_7.txt"


font dosyasını kendim düzenlediğim için programda türkçe karakterlerin yerinde başka karakterler görebilirsiniz.
Umarım sorunu çözebiliriz.
Diğer dosyaları Buradan (http://hotfile.com/dl/126211178/e782719/kesme_deneme.rar.html) indirebilirsiniz..
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: t2 - 08 Ağustos 2011, 14:50:01
Kesme kısmını ifade ederken yanlışlık var gibi. Bence buna benzer yapman gerek:

On_Hardware_Interrupt Goto Flash
' Assign some Interrupt associated aliases
'Symbol  vs..
'Bence buraya başka kod yazılmaz.
' YAZILACAK TEK KOD kesme rutini öncesi ana etikete yönlendirME KODUDUR..
Goto Over_interrupt

Flash:
....
Context Restore ' Restore the registers and exit the interrupt


Over_interrupt :
...

goto  Over_interrupt



Ayrıca kesmenin içinde yapılacak ilk iş kesme flagini sıfırlamak olsa iyi olur
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: Mucit23 - 08 Ağustos 2011, 15:26:42
Yanlış anlamadıysam kesme alt programı ana ve alt programlardan öncemi yazılması gerekir.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: t2 - 08 Ağustos 2011, 15:35:43
On_Hardware_Interrupt Goto  Flash
' Assign some Interrupt associated aliases
'Symbol  vs..
'Bence buraya başka kod yazılmaz.
' YAZILACAK TEK KOD kesme rutini öncesi ana etikete yönlendirME KODUDUR..
Goto Over_interrupt

Bu iki kırmızı satır arasına kod yazılmaz  diye biliyorum.   'Symbol  vs.. yazılabilir.

kesme alt programınn sona veya başa yakın olması önemli olmasa gerek. fakat  Goto Over_interrupt satırını mutlaka On_Hardware_Interrupt  dan hemen sonra eklemeliyiz
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: Mucit23 - 09 Ağustos 2011, 11:18:42
Anladım dediklerinizi. Akşam üzerini yazdıklarınızı anladığım kadarıyla bi deniyeyim. Birde şu gözüme çarptı. Timer0 bölücü oranını arttırdığımız zaman sorun daha az olmaya başladı. Yani bölme oranını 1/256 yaptığımda çokdaha az oluyor. Kapatırsam hiç olmuyor zaten. Acaba siz denediğinizde sizdedemi aynı sorun oluyor.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: t2 - 09 Ağustos 2011, 11:26:22
Benim deneme imkanım yok.
kesme içine hiç kod yazmadan deneyelim.
sadece flag sıfırlansın
fakat kesme yine çalışsın.
bu şekilde de sorun çıkıyor mu?

eğer çıkmıyorsa muhtemelen kesmede kullanılan değişkenler bu soruna yol açmış olabilir. adım adım deneyerek sorunlu kısım bulunabilir. Mantıklı açıklaması olmasa da yine sorun çıkabilir. Sadece sorun çıkan yeri bulup kaldırmak, etrafını dolanmak gerek.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: Mucit23 - 09 Ağustos 2011, 11:31:46
Anladım hocam. Bu dediklerinizin hepsini akşam deniyeceğim. Gerçektende çok anlamsız bir sorun. Mantıklı bir açıklama bulamıyorum.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: Mucit23 - 12 Ağustos 2011, 17:58:35
Merhabalar T2 hocam
Hocam dediklerinizin hepsini uyguladım. Teker teker uyguladım. Faklı yöntemler denedim ama sonuç değişmiyor. Acaba protonla alakalı birşey olabilirmi. Anlamıyorum birtürlü. Aslında yukarıdaki örnekte kesmeye ihtiyacım yok. Zaten gerçekte bu kısımlarda kesmeyi kapatıyorum.
En çok burada kendini belli ediyor. Ana dönbgüde bu kadar olmasada az da olsa yapıyor.
Başka önerisi olan arkadaşlar varsa her türlü önerilere açığım.
Başlık: Ynt: ihtiyac halinde kesmeyi acma-kapama
Gönderen: Mucit23 - 17 Ağustos 2011, 14:37:02
Arkadaşlar merak ediyorum sadece bendemi böyle bir sorun oluyor diye. Sizden ricam deneme şansı olan arkadaşlar programı derleyip denerlerse sevinirim. Birde ben hardware interrupt yerine normal interrupt kullanmayı denediğimde sonuç dahada kötüleşti.
Bu sorunu basit bir yöntem ile kendi çapımda çözdüm. Şöyleki ekrana verilerin gönderildiği bölümü tek bir alt program haline getirip. Bu alt programa gidildiğinde kesmeyi kapatıp çıkarkten tekrar açıyorum. Bu şekilde görüntü bozulmadı. Ama nekadar sağlıklı bilmiyorum. Program çalıştığı sürece devamlı kesme açılıp kapanacak. İlerde bir sorun yaratırmı bilmiyorum. Biraz endişeliyim bu konuda.