16F876A Port çıkışları hakkında

Başlatan tergek, 22 Şubat 2016, 15:36:34

tergek

-Merhaba, elimde hazır ekteki resimde bulunan negatifle çekilen pnp transistorlu roleden var. 
-3 tane Pic çıkışını normalde dahili high(+5v)ta tutmak istiyorum. Low komutuyla rolemin çekilmesini istiyorum.
-Low'da tutup high'a çekerekte kullanıyorum ancak roleler çok ısınıyor.
Forumda araştırdım Ete hoca 16F628A için "Pullup dirençleri yalnızca giriş yapılmış pinlere uygulanabilir."  Seçilmiş çıkış pinlerini high(+5)da tutamaz mıyız?

Maxim

pullup sadece girişte kullanılır
çıkışları ilk başta high yaparsanız siz low diyene kadar high kalacaktır
mesela high portb.0
röleyi çektirmek için low portb.0 dersiniz, iş bitiminde tekrar high portb.0 dersiniz gene high olur..

ama orada bir gariplik var
high çekerek kullanınca röle ısınması ne demek oluyor

tergek

#2
Elimdeki role pnp transistorlu hazır entegreli kartta, pic çıkışından low verilince rolenin transistörü roleyi high'a çekiyo ve beklemedeyken  sargıları ısınıyor. Kısa süreli işlemlerde kullacagım için transistöre picden high veriliyken bekletmek istiyorum.

Ama portları high'da tutmama rağmen sadece A0 B0 ve C0 5v oluyor digerleri olmuyor

ete

Pinleri çıkış olarak ayrladınızmı?
Programı da görsek sorun daha kolay ve çabuk çözülürdü. Bir şeylerin eksik olduğu ortada.

Ete

tergek

#4
Otomatik çiçek sulama sistemi bu programda portA3'te  tek role kullanılmış ben birbiri ardına sırasıyla 3er saniye arayla  çalışacak portC3'e portC4'e 2 role daha ekleyip planlı zamanda rolelerin transistorünü low ile tetiklemek istiyorum. Teşekkürler.

ete

Sorun görmedim. Bir port pinini HIGH yapmak için o pine karşılık gelen biti"1" yapmanız gerekiyor.
PORTA=%11111111: PORTB=%11111111:PORTC=%11111111 şeklinde komut verirseniz çıkış olarak ayarlanmış pinler bu komutdan etkilenerek hepsi HIGH olurlar. Giriş olan pinler bu komuttan etkilenmezler.
Siz PORTB=1 diyerek Yalnızca PORTB.0 pinini HIGH yapmış oluyorsunuz. Tamamını high yapmak için yukarıda verdiğim şekilde yada yalnızca çıkış olan bitleri bulup ona göre komut vermeniz gerekir. Örneğin sizin C portunda ilk 3 bit giriş yapılmış O halde diğer pinleri HIGH yapmak için PORTC=%11111000 şeklinde komut vermeniz yeterli olur. İlk 3 bite sıfır verdim çünki o pinler giriş olarak çalışıyor. Mesela A portu için TRISA=%00010111 şeklinde komut verilmiş. O halde HIGH yapabileceğiniz bitler;
PORTA=%00101000 şeklinde olur.  A portunda 6 cı ve 7 ci bitlere karşılık gelen pinler olmadığı için onları sıfır olarak verdim.
B portuna direk PORTB=255 yada PORTB=%11111111 şeklinde komut verebilirsiniz. Böylece bütün pinleri HIGH olacaktır.

Ete

tergek

#6
Alıntı yapılan: Maxim - 22 Şubat 2016, 16:20:27
pullup sadece girişte kullanılır
çıkışları ilk başta high yaparsanız siz low diyene kadar high kalacaktır
mesela high portb.0
röleyi çektirmek için low portb.0 dersiniz, iş bitiminde tekrar high portb.0 dersiniz gene high olur..

ama orada bir gariplik var
high çekerek kullanınca röle ısınması ne demek oluyor
Yardımlarınız için teşekkürler ben eksik bilgilerim yüzünden tam sonuca ulaşamadım.

Alıntı yapılan: ete - 22 Şubat 2016, 17:38:36
Sorun görmedim. Bir port pinini HIGH yapmak için o pine karşılık gelen biti"1" yapmanız gerekiyor.
PORTA=%11111111: PORTB=%11111111:PORTC=%11111111 şeklinde komut verirseniz çıkış olarak ayarlanmış pinler bu komutdan etkilenerek hepsi HIGH olurlar. Giriş olan pinler bu komuttan etkilenmezler.
Siz PORTB=1 diyerek Yalnızca PORTB.0 pinini HIGH yapmış oluyorsunuz. Tamamını high yapmak için yukarıda verdiğim şekilde yada yalnızca çıkış olan bitleri bulup ona göre komut vermeniz gerekir. Örneğin sizin C portunda ilk 3 bit giriş yapılmış O halde diğer pinleri HIGH yapmak için PORTC=%11111000 şeklinde komut vermeniz yeterli olur. İlk 3 bite sıfır verdim çünki o pinler giriş olarak çalışıyor. Mesela A portu için TRISA=%00010111 şeklinde komut verilmiş. O halde HIGH yapabileceğiniz bitler;
PORTA=%00101000 şeklinde olur.  A portunda 6 cı ve 7 ci bitlere karşılık gelen pinler olmadığı için onları sıfır olarak verdim.
B portuna direk PORTB=255 yada PORTB=%11111111 şeklinde komut verebilirsiniz. Böylece bütün pinleri HIGH olacaktır.

Ete
Daha ayrıntılı anlatılamazdı.  15 dk gibi kısa sürede öğrenmiş oldum. Tüm forum ekibi ve Ete hoca ya başarılar. Umarım bu forum hiç kapanmaz

Powered by EzPortal