Obsah:

Spojení dvou karet OOB dohromady pomocí I2C: 4 kroky
Spojení dvou karet OOB dohromady pomocí I2C: 4 kroky

Video: Spojení dvou karet OOB dohromady pomocí I2C: 4 kroky

Video: Spojení dvou karet OOB dohromady pomocí I2C: 4 kroky
Video: Policie ČR: Vyhodnocení nelegální migrace 2023 2024, Červenec
Anonim
Spojení dvou OOBardů dohromady pomocí I2C
Spojení dvou OOBardů dohromady pomocí I2C

Tento návod popisuje, jak propojit dvě OOBardy pomocí I2C.

Krok 1: Připojení k síťové sběrnici I2C

Připojení k síťové sběrnici I2C
Připojení k síťové sběrnici I2C
Připojení k síťové sběrnici I2C
Připojení k síťové sběrnici I2C

Na OOBoards jsou dvě sběrnice I2C, místní sběrnice a síťová sběrnice.

OOPIC kód je v zásadě interpretovaný jazyk, tj. „Kód“je uložen v EEPROM a mikroprocesorem jej čte/interpretuje v reálném čase. EEPROM používá ke komunikaci s mikrokontrolérem sběrnici LOCAL I2C. Pokud byste se na tento místní autobus podívali na osciloskopu, viděli byste neustálé klábosení. Na deskách OOBoards je místní sběrnice připojena ke konektoru I2C, to není nutně to, co chceme. Síťová sběrnice je obvykle sběrnice, která slouží ke komunikaci s jinými zařízeními/oopics, na OOBoards tato sběrnice nemá konektor. Abyste se dostali na tuto sběrnici, musíte pájet vodiče na piny 42 a 37 mikrokontroléru (na schématu označené N_SDA, N_SCL).

Krok 2: Přidejte vytahovací rezistory

Jakmile jsou na každém procesoru vytvořena připojení SDA a SCL, mohou dvě desky

propojit propojením SDA na SDA, SCL na SCL a propojením společného zemnicího vodiče mezi deskami. Budete také potřebovat pull-up odpor na každém řádku (použil jsem 12k, ale to je přesně to, co jsem ležel kolem). Všimněte si toho, že na celkem dva odpory (ne 4) potřebujete pouze jeden pullup rezistor na řádek.

Krok 3: Naprogramujte Slave

Nyní, když jsou k dispozici fyzická připojení, budete muset naprogramovat podřízený mikrokontrolér. Níže jsem přidal nějaký kód, který by vám měl začít.

Dim SLAVE As New oDDELinkDim LED as New oDIO1Sub Main () & aposset our I2C address to 2 (note, this must match the remote & aposaddress we set in the master code) ooPIC. Node = 2 & apossetup an LED LED. IOLine = 5 LED. Direction = cvOutput & aposnow, propojte výstup našeho objektu DDELink s & aposthe LED a zapněte … nyní automaticky, LED bude blikat SLAVE. Output. Link (LED) SLAVE. Operate = cvTrueEnd Sub

Krok 4: Naprogramujte Master

Nakonec naprogramujte hlavní mikrokontrolér. Věnujte velkou pozornost řádkům, které nastavují vlastnost DDELink. Location: Pokud to není správně nastaveno, NEBUDE to fungovat!

Dim Master jako nový oDDELinkDim drát jako nový oWireDim hz1 jako nový oBitSub Main () & aposlink 1sekundový časovač na bit, ke kterému máme přístup & aposthis bit se nyní bude přepínat drát za sekundu Input. Link (ooPIC. Hz1). Link (hz1) wire. Operate = cvTrue & aposthis nastavuje adresu I2C našeho místního mikrokontroléru & aposthe rozhraní I2C není aktivní, dokud není nastavena adresa ooPIC. Node = 1 & aposnow nastavíme náš objekt DDELink, náš vstup je bit hz1 & aposnote že objekt má také vlastnost. Output, která se používá & když jsme v režimu přijímání Master. Input. Link (hz1) & aposthis je adresa I2C vzdáleného mikrokontroléru, všimněte si, že & aposin slave code, we tell it to have an address of 2 Master. Node = 2 & aposugh… toto je mizerná část, toto je „adresa“DDELink & aposobject v paměťovém prostoru slave & aposs. Abychom zjistili toto číslo, & aposwe musíme otevřít a zkompilovat podřízený kód, poté přejít na View-> Compiled Code. & aposlook něco jako: & aposL *. Construct. Begin; Dim as new oDDELink & aposwhere * je libovolné číslo a je to název vašeho objektu DDELink & aposin your slave code. Řádek bezprostředně pod ním by měl znít takto: & aposC0020: 041; This.. Address & aposthe number to the right of the & apos: & apos is the address of the slave DDELink object Master. Location = 41 & aposthis says the object that we will be sending data (tj. zkopírujte data z naší vlastnosti. Input & aposto the slave.output (všimněte si, pokud toto nastavíte na příjem, je to naopak) Master. Direction = cvSend & aposturn it on, but nothing happening yet… Master. Operate = cvTrue Proveďte & aposcheckujte, zda aktuálně přenášíme data If Master. Transmitting = cvFalse Potom & aposetting této hodnoty na 1 způsobí, že master pošle hodnotu slave & aposnote, toto se automaticky resetuje na 0 po dokončení přenosu Master. Sync = 1 End If LoopEnd Sub

Doporučuje: