Raspberry Arduino I2c -- Problemi ricezione dei dati dopo n ricezioni


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

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