I2c Master Arduino Nano ---> Arduino DUE

Buon giorno
Scusate per eventuali miei errori Primo accesso al Forum

Arduino IDE 1.8.9

Ho testato protocollo i2c Master Nano to Slave Nano indirizzo 0x04

Collegamenti A4--->A4
A5---> A5
GND---->GND

invio da master comando DOWLOAD ---> Slave
Ricevo risposta da Slave DOWNLOAD OK

Tutto OK

In realtà ho bisogno di Master Nano to Slave Arduino DUE indirizzo 0x04

Uso gli stessi Sketch

Nano DUE

Collegamenti A4--->SDA(20)
A5---> SCL(21)
GND---->GND

Risultato

arduino DUE non riceve mai il comando dal master

Wire.onReceive(receiveEvent);

void receiveEvent(int data) non viene attivata

Il Master invia

while (ok_write > 0) {
Wire.beginTransmission(0x04);

char comando_to_slave[8] = { 0 };
cmd.toCharArray(comando_to_slave, cmd.length() + 1);

Wire.write(comando_to_slave);
//fine trasmissione
ok_write = Wire.endTransmission();

return code ok_write = 2 (received NACK on transmit of address) e qualche volta = 4
Ringrazio per qualsiasi contributo

Benny

Benvenuto,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

nid69ita

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

X nid69ita

Mi sono presentato

Devo fare altre cose o sono a posto ?

Ciao

Benedetto

Ti ricordi che Arduino Nano lavora a 5V e Arduino DUE lavora a 3.3V e che se metti le pull-up verso i 5V puoi danneggiare Arduino DUE, mentre se le metti verso i 3.3V, i livielli potrebbero non essere sufficiento per Arduino Nano?

Esistono appositi I2C Level Converter per questi casi ...

Guglielmo

Grazie Guglielmo

In realta ho fatto i test senza senza pull-up

In extremis un tentativo con pull-up 4,7 ohm su 5v

Come dici tu ho forse danneggiato SDA,SCL o tutto Arduino DUE?

La soluzione migliore credo sia I2C Level Converter

Ciao

Benedetto

Senza le pull-up NON può funzionare (le porte I2C sono open-drain) e con Arduino DUE NON puoi usare i 5V, quindi ...
... usa sempre un adattatore di livello e le pull-up corrette.

Guglielmo