iki pic arasında döngüden bağımsız iletişim sağlanabilir mi ?

Başlatan elektroacemi, 13 Ekim 2012, 12:29:11

elektroacemi

Merhaba arkadaşlar, pic18f4520 ile 8 tuşlu bir devre yapmak istedim, ama port sayım yetmediği için 8 tuşu önce 16f628a ile kontrol edip 4 porta çıkış verdim. basılan tuşa göre port çıkışları değişiyor, hiç tuşa basılmadığında 4 port da lojik 1 de. Bu 4 port pic18f4520 nin 4 portuna bağlı. Bu sayede pic18f4520 deki 4 poru kontrol ederek hangi tuşa basıldığını anlıyorum. Bu şekilde tek yönlü şekilde işimi görüyorum. Ama daha fazla port kullana bilmek için,daha kolay bir şekilde karşılıklı iletişim sağlanabiilr mi ? Yani iki pici birbirine bağlayıp, port genişletme yapılmış gibi kullanılabilir mi ?

pea

Bir sürü haberleşme yöntemi ve donanımı var kullandığınız mikrokontrolcülerde.Datasheet'lerine göz atın biraz.

fahri-


serhat1990

İki pic arası haberleşmede seri iletişim kullan . Şaseleri ortak bağla . Tx -Rx hatları üzerinden çok rahat haberleşirsin  Çift yönlü .

elektroacemi

Alıntı yapılan: serhat1990 - 13 Ekim 2012, 12:48:31
İki pic arası haberleşmede seri iletişim kullan . Şaseleri ortak bağla . Tx -Rx hatları üzerinden çok rahat haberleşirsin  Çift yönlü .

bu şekilde haberleşince döngü içinde haberleşme konutları kullanılıyor mu ? yoksa ana döngüden bağımsız sürekli iletişim sağlanıyor mu ?

mesaj birleştirme:: 13 Ekim 2012, 12:57:05

Alıntı yapılan: fahri- - 13 Ekim 2012, 12:42:45
shift registarlarla port çoğullama yapabilirsiniz.

bunu biraz daha açabilir misin ?

serhat1990

Alıntı yapılan: elektroakif - 13 Ekim 2012, 12:54:32
bu şekilde haberleşince döngü içinde haberleşme konutları kullanılıyor mu ? yoksa ana döngüden bağımsız sürekli iletişim sağlanıyor mu ?

mesaj birleştirme:: 13 Ekim 2012, 12:57:05

bunu biraz daha açabilir misin ?

Bir komut işletilirken aynı anda veri gönderip alamazsın . Ama kesmelerle yapabilirsin ...

elektroacemi

Alıntı yapılan: serhat1990 - 13 Ekim 2012, 13:29:59
Bir komut işletilirken aynı anda veri gönderip alamazsın . Ama kesmelerle yapabilirsin ...

iki pic var biri tuş kontrolu, diğeri ana işlemleri yapacak, ana işlemi yapacak olanı arasıra döngü içerisinde okuturum, ama diğerinin gönderdiği anda okuması zor...

ByTEK

Alıntı yapılan: serhat1990 - 13 Ekim 2012, 12:48:31
İki pic arası haberleşmede seri iletişim kullan . Şaseleri ortak bağla . Tx -Rx hatları üzerinden çok rahat haberleşirsin  Çift yönlü .

Arkadaşın dediği gibi RX-tx hattı üzerinden haberleşmek daha iyi olacaktır. ana işlemleri yapacak olan pic için seri haberleşme kesmesi kullanın. o sırada pic ne işlem yapacak olursa olsun tuşları okuyan picten seri bilgi geldiği gibi kesmeye girecek ve tuş değerini seri bilgi ile alacaktır. Proton bilmediğim için sadece fikir verebilirim.

serhat1990


esensoy

ikincinin gönderdiği anda birincinin okuması için ilk pic e external interrupt kuracaksın,
portb0 pull up ı true olarak ayarlayacaksın,
tuş okuyan pic e de tuşa basıldığında herhangi bir biti 0 a çektireceksin
ikinci pic in o bitini birinci pic in rb0 ına bağlayacaksın,
birinci pic in ext kesmesine de okuma rutinini koyacaksın,
boylelikle ana program işlerken sadece tuşa basıldığında okuma yapacak,
ikinci pic in 0 a çektiğin ayağını okuma sonunda tekrar 1 e çekmen gerek, bunu da ya süre tutarak, ya da birinci picten başka bir bacak ile bilgi vererek yaptırabilirsin.

hepsi bir yana, sadece tuş okumak için ayrı bir pic kullanmak gereği gerçekten var mı? birinci pic için tuş okuma süresi gerçekten çok mu uzun da sen ayrı bir pic kullanıyorsun?
nasıl bir tuş okuduğunu bilmiyorum, piclerden ve okuduğun tuş takmından bahsedersen belki hepsinin tek işlemcide toplanabileceği bir yöntem söylenebilir,
En tehlikeli an "zafer" anıdır.

elektroacemi

Alıntı yapılan: esensoy - 13 Ekim 2012, 13:43:09
ikincinin gönderdiği anda birincinin okuması için ilk pic e external interrupt kuracaksın,
portb0 pull up ı true olarak ayarlayacaksın,
tuş okuyan pic e de tuşa basıldığında herhangi bir biti 0 a çektireceksin
ikinci pic in o bitini birinci pic in rb0 ına bağlayacaksın,
birinci pic in ext kesmesine de okuma rutinini koyacaksın,
boylelikle ana program işlerken sadece tuşa basıldığında okuma yapacak,
ikinci pic in 0 a çektiğin ayağını okuma sonunda tekrar 1 e çekmen gerek, bunu da ya süre tutarak, ya da birinci picten başka bir bacak ile bilgi vererek yaptırabilirsin.

hepsi bir yana, sadece tuş okumak için ayrı bir pic kullanmak gereği gerçekten var mı? birinci pic için tuş okuma süresi gerçekten çok mu uzun da sen ayrı bir pic kullanıyorsun?
nasıl bir tuş okuduğunu bilmiyorum, piclerden ve okuduğun tuş takmından bahsedersen belki hepsinin tek işlemcide toplanabileceği bir yöntem söylenebilir,






Şema şeklinde koydum ama net belli olmadı, 8 tuşu 6pin ile kontrol ediyorum, 6 pini 16f628 sürekli kontrol ediyor, ve 4 porttan diğer pice çıkış veriyor, tuşa basılmadığı sürece 4 portta lojik 1 de, tuşa basılınca her tuş için farklı kombinasyon, pic 18f4520 nin diğer portları dolu. Döngüden bağımsız haberleşme yapabilirsem tuşların yanına led koyup, 18f4520 den o ledleri yakacağım, bu sayede 16f628 inde portlarını kullanmış olacağım...

esensoy

8 tuş 3 bit ile ifade edilir, kalan bir biti de tuşa basıldı bilgisi oalrak 4520 ye verebilirsin,
000   tuş1
001   tuş2
010   tuş3
011   tuş4
100   tuş5
101   tuş6
110   tuş7
111   tuş8
En tehlikeli an "zafer" anıdır.

elektroacemi

Alıntı yapılan: esensoy - 13 Ekim 2012, 14:09:21
8 tuş 3 bit ile ifade edilir, kalan bir biti de tuşa basıldı bilgisi oalrak 4520 ye verebilirsin,
000   tuş1
001   tuş2
010   tuş3
011   tuş4
100   tuş5
101   tuş6
110   tuş7
111   tuş8

yaptığım da o şekilde zaten, sonuç olarak 4 port kullanılıyor, ben port sayısını azaltmak istiyorum.

Andromeda

Usart modülünü bir ara kullanmıştım f628 deki...
programdan bağımsız bilgi gelebiliyor..çünkü ayrı bir devre.
sadece bilginin gelip gelmediği kontrol ediliyor..oda  birkaç mikro saniye sürüyor..
yeni bilgi geldi ise gerekli komutlar ile bilgiyi alıp istediğin değişkene atıyorsun.
" Tanrı, iradesini hakim kılmak için yeryüzündeki iyi insanları kullanır, yeryüzündeki kötü insanlar ise kendi iradelerini hakim kılmak için Tanrı'yı kullanırlar." ..." Tanrı'dan mesaj gelmiyor, biz Tanrı'ya mesaj gönderiyoruz"

esensoy

kullandığın bu mcularda programdan bağımsız bilgi gelmez, yani teknik olarak gelmez,
çünkü aynı anda 1 komut işletir,
fakat ext interrupt veya rs232 interruptı kurarsan,
bilgi geldiği anda ana program çalışması bırakılır, ilgili kesme rutini işletilir ve program kaldığı yere döner,
4520 de rs232 uçların boşta ise yani kullanılabilir ise buradan göndermen daha kolay olacaktır (4 bit ile göndermeye göre)
En tehlikeli an "zafer" anıdır.