Inhaltsverzeichnis:

Verbinden von zwei OOBoards mit I2C - Gunook
Verbinden von zwei OOBoards mit I2C - Gunook

Video: Verbinden von zwei OOBoards mit I2C - Gunook

Video: Verbinden von zwei OOBoards mit I2C - Gunook
Video: Ganz einfach zwei Angelschnüre verbinden, z.B. zum vorschalten von Flurocarbon auf Barsch und Zander 2024, Juli
Anonim
Verbinden von zwei OOBoards mit I2C
Verbinden von zwei OOBoards mit I2C

Dieses anweisbare behandelt, wie man zwei OOBoards mit I2C verbindet.

Schritt 1: Anschließen an den I2C-Netzwerkbus

Anschließen an den I2C-Netzwerkbus
Anschließen an den I2C-Netzwerkbus
Anschließen an den I2C-Netzwerkbus
Anschließen an den I2C-Netzwerkbus

Es gibt zwei I2C-Busse auf den OOBoards, einen lokalen Bus und einen Netzwerkbus.

Der OOPIC-Code ist im Wesentlichen eine interpretierte Sprache, dh der "Code" wird im EEPROM gespeichert und vom Mikroprozessor in Echtzeit gelesen/interpretiert. Das EEPROM verwendet den LOKALEN I2C-Bus, um mit dem Mikrocontroller zu kommunizieren. Wenn Sie diesen lokalen Bus auf dem Oszilloskop betrachten würden, würden Sie ständiges Geschnatter sehen. Auf den OOBoards-Boards ist der lokale Bus das, was mit dem I2C-Anschluss verbunden ist, das ist nicht unbedingt das, was wir wollen. Der NETWORK Bus ist normalerweise der Bus, der verwendet wird, um mit anderen Geräten/oopics zu kommunizieren, auf den OOBoards hat dieser Bus keinen Anschluss. Um auf diesen Bus zuzugreifen, müssen Sie Drähte an die Pins 42 und 37 des Mikrocontrollers löten (im Schaltplan jeweils mit N_SDA, N_SCL gekennzeichnet).

Schritt 2: Fügen Sie die Pullup-Widerstände hinzu

Sobald SDA- und SCL-Verbindungen auf jedem Prozessor hergestellt sind, können die beiden Boards

miteinander verbunden werden, indem SDA an SDA, SCL an SCL angeschlossen und ein gemeinsames Erdungskabel zwischen den Platinen angeschlossen wird. Sie benötigen auch einen Pull-up-Widerstand auf jeder Leitung (ich habe 12k verwendet, aber das hatte ich nur herumliegen). Beachten Sie, dass Sie für insgesamt zwei Widerstände (nicht 4) nur einen Pullup-Widerstand pro Leitung benötigen.

Schritt 3: Programmieren Sie den Slave

Nun, da die physischen Verbindungen vorhanden sind, müssen Sie den Slave-Mikrocontroller programmieren. Ich habe unten einen Code hinzugefügt, der Ihnen den Einstieg erleichtern sollte.

Dim SLAVE As New oDDELinkDim LED As New oDIO1Sub Main() = cvOutput &aposnow, verbinde den Ausgang unseres DDELink-Objekts mit &apost der LED und schalte sie ein…jetzt blinkt die LED automatisch SLAVE. Output. Link(LED) SLAVE. Operate = cvTrueEnd Sub

Schritt 4: Programmieren Sie den Master

Schließlich programmieren Sie den Master-Mikrocontroller. Achten Sie genau auf die Zeilen, die die. Location-Eigenschaft des DDELink festlegen: Wenn dies nicht richtig eingestellt ist, funktioniert dies NICHT!

Dim Master As New oDDELinkDim wire As New oWireDim hz1 As New oBitSub Main() &aposlink den 1-Sekunden-Timer mit dem Bit, auf das wir zugreifen können &aposthis bit wird jetzt einmal pro Sekunde umschalten wire. Input. Link(ooPIC. Hz1) wire. Output. Link(hz1) wire. Operate = cvTrue &apost dies setzt die I2C-Adresse unseres lokalen Mikrocontrollers &aposdie I2C-Schnittstelle ist erst aktiv, wenn eine Adresse gesetzt ist ooPIC. Node = 1 &aposjetzt richten wir unser DDELink-Objekt ein, unsere Eingabe ist das Bit hz1 &aposbeachten Sie, dass die Das Objekt hat auch eine. Output-Eigenschaft, die verwendet wird, wenn wir uns im Empfangsmodus Master. Input. Link(hz1) befinden Master. Node = 2 &aposugh…das ist der beschissene Teil, das ist die "Adresse" des DDELink &aposobject im Slave&aposs Speicherbereich. Um diese Nummer herauszufinden, müssen wir den Slave-Code öffnen und kompilieren und dann zu View->Compiled Code gehen. &apossuchen Sie nach etwas wie: &aposL*. Construct. Begin;Dim as new oDDELink &aposwo * ist eine beliebige Zahl und ist der Name Ihres DDELink-Objekts &aposin Ihrem Slave-Code. Die Zeile direkt darunter sollte in etwa lauten: &aposC0020:041;This.. Address &apostDie Zahl rechts von &apos:&apos ist die Adresse des Slave-DDELink-Objekts Master. Location = 41 &aposthis teilt dem Objekt mit, das wir senden werden data (dh kopieren Sie Daten von unserer. Input-Eigenschaft &aposto der Slave-.output-Eigenschaft (beachten Sie, wenn Sie dies auf Empfangen setzen, ist es umgekehrt) Master. Direction = cvSend &apostschaltet es ein, aber es passiert noch nichts… Master. Operate = cvTrue Machen Sie &aposcheck, um zu sehen, ob wir gerade Daten übertragen Wenn Master. Transmitting = cvFalse Dann wird &apossetzen dieses Wertes auf 1 bewirkt, dass der Master den Wert an den Slave sendet &aposnote, dieser wird nach Abschluss der Übertragung automatisch auf 0 zurückgesetzt Master. Sync = 1 End If LoopEnd Sub

Empfohlen: