Pic ana döngü kilitlenme durumu

Başlatan bulut_01, 05 Ocak 2022, 23:42:19

bulut_01

iyi günler picproje ailesi günlerdir uğraştığım ama içinden çıkamadıgım bir durum var pic16f1829 ile yaptıgım motor sürücü devresi var bu devreyi uzakdan kumandası ile kontrol ediyorum problemim gelen datalardan sonra pic kilitlendiği.Ancak kilitlenme esnasında alt fonksiyonlar kesmeler ve timer çalışıyor ana döngü kilitleniyor.Debug yaptıgımda kilitlenme anında program counter durdugunu görüyorum.Program counter neden durur ana döngü neden kilitlenir bu konuda fikirleriniz nedir ? Debug ekran resimleri koydum bir kaçtane.





YENİLMEZ..

tunayk

Herşey çalışıp da ana döngü kilitlenmez. Program kodundaki bir mantık hatasından dolayı bir yerde çakılıyor, veya döngü dışına kaçıyor muhtemelen.
 Kodlarınızı tekrar gözden  geçirin. Devreyi ve kodu parça parça test edin.
Tanımladığınız değişken tipleri ve adreslerini kontrol edin.  Biri diğerini eziyor olabilir. Değişkende taşma olabilir.
16bit ve 32bit sayıların ışlem yapıldığı yerlere bakın. Derleyici 32bitlik sayıyı 16bit olarak işliyor olabilir. CCS te var böyle huylar :)

bulut_01

İşin garip yanıda o hersey çalışıyor ana döngü çalışmıyor rda timerlar alt fonksiyon hepsini tek tek test ettim çalıştıgını biliyorum sadece ana döngüdeki kodlar çalışmıyor rda aldıgım dataları birleştiriyorun menchster kodu çözüyorum + keeloq çözüyorum çıkan veri dogruysa çıkıs veriyorum bu kilitlenme olayı kumandadan art art datalar geldiğinde farklı zaman aralıklarında kilitlenme oluyor 1 haftadır kafayı yedirtdi bana denemediğim yöntem kalmadı artık.
YENİLMEZ..

sifirzero

Hocam ufak bir delay yeri bile hataya sebeb oluyor.
sifirzero.blogspot.com sifirrzero@gmail.com iman hem nurdur hem kuvvettir

bulut_01

Programda delay yok hocam çok mecbur kalmadıgım durum haricinde delay kullanmam.
YENİLMEZ..

tunayk

Alıntı yapılan: bulut_01 - 06 Ocak 2022, 00:02:55İşin garip yanıda o hersey çalışıyor ana döngü çalışmıyor rda timerlar alt fonksiyon hepsini tek tek test ettim çalıştıgını biliyorum sadece ana döngüdeki kodlar çalışmıyor rda aldıgım dataları birleştiriyorun menchster kodu çözüyorum + keeloq çözüyorum çıkan veri dogruysa çıkıs veriyorum bu kilitlenme olayı kumandadan art art datalar geldiğinde farklı zaman aralıklarında kilitlenme oluyor 1 haftadır kafayı yedirtdi bana denemediğim yöntem kalmadı artık.

O zaman çok büyük bir ihtimalle program bir flag in 1 veya 0 olmasını beklediği bir yerde takılıp kalıyor. Eğer interrupt ile çalışan fonksiyonlar varsa , flag beklerken başka bir yere gidiyor, döndüğünde ise flag kaçmış oluyor muhtemelen.  Art arda gelen haberleşme taleplerinds  tıkanıyorsa ışlem sıralaması hatalıdır.

bulut_01

Ana döngüde 2 tane kod var 1cisi motordan saydıgı puls sayısı ayarlanmıs sayıya geldiğinde motor durdurması ikinci kodda ise rda buffer dolmus ise ana döngüdeki flag 1 yapıyorum ordan alt fonksiyona yönleniyor kilitlenme anında ana döngü toggle yaptıgım led devamlı yandıgını veya söndüğünü görüyorum gelen data tıkanma söz konusu olamaz buffer dolunca degerlendirip hemen siliyorum farklı bir durum var çözemedim.
YENİLMEZ..

ilyas KAYA

Rf ile çalışıyorsanız kesme yapmak mantıklı değil çünkü civarda surekli parazit sinyaller vardir.  Her parazit sinyalde kesmeye gider ve çıkmaz.

Rf modülü söküp aynı veriyi kablo ile göndermeyi deneyin muhtemelen sorun çözüldüğünu göreceksiniz.

sezgin05

Uzaktan kumandalı bir scorboard projesinde aynı sorunu yaşamıştım. Ne yaptıysam içinden çıkamadım. Bende RF kod çözme işini küçük bir pic (12F675) ile yapmıştım. Sorunsuz çalışıyor yıllardır.

alikeskinkilic

muhtemelen biliyorsundur ama ASM ile çalışıyorsan "pic simulator ide" nin yeni sürümü var yeni nesil picleri asm kodlar üzerinden gayet başarılı simule ediyor takıldığı komutu muhtemelen orada gösterir yanlış hatırlamıyorsam 30 gün beleş .o olmassa proteusta hex yerine "cof" dosyası ile simule et bazen gözden kaçırdığın flag takılmalara sebep oluyor asm nin inceliklerinden olur öyle şeyler

ilyas KAYA

Alıntı yapılan: sezgin05 - 06 Ocak 2022, 09:59:33Uzaktan kumandalı bir scorboard projesinde aynı sorunu yaşamıştım. Ne yaptıysam içinden çıkamadım. Bende RF kod çözme işini küçük bir pic (12F675) ile yapmıştım. Sorunsuz çalışıyor yıllardır.

Aynen bende bu şekilde yapıyorum.
Zamanlama kritik değil se yine tek işlemci ile de yaparım.

Eğer kesmeye bir süre surekli giriyor ise kesmeden çıkartmak gerekiyor gibi bir mantık kurulabilir ama işlem için toplam süre hatası daha fazla oluyor. Kesme yerine tek döngüde kayıp zamanı hesapla yapmak daha kolay.

bulut_01

#11
Bu meselenin kesme ile ilgisi yok tek mcu ile rf uygulamaları tonla var sorunu yeniden gözden geçirecegim.
YENİLMEZ..

dnacikaya

Alıntı yapılan: bulut_01 - 06 Ocak 2022, 12:33:05Bu meselenin kesme ile ilgisi yok tek mcu ile rf uygulamaları tonla var sorunu yeniden gözden geçirecegim.
Motor çalışırken etkiliyor olabilir.

F493

Selam,

Eğer datayı Uart üzerinden alıyorsanız, Overrun Error, Framing Error , Parity Error vb hataları kontrol etmenizde fayda var. Bundan dolayı sonraki dataları alamaz hale gelirsiniz.

Esen kalın.

bulut_01

Alıntı yapılan: F493 - 06 Ocak 2022, 17:48:20Selam,

Eğer datayı Uart üzerinden alıyorsanız, Overrun Error, Framing Error , Parity Error vb hataları kontrol etmenizde fayda var. Bundan dolayı sonraki dataları alamaz hale gelirsiniz.

Esen kalın.
Sorunum ana döngü yani while altındaki kodların çalışmaması kilitlenmesi kesmelerde timer vs gibi kısımlarda sorun yok while altındaki kodlar çalışmaması.
YENİLMEZ..