Spisu treści:

Łączenie dwóch OOBoards razem za pomocą I2C: 4 kroki
Łączenie dwóch OOBoards razem za pomocą I2C: 4 kroki

Wideo: Łączenie dwóch OOBoards razem za pomocą I2C: 4 kroki

Wideo: Łączenie dwóch OOBoards razem za pomocą I2C: 4 kroki
Wideo: S011. Szybkie i proste połączenie na kołki drewniane (znaczniki do kołków) 2024, Lipiec
Anonim
Łączenie dwóch płyt OOBoard razem za pomocą I2C
Łączenie dwóch płyt OOBoard razem za pomocą I2C

Ta instrukcja opisuje, jak połączyć dwie płyty OOBoard za pomocą I2C.

Krok 1: Podłączanie do magistrali sieciowej I2C

Podłączanie do magistrali sieciowej I2C
Podłączanie do magistrali sieciowej I2C
Podłączanie do magistrali sieciowej I2C
Podłączanie do magistrali sieciowej I2C

Na płytach OOBoard znajdują się dwie magistrale I2C, magistrala lokalna i magistrala sieciowa.

Kod OOPIC jest zasadniczo językiem interpretowanym, tj. „kod” jest przechowywany w pamięci EEPROM i odczytywany/interpretowany przez mikroprocesor w czasie rzeczywistym. EEPROM wykorzystuje magistralę LOCAL I2C do komunikacji z mikrokontrolerem. Gdybyś spojrzał na ten lokalny autobus na oscyloskopie, zobaczyłbyś nieustanną paplaninę. Na płytach OOBoards magistrala lokalna jest podłączona do złącza I2C, niekoniecznie tego chcemy. Magistrala NETWORK jest zwykle magistralą używaną do komunikacji z innymi urządzeniami/optykami, na płytach OOBoards ta magistrala nie ma złącza. Aby uzyskać dostęp do tej magistrali należy przylutować przewody do pinów 42 i 37 mikrokontrolera (oznaczone odpowiednio N_SDA, N_SCL na schemacie).

Krok 2: Dodaj rezystory podciągające

Po nawiązaniu połączeń SDA i SCL na każdym procesorze obie płyty mogą:

być połączone ze sobą, podłączając SDA do SDA, SCL do SCL i podłączając wspólny przewód uziemiający między płytami. Będziesz także potrzebował rezystora podciągającego na każdej linii (użyłem 12k, ale to właśnie leżało wokół). Zauważ, że potrzebujesz tylko jednego rezystora podciągającego na linię, co daje w sumie dwa rezystory (nie 4).

Krok 3: Zaprogramuj Slave

Teraz, gdy istnieją fizyczne połączenia, musisz zaprogramować podrzędny mikrokontroler. Dodałem poniżej kod, który powinien Ci zacząć.

Dim SLAVE As New oDDELinkDim LED As New oDIO1Sub Main() &ustaw nasz adres I2C na 2 (uwaga, musi on odpowiadać zdalnemu &adresowi ustawionemu w kodzie głównym) ooPIC. Node = 2 &ustaw diodę LED. IOLine = 5 LED. Direction = cvOutput &aposnow, połącz wyjście naszego obiektu DDELink z &apostthe LED i włącz je…teraz automagicznie dioda LED zacznie migać SLAVE. Output. Link(LED) SLAVE. Operate = cvTrueEnd Sub

Krok 4: Zaprogramuj Master

Na koniec zaprogramuj główny mikrokontroler. Zwróć szczególną uwagę na linie, które ustawiają właściwość. Location DDELink: Jeśli nie jest to ustawione poprawnie, to NIE zadziała!

Dim Master Jak nowy przewód oDDELinkDim Jak nowy oWireDim hz1 Jak nowy oBitSub Main() &apołącz 1-sekundowy timer z bitem, do którego mamy dostęp &aposthis bit będzie teraz przełączał się raz na sekundę przewodu. Input. Link(ooPIC. Hz1) wire. Output. Link(hz1) wire. Operate = cvTrue &apostto ustawia adres I2C naszego lokalnego mikrokontrolera &apostoże interfejs I2C nie jest aktywny dopóki nie zostanie ustawiony adres ooPIC. Node = 1 obiekt ma również właściwość. Output, która jest używana &aposgdy jesteśmy w trybie odbioru Master. Input. Link(hz1) &apostjest to adres I2C zdalnego mikrokontrolera, zauważ, że w kodzie slave mówimy mu, aby miał adres 2 Master. Node = 2 &aposugh…to jest gówniana część, to jest "adres" &aposobject DDELink w pamięci slave'a. Aby obliczyć tę liczbę, musimy otworzyć i skompilować kod slave, a następnie przejść do View->Compiled Code. &aposszukaj czegoś takiego: &aposL*. Construct. Begin;Dim as new oDDELink &aposwhere * jest dowolną liczbą i jest nazwą twojego obiektu DDELink &aposin twojego kodu podrzędnego. Wiersz bezpośrednio pod nim powinien wyglądać mniej więcej tak: &aposC0020:041;Ten.. Adres 'liczba po prawej stronie 'apos:' to adres obiektu podrzędnego DDELink Master. Location = 41 'aposthis informuje o obiekcie, który będziemy wysyłać data (tzn. skopiuj dane z naszej właściwości. Input & aposto właściwość slaves.output (uwaga, jeśli ustawisz tę opcję na otrzymywanie, jest odwrotnie) Master. Direction = cvSend &aposturn it on, ale jeszcze nic się nie dzieje… Master. Operate = cvTrue Do &apossprawdź, czy aktualnie przesyłamy dane If Master. Transmitting = cvFalse Następnie &ustawienie tej wartości na 1 spowoduje, że master wyśle wartość do slave'a. = 1 Koniec, jeśli Pętla Koniec Sub

Zalecana: