Sommario:

Collegamento di due OOBoard insieme utilizzando I2C: 4 passaggi
Collegamento di due OOBoard insieme utilizzando I2C: 4 passaggi

Video: Collegamento di due OOBoard insieme utilizzando I2C: 4 passaggi

Video: Collegamento di due OOBoard insieme utilizzando I2C: 4 passaggi
Video: Quando provi a fare un complimento a una ragazza... 2024, Luglio
Anonim
Collegamento di due OOBoard insieme utilizzando I2C
Collegamento di due OOBoard insieme utilizzando I2C

Questa istruzione spiega come collegare due OOBoard utilizzando I2C.

Passaggio 1: connessione al bus di rete I2C

Collegamento al bus di rete I2C
Collegamento al bus di rete I2C
Collegamento al bus di rete I2C
Collegamento al bus di rete I2C

Ci sono due bus I2C sulle OOBoard, un bus locale e un bus di rete.

Il codice OOPIC è essenzialmente un linguaggio interpretato, ovvero il "codice" viene memorizzato in EEPROM, e letto/interpretato dal microprocessore in tempo reale. La EEPROM utilizza il bus I2C LOCALE per comunicare con il microcontrollore. Se dovessi guardare questo autobus locale sull'oscilloscopio, vedresti un chiacchiericcio costante. Sulle schede OOBoards, il bus locale è ciò che è collegato al connettore I2C, non è necessariamente quello che vogliamo. Il bus NETWORK è solitamente il bus che viene utilizzato per comunicare con altri dispositivi/oopic, sulle OOBoard questo bus non ha un connettore. Per accedere a questo bus, è necessario saldare i fili ai pin 42 e 37 del microcontrollore (segnati rispettivamente N_SDA, N_SCL sullo schema).

Passaggio 2: aggiungere i resistori di pullup

Una volta effettuate le connessioni SDA e SCL su ciascun processore, le due schede possono

essere collegati tra loro collegando SDA a SDA, SCL a SCL e collegando un filo di terra comune tra le schede. Avrai anche bisogno di un resistore di pull-up su ogni linea (ho usato 12k, ma è proprio quello che avevo in giro). Si noti che è necessario solo un resistore di pullup per linea per un totale di due resistori (non 4).

Passaggio 3: programma lo slave

Ora che ci sono le connessioni fisiche, dovrai programmare il microcontrollore slave. Ho aggiunto del codice di seguito che dovrebbe iniziare.

Dim SLAVE As New oDDELinkDim LED As New oDIO1Sub Main() &imposta il nostro indirizzo I2C su 2 (nota, questo deve corrispondere all'indirizzo remoto che abbiamo impostato nel codice master) ooPIC. Node = 2 &apossetup a LED LED. IOLine = 5 LED. Direction = cvOutput &aposnow, collega l'output del nostro oggetto DDELink a &aposthe LED e accendilo… ora automaticamente, il LED lampeggerà SLAVE. Output. Link(LED) SLAVE. Operate = cvTrueEnd Sub

Passaggio 4: programma il Master

Infine, programma il microcontrollore master. Presta molta attenzione alle righe che impostano la proprietà. Location di DDELink: a meno che non sia impostato correttamente, NON funzionerà!

Dim Master As New oDDELinkDim wire As New oWireDim hz1 As New oBitSub Main() &aposlink il timer di 1 secondo al bit a cui possiamo accedere &aposthis bit ora passerà una volta al secondo wire. Input. Link(ooPIC. Hz1) wire. Output. Link(hz1) wire. Operate = cvTrue &aposthis imposta l'indirizzo I2C del nostro microcontrollore locale &aposl'interfaccia I2C non è attiva fino a quando non viene impostato un indirizzo ooPIC. Node = 1 &aposnow impostiamo il nostro oggetto DDELink, il nostro input è il bit hz1 &aposnota che il l'oggetto ha anche una proprietà. Output che viene utilizzata &aposquando siamo in modalità di ricezione Master. Input. Link(hz1) &aposquesto è l'indirizzo I2C del microcontrollore remoto, si noti che &apos nel codice slave, gli diciamo di avere un indirizzo di 2 Master. Node = 2 &aposugh…questa è la parte schifosa, questo è l'"indirizzo" del DDELink &aposobject nello spazio di memoria dello slave. Per calcolare questo numero, è necessario aprire e compilare il codice slave, quindi andare su Visualizza->Codice compilato. &aposcerca qualcosa come: &aposL*. Construct. Begin;Dim as new oDDELink &aposwhere * è un qualsiasi numero ed è il nome del tuo oggetto DDELink &apos nel tuo codice slave. La riga immediatamente sotto dovrebbe essere qualcosa del tipo: &aposC0020:041;This.. Address &aposil numero a destra di &apos:&apos è l'indirizzo dell'oggetto slave DDELink Master. Location = 41 &aposthis indica l'oggetto che invieremo data (cioè, copia i dati dalla nostra proprietà. Input &aposto la proprietà slaves.output (nota, se lo imposti per ricevere, è l'opposto) Master. Direction = cvSend &aposaccendilo, ma non sta succedendo ancora nulla… Master. Operate = cvTrue Fare &aposcheck per vedere se stiamo attualmente trasmettendo dati Se Master. Transmitting = cvFalse Quindi &apossettando questo valore su 1 farà sì che il master invii il valore allo slave &aposnote, questo viene automaticamente reimpostato su 0 al completamento della trasmissione Master. Sync = 1 End If LoopEnd Sub

Consigliato: