İnterrupt içinde interrupt

Başlatan robomaster, 06 Ocak 2014, 18:55:23

muhittin_kaplan

Bootloader dan dolayı olur, Aslında Cevapta Burada, Bootloader Kesme vectörlerine geliyorsa bunu değiştirip başka yere almak gerekir. (Aynı Şey Reset vektor İçinde Geçerli)

robomaster

Alıntı yapılan: yldzelektronik - 06 Ocak 2014, 20:12:01
Derken muhittin abi yazmış zaten.

Siz software priority de işin içine katmışsınız. İyi de olmuş.

Bu noktada öncelik hangisinde olacak diyorsunuz onu anlamadım?
Muhittin hoca yazmış demişsiniz de....

yldzelektronik

Alıntı yapılan: muhittin_kaplan - 06 Ocak 2014, 19:54:36
vector:

interrupt oluştuğunda gitmesi gereken bir hafıza adresi var buna interrupt vektörü deniliyor. kesme yapısı öncelikli ise buna bağlı olarak int. oluştuğunda gitmesi gereken hafıza adresi yani vektörü de fazla olmalı.

örnek vereyim,

PICFalanFilanda
High Kesmenin vectoru (hafıza adresi)   0x0004
Low Kesmenin vectoru (hafıza adresi)   0x0005

Bizler aslında program yazarken  Şunu Yazıyoruz

yüksek tanımladığımız

intRb0_req{

}

program belleğindeki başlangıç adresini 0x0004 e yazıyoruz .
High Int oluştuğunda PC hemen 0x0004 adresine gidip oradan tanımlı olan Fonksiyona gidiyor.
Low ınt geldiğinde 0x0005 e gidip oradan aldığı degerle Low Kesme Fonksiyonuna Gidiyor.

Diye biliyorum PIC te. Yanlışım Varsa Düzeltiniz
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

robomaster

Yani yazılımda tanımladığım öncelikler, donanımın önünemi geçer? Onu anlamadım?

yldzelektronik

Alıntı yapılan: robomaster - 06 Ocak 2014, 20:23:39
Yani yazılımda tanımladığım öncelikler, donanımın önünemi geçer? Onu anlamadım?

Hocam bir kez 04 adresine gidiyorsun ya.Orada bakıyorsun hangi int kaynağının flagı set ona göre işlem yapıyorsun.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

robomaster

Bu arada bazı derleyiciler interrupt içinden foknksiyon çağırmaya da izin vermiyordu. Mesela microc sonradan düzeltdi galiba.

muhittin_kaplan




http://ww1.microchip.com/downloads/en/devicedoc/39632c.pdf

sayfa 59

mesaj birleştirme:: 06 Ocak 2014, 20:34:32

Alıntı yapılan: robomaster - 06 Ocak 2014, 20:30:53
Bu arada bazı derleyiciler interrupt içinden foknksiyon çağırmaya da izin vermiyordu. Mesela microc sonradan düzeltdi galiba.
pekte Mantıklı değil zaten.

robomaster

Muhittin hocam sağol paylaşım için.

carirt

PIC32MX serisinde donanımsal stack olayını kaldırmışlar performansı düşürdüğü için.Yazılımsal stack var.

Tagli

Nasıl yani, stack için donanım desteğini tümüyle mi kaldırmışlar? Bu pek mantıklı gelmedi bana. Mesela 16-bit PIC'lerde stack'i yönetmek için özel register'lar ve komutlar var. Stack esnek ama, nereye kadar genişleyeceği donanım tarafından değiştirilebiliyor. Ayrıca, yazılım da isterse bu stack'e veri yığabiliyor.
Gökçe Tağlıoğlu

carirt

Alıntı yapılan: Tagli - 06 Ocak 2014, 21:16:24
Nasıl yani, stack için donanım desteğini tümüyle mi kaldırmışlar? Bu pek mantıklı gelmedi bana. Mesela 16-bit PIC'lerde stack'i yönetmek için özel register'lar ve komutlar var. Stack esnek ama, nereye kadar genişleyeceği donanım tarafından değiştirilebiliyor. Ayrıca, yazılım da isterse bu stack'e veri yığabiliyor.
datasheett te öyle yazıyor yalnız interrupt olayı bayağı bi ayrıntılı

The PIC32 generates interrupt requests in response to interrupt events from peripheral modules. The Interrupt module exists external to the CPU logic and prioritizes the interrupt events before presenting them to the CPU.
The PIC32 Interrupts module includes the following features:
•Up to 96 interrupt sources
•Up to 64 interrupt vectors
•Single and Multi-Vector mode operations
•Five external interrupts with edge polarity control
•Interrupt proximity timer
•Seven user-selectable priority levels for each vector
•Four user-selectable subpriority levels within each priority
•User-configurable shadow set based on priority level. (This feature is not available on all devices; refer to the specific device data sheet for availability.)
•Software can generate any interrupt
•User-configurable Interrupt Vector Table (IVT) location
•User-configurable interrupt vector spacing

ayrıntılı olması demek zevkli demek bence hayalimizdeki herşeyi yapabiliyoruz birde mikroelektronikanın derleyicisini kullanıyorum bütün interrupt özelliklerine destek veriyor "Multi Tasking" bile yaptım çok eğlenceli

iyildirim

Alıntı yapılan: Tagli - 06 Ocak 2014, 21:16:24
Nasıl yani, stack için donanım desteğini tümüyle mi kaldırmışlar? Bu pek mantıklı gelmedi bana. Mesela 16-bit PIC'lerde stack'i yönetmek için özel register'lar ve komutlar var. Stack esnek ama, nereye kadar genişleyeceği donanım tarafından değiştirilebiliyor. Ayrıca, yazılım da isterse bu stack'e veri yığabiliyor.

16-32 bit piclerde özel bir stack alanı yok hocam. Ram in tümü kullanılabilir.
Kaldırılmış kelimesini hard olarak yapılabilen herşey soft olarak da aynı performans da yapılabildiği  için özel bir hardware olarak yok yada stack a özel adlandırılmamış gibi düşünmek daha doğru olur sanırım.

SP olarak adlandırılan özel bir register yok. Register lerin bir tanesi bu iş için kullanılıyor. Push-pop yerine şu registerin içeriğini, bu registerin gösterdiği adrese yaz şeklinde relative adresle ram yazılıp, okunuyor. SP olarak kullanımda genel bir register tercihi var tabii.