Inhoudsopgave:

Twee OOBoards met elkaar verbinden met behulp van I2C: 4 stappen
Twee OOBoards met elkaar verbinden met behulp van I2C: 4 stappen

Video: Twee OOBoards met elkaar verbinden met behulp van I2C: 4 stappen

Video: Twee OOBoards met elkaar verbinden met behulp van I2C: 4 stappen
Video: How to Winterize an Outboard Motor | Winterizing a 2 stroke Outboard Motor | Boats.net 2024, December
Anonim
Twee OOBoards met elkaar verbinden met behulp van I2C
Twee OOBoards met elkaar verbinden met behulp van I2C

Dit instructable behandelt hoe u twee OOBoards kunt aansluiten met behulp van I2C.

Stap 1: Verbinding maken met de I2C-netwerkbus

Verbinding maken met de I2C-netwerkbus
Verbinding maken met de I2C-netwerkbus
Verbinding maken met de I2C-netwerkbus
Verbinding maken met de I2C-netwerkbus

Er zijn twee I2C-bussen op de OOBoards, een lokale bus en een netwerkbus.

De OOPIC-code is in wezen een geïnterpreteerde taal, dwz de "code" wordt opgeslagen in EEPROM en in realtime gelezen/geïnterpreteerd door de microprocessor. De EEPROM gebruikt de LOKALE I2C-bus om te communiceren met de microcontroller. Als je naar deze lokale bus op de oscilloscoop zou kijken, zou je constant geratel zien. Op de OOBoards-kaarten is de lokale bus wat is aangesloten op de I2C-connector, dit is niet noodzakelijk wat we willen. De NETWORK-bus is meestal de bus die wordt gebruikt om met andere apparaten/oopics te communiceren, op de OOBoards heeft deze bus geen connector. Om toegang te krijgen tot deze bus, moet u draden solderen op pinnen 42 en 37 van de microcontroller (respectievelijk gemarkeerd met N_SDA, N_SCL op het schema).

Stap 2: Voeg de pullup-weerstanden toe

Zodra SDA- en SCL-verbindingen op elke processor zijn gemaakt, kunnen de twee kaarten:

worden met elkaar verbonden door SDA aan SDA, SCL aan SCL te verbinden, en een gemeenschappelijke aardedraad tussen de kaarten aan te sluiten. Je hebt ook een pull-up-weerstand op elke lijn nodig (ik gebruikte 12k, maar dat was precies wat ik had liggen). Merk op dat je slechts één pullup-weerstand per lijn nodig hebt voor een totaal van twee weerstanden (niet 4).

Stap 3: Programmeer de Slave

Nu de fysieke verbindingen er zijn, moet je de slave-microcontroller programmeren. Ik heb hieronder wat code toegevoegd die je op weg zou moeten helpen.

Dim SLAVE als nieuw oDDELinkDim LED als nieuw oDIO1Sub Main() &zet ons I2C-adres op 2 (let op, dit moet overeenkomen met het afstandsbedieningsadres dat we in de mastercode hebben ingesteld) ooPIC. Node = 2 &apossetup an LED LED. IOLine = 5 LED. Direction = cvOutput &aposnow, koppel de output van ons DDELink-object aan &apostde LED, en zet hem aan… nu automatisch, zal de LED knipperen SLAVE. Output. Link(LED) SLAVE. Operate = cvTrueEnd Sub

Stap 4: Programmeer de Master

Programmeer tot slot de master-microcontroller. Let goed op de regels die de eigenschap. Location van de DDELink instellen: Tenzij dit correct is ingesteld, zal dit NIET werken!

Dim Master als nieuw oDDELinkDim-draad Als nieuw oWireDim hz1 Als nieuw oBitSub Main() &aposlink de timer van 1 seconde aan het bit waartoe we toegang hebben &aposthis bit schakelt nu eenmaal per seconde wire. Input. Link(ooPIC. Hz1) wire. Output. Link(hz1) wire. Operate = cvTrue &aposthis stelt het I2C-adres van onze lokale microcontroller in &aposthe I2C-interface is niet actief totdat een adres is ingesteld ooPIC. Node = 1 &aposNu we ons DDELink-object instellen, is onze invoer de bit hz1 &apos. object heeft ook een. Output-eigenschap die wordt gebruikt &aposwanneer we in de ontvangstmodus zijn Master. Input. Link(hz1) &aposthis is het I2C-adres van de externe microcontroller, merk op dat &aposin de slavecode, we vertellen dat deze een adres van 2 heeft Master. Node = 2 &aposugh…dit is het waardeloze deel, dit is het "adres" van het DDELink &aposobject in de geheugenruimte van de slave. Om dit nummer te achterhalen, &aposwe moeten de slave-code openen en compileren, en dan naar View->Compiled Code gaan. &aposzoek iets als: &aposL*. Construct. Begin;Dim als nieuw oDDELink &aposwhere * is een willekeurig getal en is de naam van uw DDELink-object &aposin uw slave-code. De regel direct eronder zou iets moeten zijn als: &aposC0020:041;This.. Address &aposhet nummer rechts van de &apos:&apos is het adres van het slave DDELink-object Master. Location = 41 &aposthis vertelt het object dat we zullen verzenden data (dwz kopieer data van onze. Input eigenschap &aposto de slaves.output eigenschap (let op, als je dit instelt om te ontvangen, is het het tegenovergestelde) Master. Direction = cvSend &apostzet het aan, maar er gebeurt nog niets… Master. Operate = cvTrue Do &aposcheck om te zien of we momenteel gegevens verzenden Als Master. Transmitting = cvFalse Dan &aposals deze waarde op 1 zet, zal de master de waarde naar de slave sturen &aposnote, dit wordt automatisch teruggezet naar 0 na voltooiing van de verzending Master. Sync = 1 End If LoopEnd Sub

Aanbevolen: