İçindekiler:

I2C Kullanarak İki OOBoard'u Birbirine Bağlama: 4 Adım
I2C Kullanarak İki OOBoard'u Birbirine Bağlama: 4 Adım

Video: I2C Kullanarak İki OOBoard'u Birbirine Bağlama: 4 Adım

Video: I2C Kullanarak İki OOBoard'u Birbirine Bağlama: 4 Adım
Video: Секреты подключения нескольких LCD экранов к Arduino по I2C 2024, Temmuz
Anonim
I2C Kullanarak İki OOBoard'u Birbirine Bağlama
I2C Kullanarak İki OOBoard'u Birbirine Bağlama

Bu talimat, I2C kullanarak iki OOBoard'un nasıl bağlanacağını kapsar.

Adım 1: I2C Ağ Veri Yoluna Bağlanma

I2C Ağ Veri Yoluna Bağlanma
I2C Ağ Veri Yoluna Bağlanma
I2C Ağ Veri Yoluna Bağlanma
I2C Ağ Veri Yoluna Bağlanma

OOBoard'larda iki I2C veri yolu, bir yerel veri yolu ve bir ağ veri yolu vardır.

OOPIC kodu esasen yorumlanmış bir dildir, yani "kod" EEPROM'da saklanır ve mikroişlemci tarafından gerçek zamanlı olarak okunur/yorumlanır. EEPROM, mikrodenetleyici ile iletişim kurmak için YEREL I2C veri yolunu kullanır. Osiloskopta bu yerel veriyoluna bakacak olsaydınız, sürekli gevezelik görürdünüz. OOBoards kartlarında, I2C konektörüne bağlı olan yerel veriyoludur, bu bizim istediğimiz şey değildir. AĞ veriyolu genellikle diğer cihazlar/oopics ile iletişim kurmak için kullanılan veriyoludur, OOBoard'larda bu veri yolunun bir konektörü yoktur. Bu veri yoluna erişmek için, kabloları mikrodenetleyicinin 42 ve 37 numaralı pinlerine lehimlemelisiniz (şematikte sırasıyla N_SDA, N_SCL olarak işaretlenmiştir).

Adım 2: Pullup Dirençlerini Ekleyin

Her işlemcide SDA ve SCL bağlantıları yapıldıktan sonra, iki kart

SDA'yı SDA'ya, SCL'yi SCL'ye bağlayarak ve kartlar arasında ortak bir topraklama kablosu bağlayarak birbirine bağlanabilir. Ayrıca her hatta bir pull-up direncine ihtiyacınız olacak (12k kullandım, ama bu sadece etrafta yattığım şeydi). Toplam iki direnç (4 değil) için hat başına yalnızca bir çekme direncine ihtiyacınız olduğunu unutmayın.

Adım 3: Köleyi Programlayın

Artık fiziksel bağlantılar orada olduğuna göre, bağımlı mikro denetleyiciyi programlamanız gerekecek. Başlamanız için aşağıya bazı kodlar ekledim.

SLAVE Yeni ODDELinkDim LED Yeni Olarak oDIO1Sub Main() &imzalı I2C adresimiz (bunun ana kodda belirlediğimiz uzak &aposaddress ile eşleşmesi gerekir) ooPIC. Node = 2 &bir LED LED'i ayarlayın. IOLine = 5 LED. Yön = cvOutput &aposnow, DDELink nesnemizin çıkışını &aposthe LED'e bağlayın ve açın…şimdi otomatik olarak LED yanıp sönecektir SLAVE. Output. Link(LED) SLAVE. Operate = cvTrueEnd Sub

Adım 4: Master'ı Programlayın

Son olarak, ana mikrodenetleyiciyi programlayın. DDELink'in. Location özelliğini ayarlayan satırlara çok dikkat edin: Bu doğru ayarlanmadıkça, bu çalışmayacaktır!

Dim Master Yeni Olarak oDDELinkDim kablosu Yeni Olarak oWireDim hz1 Yeni Olarak oBitSub Main() &aposlink 1 saniyelik zamanlayıcıyı erişebildiğimiz bit'e &aposbu bit şimdi her saniyede bir kablo arasında geçiş yapacaktır. Input. Link(ooPIC. Hz1) kablosu. Output. Link(hz1) tel. Operate = cvTrue &aposbu, yerel mikrodenetleyicimizin I2C adresini ayarlar &aposthe I2C arayüzü, bir adres ayarlanana kadar aktif değildir ooPIC. Node = 1 &aposnow DDELink nesnemizi kurduk, girdimiz hz1 bitidir &aposnotun nesne ayrıca bir. Output özelliğine sahiptir ve &apos alma modundayken kullanılır Master. Input. Link(hz1) &aposbu, uzak mikrodenetleyicinin I2C adresidir, unutmayın ' bağımlı kodunda, 2 adresine sahip olmasını söylüyoruz Master. Node = 2 &aposugh…bu boktan kısım, bu DDELink &aposobject'in "slave" hafıza alanındaki "adresi". Bu sayıyı bulmak için, bağımlı kodu açıp derlememiz ve ardından Görünüm->Derlenmiş Kod'a gitmemiz gerekiyor. &aposL*. Construct. Begin;Dim as new oDDELink &aposwhere * herhangi bir sayıdır ve DDELink nesnenizin adıdır ve bağımlı kodunuzdur. Hemen altındaki satırda şöyle bir şey okunmalıdır: 'Bu.. Adres '&apos'un sağındaki sayı:', bağımlı DDELink nesnesinin adresidir Master. Location = 41 &aposbu, nesneye göndereceğimizi söyler data (yani,. Input özelliğimizden veri kopyalayın &slaves.output özelliğinden kopyalayın (not, bunu almak için ayarlarsanız, tersi olur) Master. Direction = cvSend &aposturn, ama henüz hiçbir şey olmuyor… Master. Operate = cvTrue Şu anda veri gönderip göndermediğimizi görmek için &aposkontrol edin Eğer Master. Transmitting = cvFalse Daha sonra bu değeri 1'e &aposte etmek, master'ın değeri slave'e göndermesine neden olur &aposnote, bu, aktarım Master. Sync tamamlandıktan sonra otomatik olarak 0'a sıfırlanır. = 1 End If LoopEnd Sub

Önerilen: