LCD kontrolü

Başlatan ChiliPepper, 29 Haziran 2022, 12:40:35

ChiliPepper

Herkese iyi günler. Elimde 8574 modülü bağlı bir 2*16 lcd var ve "i2c_Flex_LCD" header dosyası ile kullanıyorum. Merak ettiğim konu şu 2 adet 16f1939(sda,scl yolları ortak) ile bu lcdye ayrı ayrı zamanlarda master-slave yapmadan veri yazdırabilir miyim.Mesela pic'lere buton bağlayıp sadece o butana bastığım pic'teki veriler yazdırılırsın diğer pic'in i2c yolu disable kalsın. Böyle bir yöntem var mı acaba ya da birbirleriyle haberleştirmek zorunda kalmadan yapılabilir mi ? kolay gelsin arkadaşlar.

striger

modul uzerindeki a0 a1 a2 adres pinleri kullanrak farkli adresler tanımlayıp aynı data hattı uzerinden haberlesilebilir, i2c_flex_lcd de de adresler aynı sekilde duzenlenmeli tabi

ChiliPepper

Alıntı yapılan: striger - 29 Haziran 2022, 14:25:53modul uzerindeki a0 a1 a2 adres pinleri kullanrak farkli adresler tanımlayıp aynı data hattı uzerinden haberlesilebilir, i2c_flex_lcd de de adresler aynı sekilde duzenlenmeli tabi

İki pic'i tek lcd'de çalıştırmaya çalışıyorum nasıl modul üzerinden farklı adres verebilirim ?

kimlenbu

"TCA9548A I2C Multiplexer" diye aratırsanız pahalı bir çözüm olur ama aklıma gelen ilk yöntem bu oldu. Ayrıca i2c izolatörleri var, enable ucu olanlardan seçip kullanabilirsiniz. İzole kaynak kullanmayınca nasıl çalışırlar hiç denemedim.

ChiliPepper

Alıntı yapılan: kimlenbu - 29 Haziran 2022, 15:30:52"TCA9548A I2C Multiplexer" diye aratırsanız pahalı bir çözüm olur ama aklıma gelen ilk yöntem bu oldu. Ayrıca i2c izolatörleri var, enable ucu olanlardan seçip kullanabilirsiniz. İzole kaynak kullanmayınca nasıl çalışırlar hiç denemedim.

teşekkürler araştırayım bunları ama önceliğim yazılımsal olarak çözebilmek tabi.

ChiliPepper

Şuanki denememde 1.pic'te yazdırılan yazılar normalken 2.pice geçtiğimde sapıtıyor tekrar 1.ye geçince düzeliyor çakıştıkları için muhtemelen. Boşta olan pic'i bir şekilde disable etmeye çalışıyorum ama yolunu bulamadım. i2c_stop() ve disable_interrupts(i2c_flex_lcd) şeklinde engellemeye çalıştım ama olmadı. Konuya çok da hakim olmadığım için çözemedim.

Sozuak

40001574E  adlı ilgili  datasheette bölüm 24.3 de multi host olabilir hatta diye anlatmış oraları bir oku görmediysen.

ChiliPepper

Alıntı yapılan: Sozuak - 29 Haziran 2022, 16:21:5640001574E  adlı ilgili  datasheette bölüm 24.3 de multi host olabilir hatta diye anlatmış oraları bir oku görmediysen.
Teşekkürler baktım şimdi ama ccs c de nasıl uygulayacağımı çözemedim.

mehmet

Mculardan biri master olur ve I²C adresini
yönetir. Butonlar aktif olduklarında bir
çıkış diğer mcu ya "display bende" mesajı
yollar. Ana mcu buna göre adres belirler.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

ChiliPepper

Alıntı yapılan: mehmet - 29 Haziran 2022, 18:55:52Mculardan biri master olur ve I²C adresini
yönetir. Butonlar aktif olduklarında bir
çıkış diğer mcu ya "display bende" mesajı
yollar. Ana mcu buna göre adres belirler.
Kusura bakmayın çözümü gösterdiniz büyük ihtimalle ama daha acemiyim ve i2c de ilk defa kullanıyorum. Tam olarak display bende mesajından sonra boştaki pici nasıl durdurucağımı çözemedim çakışma yapmaya devam ediyor. Birini master birini slave yaptığımda sadece master lcd yazdırıyor, ikisini master yapınca lcdye uzak olan pic normal çalışıyor yakın olan kafayı yiyor. Boşta olanı i2c_stop(), disable_interrupts(i2c_flex_lcd), disable_interrupts(int_ssp) kodlarını deneyerek durdurmaya çalıştım hala çözüm bulamadım

mehmet

I²C olarak her iki cihazda master olacak.
Ancak yönetim olarak biri master ve I²C
adresini yönetecek.
Diyelim ki 1.mcu adres yönetiyor.
1. mcunun butonuna basınca 1. mcu display
adresini değiştirecek ve 2. mcuya haber.
verecek.
2. mcunun butonuna basınca; önce 1. mcuya
haber verecek. 1. mcu 2.mcu ya ait I²C
adresini verecek. 2. mcu displaya yazacak.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

Cemre.

Farklı bir MCU ailesinde bu işin, master olan MCU'nun işini bitirdikten sonra kendini Slave olarak konfigure etmesi ve yine gerektiğinde Master durumuna geçerek yapılabileceğini okumuştum. Düşününce mantıklı çünkü Slave durumuna geçtiğinizde sizin adresinize kimse konuşmuyorsa hatta müdahale etmezsiniz ve diğerleri kendi aralarında konuşabilirler. Sırası gelen MCU ne zaman Master olacak derseniz, şöyle bir mantık yürütülebilir. Master olan MCU diğer Master olabilen ama o an Slave olan MCU'nun adresine konuşarak ben birazdan hattı boşaltacağım bilgisini gönderebilir. Bu durumda Master olabilen Slave MCU yeterli süre bekleyip Master moduna geçer ve bu durum sürekli tekrar edilir.

ChiliPepper

Sorun çözüldü kendi hatamdan kaynaklı picleri sectiğim buton bacaklarından birini yanlışlıkla adc pini olarak da kullanmışım. 2 pici master olarak seçip sadece butona basilinca lcdye yazdir dediğimde picler arasi herhangi bir haberleşmeye gerek kalmadan çakışmadan çalışıyorlar. Yardımlarınız için tesekkurler mantığını daha iyi anlamış oldum.