Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Instruksi ini mencakup cara menghubungkan dua OOBoards menggunakan I2C.
Langkah 1: Menghubungkan ke Bus Jaringan I2C
Ada dua bus I2C di OOBoards, bus lokal, dan bus jaringan.
Kode OOPIC pada dasarnya adalah bahasa yang ditafsirkan, yaitu "kode" disimpan dalam EEPROM, dan dibaca/diinterpretasikan oleh mikroprosesor secara real time. EEPROM menggunakan bus LOCAL I2C untuk berkomunikasi dengan mikrokontroler. Jika Anda melihat bus lokal ini di osiloskop, Anda akan melihat obrolan yang konstan. Pada board OOBoards, bus lokal yang terhubung ke konektor I2C, ini belum tentu yang kita inginkan. Bus NETWORK biasanya adalah bus yang digunakan untuk berkomunikasi dengan perangkat lain/opik, pada OOBoards bus ini tidak memiliki konektor. Untuk mengakses bus ini, Anda harus menyolder kabel ke pin 42 dan 37 mikrokontroler (masing-masing ditandai N_SDA, N_SCL pada skema).
Langkah 2: Tambahkan Resistor Pullup
Setelah koneksi SDA dan SCL dibuat pada setiap prosesor, kedua papan dapat
dihubungkan bersama dengan menghubungkan SDA ke SDA, SCL ke SCL, dan menghubungkan kabel arde yang sama di antara papan. Anda juga akan memerlukan resistor pull-up di setiap baris (saya menggunakan 12k, tapi itulah yang saya miliki). Perhatikan bahwa Anda hanya memerlukan satu resistor pullup per baris untuk total dua resistor (bukan 4).
Langkah 3: Program Budak
Sekarang koneksi fisik sudah ada, Anda perlu memprogram mikrokontroler slave. Saya menambahkan beberapa kode di bawah ini yang akan membantu Anda memulai.
Redupkan SLAVE As New oDDELinkDim LED As New oDIO1Sub Main() &aposset alamat I2C kita menjadi 2 (catatan, ini harus sesuai dengan remote &alamat alamat yang kita atur dalam kode master) ooPIC. Node = 2 &apossetup LED LED. IOLine = 5 LED. Direction = cvOutput &aposnow, tautkan output objek DDELink kita ke &posto LED, dan nyalakan…sekarang secara otomatis, LED akan berkedip SLAVE. Output. Link(LED) SLAVE. Operate = cvTrueEnd Sub
Langkah 4: Program Master
Terakhir, program mikrokontroler master. Perhatikan baik-baik baris yang menyetel properti. Location DDELink: Kecuali jika ini disetel dengan benar, ini TIDAK akan berfungsi!
Redupkan Master Seperti Baru oDDELinkDim wire Seperti Baru oWireDim hz1 Sebagai Baru oBitSub Main() &aposkan penghitung waktu 1 detik ke bit yang dapat kita akses &apostis bit ini sekarang akan beralih kabel sekali per detik. Input. Link(ooPIC. Hz1) wire. Output. Link(hz1) wire. Operate = cvTrue &aposthis menyetel alamat I2C mikrokontroler lokal kami &apostthe I2C interface tidak aktif sampai alamat disetel ooPIC. Node = 1 &apossekarang kita setup objek DDELink kita, input kita adalah bit hz1 &aposting bahwa objek juga memiliki properti. Output yang digunakan &aposketika kita berada dalam mode terima Master. Input. Link(hz1) &aposthis adalah alamat I2C dari mikrokontroler jarak jauh, perhatikan bahwa &aposin kode budak, kami menyuruhnya memiliki alamat 2 Master. Node = 2 &aposugh…ini adalah bagian yang jelek, ini adalah "alamat" dari DDELink &aposobject di ruang memori slave&aposs. Untuk mengetahui nomor ini, &aposkita perlu membuka dan mengkompilasi kode slave, lalu masuk ke View->Compiled Code. &aposcari sesuatu seperti: &aposL*. Construct. Begin;Dim as new oDDELink &aposwhere * adalah angka apa saja, dan merupakan nama objek DDELink Anda &aposin kode budak Anda. Baris tepat di bawahnya harus membaca sesuatu seperti: &aposC0020:041;This.. Address &aposthe number di sebelah kanan &apos:&apos adalah alamat dari objek DDELink slave Master. Location = 41 &aposthis memberitahu objek yang akan kita kirim data (mis., salin data dari properti. Input &aposto properti slaves.output (perhatikan, jika Anda mengatur ini untuk menerima, ini adalah kebalikannya) Master. Direction = cvSend &apostturn on, tapi belum ada yang terjadi… Master. Operate = cvTrue Lakukan &aposperiksa untuk melihat apakah kita sedang mentransmisikan data Jika Master. Transmitting = cvFalse Kemudian &aposting nilai ini ke 1 akan menyebabkan master mengirim nilai ke slave &aposnote, ini secara otomatis direset ke 0 setelah selesainya transmisi Master. Sync = 1 End If LoopEnd Sub