Pic e ilk elektrik geldiğinde pinler bir an Lojik 1 olmasının nedeni nedir ?

Başlatan elektroacemi, 30 Mayıs 2012, 09:23:39

elektroacemi

Pic e ilk elektrik geldiğinde pinler bir an Lojik 1 olmasının nedeni nedir ?
Bu önlenebilir mi ?

justice_for_all

pini cikis yaparken bu sorun olur bunu onlemenin yolu ise pinleri cikis yapmadan once ilgili lat registerini sifirlamalisin.hangi dili kullaniyosun?
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

Mucit23

Portları giriş veya çıkış olmasını belirlediklen sonra aynı portu sıfırlaman gerekir. Yoksa rastgele değerler alır.

elektroacemi

Alıntı yapılan: justice_for_all - 30 Mayıs 2012, 09:39:52
pini cikis yaparken bu sorun olur bunu onlemenin yolu ise pinleri cikis yapmadan once ilgili lat registerini sifirlamalisin.hangi dili kullaniyosun?

Proton Basic  Kullanıyorum

(teşekkürler)

elektroacemi

Alıntı yapılan: Mucit23 - 30 Mayıs 2012, 09:44:35
Portları giriş veya çıkış olmasını belirlediklen sonra aynı portu sıfırlaman gerekir. Yoksa rastgele değerler alır.

Teşekkürler

JOKERAS

1).LATBbits.LATB1 = 0;               // LAT set edildi,temizlendi.
2).TRISBbits.TRISB1 = 0;             // TRIS Buffer'ı çıkış olarak yönlendirildi.
3).PORTBbits.PORTB1 = 0          // PORT sıfırlandı.

Yukarıdaki sıralama önemli.
Eğer PİC 'ten dışarı veri gönderilecekse işlem LAT üzerinden yapılmalı.
PORT üzerinden yapılacak çıkış işlemi instruction saykılı kadar bir gecikmeye mahal verir.
Çünkü işlemci çıkış olarak yönlendirilmiş PORT'u set etmek için  LAT'ı kurar.

1).TRISBbits.TRISB1 = 0;
2).PORTBbits.PORTB1 = 0;

yada

1).PORTBbits.PORTB1 = 0;
2).TRISBbits.TRISB1 = 0;

bu ikisi tamamen aynı.
Çünkü işlemci belli bir sıra ile bunları kuracak,mesela:
İlk durumda TRIS 0 sonra PORT 0 diyecek ama LAT'taki değer ne?
LAT set edilmediği için PORT boşta,o anki rastgele durum belirsiz.

Ama en ilk durumda önce LAT set edildi iş garanti.
Sonra TRIS çıkış yapıldı sonrada PORT sıfırlandı.


Giriş yada okuma yapılacaksa direkt PORT üzerinden işlem yapılmalı,
TRISBbits.TRISB1 = 1; //TRIS giriş olarak yönlendirildi.
n = PORTBbits.RB1;    //PORT okunuyor.
gibi.

Bence durum budur.