pic18f interrupt uygulamalarıyla ilgili önemli uyarı

Başlatan Samurai, 09 Eylül 2005, 20:28:59

Samurai

CCS-C'deki ölümcül hata! Tüm dünyada ilk burada:))
Arkadaşlar bu mesajı internet kafeden yazdığım için bendeki CCS PIC-C'nin versiyonunu tam hatırlamıyorum, pch 3.123 olsa gerek. Bu derleyicide interrupt'larla ilgili çok önemli bir hata var. İlgilenenler bilir pic18'lerin iki farklı interrupt sistemi vardır. Birisi 16f'lerle aynı olan eski mod, diğeri öncelikli interrupt kullanmaya izin veren yeni mod. Oluşturulan asm kodlarını gördüğümde reha muhtarlık durumu farketmiş bulundum. PIC-C interrupt rutinlerini eski moda göre düzenliyor ancak donanımı yeni moda göre kuruyor. Bu yüzden hemen main() başlangıcında interrupt modunu ayarlayan ilgili birimi eski moda göre ayarlamazsanız (ilgili pdf'ye bakın, bahsettiğim sadece tek bir bit) yoğun interrupt kullanan programlarınız güvenli çalışmaz. Örneğin bir interrupt içinde öncelikli başka bir interrupt çalışırsa rutin içindeki olası fsr kullanımlarında (mesela indeksli değişken kullanıyorsanız) ram içeriğinin bozguna uğrama ihtimali var. İnterruptları bolca kullanan bazı projelerimde bir sürü saçma sapan işler dönüyordu mesela uzaktan kumandaya bastığımda 7seg ekranda saçma sapan karakterler görünüp kayboluyordu, nice komplo teorisinden sonra işin farkına varıp akabinde düzeltip nihayet huzura ermiş idim:) İyi çalışmalar.