Pic Donmalarında Resetleme ?

Başlatan BİLİRSHOP, 08 Mayıs 2015, 08:18:05

BİLİRSHOP

Arkadaşlar başlıktaki konu hakkında farklı yöntemlerin olduğunu okumuştum.

1-WDT yi aktif ederek.
Yukarıda ki yöntemin bazı durumlarda istememesine rağmen reset attığını okudum.Yani aslında bu soruna tam anlamıyla çözüme kavuşturmuyor.

2-Nerde okuduğumu bulamadım ama "kodu yazılımın istediğin yerine ekliyorsunuz eğer döngü bu koda verdiğiniz süre boyunca ulaşmazsa reset atıyor" yazıyordu.
Ve bence bu yukardakine göre hem süre ayarlanabilmesi hemde kodun istediğimiz yerine eklenebilmesi çok daha verimle bu işi çözüme kavuşturabileceğini düşünüyorum.
Acaba 2 bahsettiğim yöntemin ayrıntıları nedir.Ve tüm piclerde kullanılabilir mi?

Arkadaşlar benim bildiğim bu 2 yöntem.Eğer bildiğiniz daha yararlı olacağını düşündüğünüz yöntemler varsa buraya yazarsanız ihtiyacı olan arkadaşlar bu başlık altından istediği yöntemi kullanabilir.

Ben yukarıdaki bahsettiğim 2. yöntemin ayrıntılarını araştırıp ulaşabilirsem burada paylaşacağım.

OG

Forumda çok yerde çok defa paylaşıldı.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Gökhan BEKEN

Alıntı yapılan: BİLİRSHOP - 08 Mayıs 2015, 08:18:05
bence bu yukardakine göre hem süre ayarlanabilmesi hemde kodun istediğimiz yerine eklenebilmesi çok daha verimle bu işi çözüme kavuşturabileceğini düşünüyorum.
WDT zaten sen istediğin an aktif oluyor, istediğin an iptal edebiliyorsun.

WDT yerine timer ile zaman aşımı yapabilirsin. Şöyle:
main() {
bayrak=0;
TimerAktif(1000); //aşağıdaki iş için, timer'ı başlat. 1saniye sonra hala islem fonksiyonundan çıkmamışsa, resetle
islem(); //uzun sürebilen bir fonksiyon ve işlemciyi kilitlememesi için uğraşıyoruz
TimerPasif(); //buraya kadar geldiyse zaten timer'la işimiz kalmamış ve işlemci kilitlenmemiş demektir.
bayrak=0;
}
TimerKesmesi(){ // Timer açıksa 1 saniye aralıkla buraya girer
    if(bayrak==0)resetle();
}
Özel mesaj okumuyorum, lütfen göndermeyin.

skara1214

WDT ile timer arasında mantık olarak uçurum vardır.WDT güvenlik içindir kendi özel clocku vardır ve picin kilitlenme (saçmalama zamanları ) için kullanılır fakat timer yazılımsal olarak picin tamamen düzgün çalıştığı varsayımından yola çıkarak zaman aşımına bakar.
Herkes ölür ama herkes gerçekten yaşamaz

Gökhan BEKEN

Timer ile sadece beklendik yerlerde takılırsa kurtarabilirsiniz. Beklemediğiniz bir yerde, yani PIC'in sapıttığı bir durumda işe yaramaz.
Mesela PIC'e bağlı bir modülden cevap bekliyorsunuz, ama 1 saniyedir cevap vermiyorsa timer'lı örneği kullanmak mümkün. Çünkü bu durumda suç, PIC'in değil, slave modülün.

WDT her türlü takılma için bu işi otomatik yapar.
Timer kullanmanız programa yazılımsal olarak müdahele ettiğiniz için extradan (mikro saniyeler mertebesinde de olsa) ölü zaman katacak. Çünkü her işlem bir beklemedir.
Özel mesaj okumuyorum, lütfen göndermeyin.

fahri-

Pic de osilatör çalışmadı kitlendi. Timer işe yaramaz. Ama WDT internal RC osilatörden beslendiği için sistemi her durumda resetler. Onun için timerlardan farklıdır.

Gökhan BEKEN

WDT'nin zaten registeri var, istediğin yerde aktif, istemediğin yerde pasif edebilirsin. Datasheet'te detayları incele bence.
örnek:
#pragma config WDTE = OFF //sigorta ayarında kapalı olduğu halde aşağıdakiler çalışıyor:
WDTPS0 = 0x1011;
SWDTEN = 1; //wdt aktif
SWDTEN = 0; //wdt pasif
Özel mesaj okumuyorum, lütfen göndermeyin.

OG

Alıntı YapOG hocam en azından mesajınıza sistemin adını ekleseydiniz araştırma yapmama yardımcı olurdunuz.Ama şu anda bahsettiğim sistemin adını bilmediğim için onlarca konuyu okuyup vakit kaybetmek istemiyorum.
Sistemle kastını anlayamadım. Kelime olarak aramak gerekiyor mesela "reset" kelimesi ile.

Üstte yazdığımı açarsam, çok kişi, konunun çok defa konuşulduğunu bildiği için erinecek yani ya aynı şeyleri baştan yazacak ya da senin yerine arayıp bulacak link verecek.

Foruma şöyle bir iyilik yapabilirsin, aramaları yapıp elemelerini de yaparak linkleri paylaşabilirsin. Anlaşılmayan veya daha açılmasını istediğin yerler olursa o bölümleri tartışmaya açabilirsin. Bu sayede forum da, bu konu hakkında toplu bir topic e kavuşur.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

F.T

hangi işlemciyi kullanacaksınız.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

F.T

WDT nin kullanım amacı zaten belirlenen süre içinde işlemci işlemini yapamazsa reset atması bu süreyide registerlerden ayarlıyorsun.program içinde bu register ayarını yapıp süre değiştirilirmi bilmiyorum.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.