stavo cercando di realizzare un mio piccolo progetto interfacciando un raspberry e un arduino mega tramite i2c dove il raspberry è il master e l'arduino lo slave .
sembra che tutto funzioni al primo test poi mi sono accorto che dopo un po di tempo succede un qualcosa che non riesco spiegarmi
ogni 2 minuti un script python richiede di leggere 4 byte dall' arduino tramite questo codice
mentre l'arduino manda 4 byte in quest'ordine 3, 232 ,2 ,230
come vi dicevo sembra tutto funzionare, ma dopo un certo numero di letture
anzichè ricevere sempre 3, 232 ,2 ,230 inizio ricevere
232 ,2 ,230 ,3 e durano per diverse volte poi 2 ,230 ,3, 232
praticamente non viene mantenuto l'ordine ... e non capisco il perchè anche se numeri restano gli stessi
grazie per l'aiuto
saluti
tutto funziona almeno per un breve peri
sembra che tutto funzioni al primo test poi mi sono accorto che dopo un po di tempo succede un qualcosa che non riesco spiegarmi
ogni 2 minuti un script python richiede di leggere 4 byte dall' arduino tramite questo codice
code: [select]
def readnumber():
for in range(0, 4):
v=bus.read_byte(address)
print v
time.sleep(1)
return dty
mentre l'arduino manda 4 byte in quest'ordine 3, 232 ,2 ,230
code: [select]
void setup() {
wire.begin(slave_address);
wire.onreceive(receivedata);
index = 0;
wire.onrequest(senddata);
}
void loop() {
delay(2000);
.....
}
// callback received data
void receivedata(int bytecount) {
.....
}
// callback sending data
void senddata() {
uint8_t buffer[4];
buffer[0]=3;
buffer[1]=232;
buffer[2]=2;
buffer[3]=230;
wire.write(buffer[index]);
++index;
if (index >= 4) {
index = 0;
}
}
come vi dicevo sembra tutto funzionare, ma dopo un certo numero di letture
anzichè ricevere sempre 3, 232 ,2 ,230 inizio ricevere
232 ,2 ,230 ,3 e durano per diverse volte poi 2 ,230 ,3, 232
praticamente non viene mantenuto l'ordine ... e non capisco il perchè anche se numeri restano gli stessi
grazie per l'aiuto
saluti
tutto funziona almeno per un breve peri
mi sembra che manchi qualche cosa:
code: [select]
...
wire.begintransmission(4); // transmit device #4
(byte = 0; < 4; ++) {
wire.write(buffer[i]);
}
wire.endtransmission(); // stop transmitting
...
Arduino Forum > International > Italiano > Generale (Moderator: leo72) > Raspberry Arduino I2c -- Problemi ricezione dei dati dopo n ricezioni
arduino
Comments
Post a Comment