avatar_ete

PIC Basic Ders-06 (Kesme (INTERRUPT) Kullanımı)

Başlatan ete, 28 Ağustos 2011, 16:13:09

elektro77

Alıntı yapılan: alisumer - 20 Ağustos 2021, 09:33:10pazar malı kulaklık sanırım bu yüzden yutuber olamam  :o evet nefes sesleri rahatsız edici kusura bakmayın gece iki gibi buldum yöntemi birdaha kayıt yapmak işime gelmedi ilk denememi paylaştım videodan önce denemek aklıma bile gelmedi hızlı versiyonu isiste paylaştığım videolarda sesler hep kötü anlaşılır derdim üyesi olduğum forumlara bilgi paylaşmak
Yanlış anlamayın lütfen. Dostça davranmaya çalışıyorum. Yönteminizi çok başarılı buldum. Projenizdeki hızı 30 kat artırdınız neredeyse. Ben daha hayatımda kesmeli bir program tasarlamadım bile. Bakmayın densizliğime.
Benim derdim de basic kütüphanemi sonrası için geliştirmeye çalışmak.
Bu arada bende, değişiklik yaptığınız o .lib uzantılı dosyalar yok. MCS versiyonum 5.0.0.5. PBP versiyonum 3.1.0.1. Nasıl yapacağım.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

alisumer

Alıntı yapılan: elektro77 - 20 Ağustos 2021, 09:12:23Microfonunuz bulduğunuz yöntem kadar şahane değil.
Bende bu dosyalar görünmüyor.
lib dosyaları PBP dosyası içindedir  genellikle direkt C klasörü iccinde olur bazı PBP surumlerdi de tam hatirlamasamda PBP238 gibi bir dosya adı var oradadir
Hep meraktan

alisumer

bu arada karakter lcd de puls hızını daha önce kullandığım kesme ile çıkabildiği max 200 hz den 4khz ye kadar çıkardım 4khz den sonra lcd sapıttı ama oraya kadar sıkıntı olmadı en azından isis için bu böyle

Hep meraktan

elektro77

#138
Siz bir devrim daha gerçekleştirdiniz. En azından bende.
Isıs te encoderli bir simülasyon yapmak için pattern generatörünün kullanılabileceğini de gösterdiniz.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

alisumer

disasm de kodları incelediğimde program 4. satırındaki return komutu kalkıp kesme adresine gönderiyor fakat program içerisinde hani kesme bayrağını kontrol ettiği satırlar var ya onlar hala duruyor onlara gerek kalmayıp kesmeye gidildiğinden bir işe yaramadan kalabalık yapmaya devam ediyorlar onları da kapatmanın yolunu bulabilirsem 30  kat değil büyük ihtimal 50 kat artacak hız.kurcalamaya devam ;D
Hep meraktan

alisumer

#140
 :-\
Hep meraktan

ete

Kod sadeleştirme çalışmaların için seni tebrik ediyorum. Aslında bir çok amaca hizmet eden bir kod bloğunu sadeleştirerek tek amaca hizmet etmesini sağlamış oluyorsun. Bu hali ile her yerde kullanılması bana göre pek mümkün değil. Olsaydı adamlarda bunu bu şekilde yazardı diye düşünüyorum.
Her neyse işin sonucunda düzenlediğin kod ne oranda doğru çalışacak merak da ediyorum. Bunun için kısmi çalışmalar yapmak yerine bütün programı düzenli olarak çalıştırmak gerekir. Muhtemelen tek bir kesme kaynağı kullandığın için sistem doğru çalışacaktır. Aradığında bu zaten. Zaman zaman sonuç bildirimi yaparsan sevinirim.

Ete

MB_77

#142
bu mesaj tarafımdan silinmiştir.

alisumer

Alıntı yapılan: MB_77 - 21 Ağustos 2021, 10:49:28selamlar,

@alisumer koşulların giderek zorlaştığı günümüzde yenilikcilik çağımızın en önemli değerlerinden biri. bunu yapabilmek için de önce kafadaki sınırları kaldırmak gerek. sonra da çok yorulmaya hazır olmak gerek.  görünen o ki siz ikisi konusunda da iyisiniz. ancak bilgi ve yeniliğin sınırı yok. ete hocamın belirttiği gibi amaçtan çok uzaklaşmamak verimi artıracaktır. başarılar.
teşekkürler görüşleriniz için evet amacım biraz hızlandırmaktı hall sensörden gelen okumaları şimdi  bakıyorum da kullandığım hall sensörün max tetikleme sinyali 20 khz imiş 130 khz ile amaçtan bayağı bi şaşmış oldum .şaka bir yana hiç şahsi olarak tanışmasamda  programlama işini ilk bu forumu takipederek ETE hocanın paylaştığı derseri sayesinde sevdim 10 yıldan fazla oldu bu foruma üyeliğim başta yazdığım kodlarımın gülünçlüğüne aldırmadan yardımcı oldunuz her biriniz sağ olun borçlu hissetmem normalmi bilmiyorum ama öyle hissediyorum size karşı.36 yaşında adamım Erol hocanın seni tebrik ediyorum demesi ilkokulda sümüklü halimle öğretmenin bana afferin demesi gibi bir etki yaptı bende bu gazla giderim 46 ya kadar artık ;D  ;D
Hep meraktan

MB_77

#144
bu mesaj tarafımdan silinmiştir.

alisumer

#145
@MB_77 sanada başarılar sanırım senin program farklı bir yöntem ve amaca yönelik bu hıza nasıl çıkabildin anlamadım helal olsun benim tespitim şu yönde oldu düzenleme yapmadan önce ana program okumanın hızını büyük oranda belirliyordu kesme kısmının tamamını asm ile yazdığımdan ve kesmeye girme ile çıkmanın nekadar süreceğini zaten biliyordum yaklaşık olarak 7.5 us kadar sadece byte den word uzunluğuna geçişlerde süre iki adım uzayıp kısalabiliyor çıkabildiğim khz değerinde bir vuruşun süresi 7,6 us kadar bu da demek oluyorki ana program artık okuma hızına hiç etki edemiyor sadece kesmedeki yön tespiti ve yazmalar belirleyici hatta kesme kısmını paylaşayım bu sadeleştirilmiş word değerinde taşma olunca ne olacağı boş bırakılmış hali yani hızı belli oranda artmış hali yan tarafta çevrim süreleri mevcut açıkçası kod yazmada çok iddalı değilim ama sanırım bir word değişkenli enkoderin daha kısa bir kesmesinin olabileceğini en azından basic veya c ile olabileceğini düşünmüyorum asm başka benden çok daha iyileri var tabiki  biri farklı bir yolla belki 4 us hassasiyet yakalayabilir ama  benim bu osc ile canlı okuma bu tabi şimdi aklıma geldi şöyle birşeyde olabilir ben her durum değişmede kesmeye girip birdahakine kadar geri çıkıp ekrana yazıyorum giriş çıkış yapmadan tüm okumaları tek kesmede yaparsan süre muhtemelen kısalabilir.rica etsem aynı kodu bahsettiğim yöntemle denermisin ekran sorun çıkarabilir ama belki hemen başlangıçta puls  verip kesmeye sokmazsan çalışma ihtimali var 
KESME:
        DISABLE
 asm
        
        BANKSEL PORTB                     ;1
        MOVLW  0XC0                       ;1
        ANDWF   PORTB ,W            ;'    ;1    YON=A ^ B                            ;
        MOVWF  _YENI                 ;'    ;1     IF YON=0 THEN  GOTO EKS            ;
        RLF    _YENI   ,W                  ;1
        XORWF  _ESKI   ,W                  ;1
        MOVWF  _YON                         ;1
         BTFSS  _YON    ,7                   ;1-2
         GOTO   _EKS                         ;2          
                               
endasm                     

ART:
    ASM                              ;komut süresi   16mhz
        INCFSZ  _ONDA   ,F            ; 1-2     250 ns-500ns
        GOTO    $+2                   ; 2            500ns
        INCF   _ONDA+1  ,F             ; 1     250 ns
        INCFSZ  _SAYAC  ,F            ; 1-2     250 ns-500ns
        GOTO    $+2                   ; 2            500ns
        INCF   _SAYAC+1  ,F            ; 1       250 ns
        MOVLW   .1                    ; 1       250 ns
        SUBWF   _EKSI  ,F             ; 1       250 ns
        BTFSS   STATUS  ,C            ; 1-2     250 ns-500ns
        DECF    _EKSI+1  ,F            ; 1       250 ns
        GOTO    _CIK                  ; 2            500ns
    ENDASM    
        
EKS:    
    ASM                               ; 1
    MOVLW	0X01                      ; 1
	SUBWF	_ONDA	,F                ; 1-2
	BTFSC	STATUS,C                  ; 2
	GOTO	$+2                       ; 2
	DECF	_ONDA+1	,F                ; 1
	
	SUBWF	_SAYAC	,F                ; 1
	BTFSC	STATUS,C                  ; 1-2
	GOTO	$+2                       ; 2
	DECF	_SAYAC+1	,F            ; 1
    INCFSZ  _EKSI   ,F                ; 1-2
    GOTO    $+2                       ; 2
    INCF   _EKSI+1  ,F                ; 1
    ENDASM           
       

CIK:
    ASM
        MOVF    _YENI   ,W            ; 1
        MOVWF   _ESKI                 ; 1
        ;MOVF    PORTB   ,W            ; 1
        ;MOVWF   _TEMP                 ; 1
       BCF     INTCON  ,0             ; 1
        RETFIE
    ENDASM

END  


Hep meraktan

MB_77

#146
bu mesaj tarafımdan silinmiştir.

alisumer

@ MB_77   ;D  peki gerçekten gereklimi diye kendinize sorduğunuz sorunun cevabı ne bırak basic i mi diyorsun :) basic babamın oğlu değilki ben iyi kötü 3 ayrı dili yazıyorum kombin yapıp aynı kodda kulanabiliyorum bu bana esneklik sağlıyor benim yaptığım modifiye aslında bir modifiye değil Ete hocanın dediği gibi bir çok işe yarayan ama gerek olmadığı durumlarda da çok vakit harcayan bir koda müdahale etmek bu kodun benzeri her dilde olmak zorunda yani bu basic in kronik sorunu değil bunu phyton da c de java yada microbasic de  kullanmak zorunda çünkü kesmeye gittiğinde programın o an çalışan reg durumlarını kaydetmeden çıkarsa kaybetme ihtimali var o yüzden asm harici tüm diller kesme oluşunca direk kesmeye girmez kimi bu ara kodu iyi kullanır program içinde sürekli bayrak kontrolu yapacağına sadece ilgili reg leri yedekleyeceği ara bir kod yazar kimi de basic gibi sürekli kontrol eder sadece yöntem farklı amaç aynıdır.ben ise  kesmeye girsin kesme içinde ben gerek görürsem her programda istediğim regleri yedekleyebilirim asm deki gibi mantığıyla hepsini kapattım olay bukadar
Hep meraktan

alisumer

hatta şu durumda bayağı iddalıyım kesmeye girme hızı konusunda aynı kodla benim yöntemimle derlediğim basic ile herhangi bir dili kafa kafaya kapıştırabiliriz  tüm forumlarda da yayınlarız sonucu ;D yapalım şöyle bir şey en azından sürekli bırak basic i diyenler bi durup düşünür   ;D
Hep meraktan

MB_77

#149
bu mesaj tarafımdan silinmiştir.

Powered by EzPortal