Bus SPI entre deux arduino

Bonjour,
j'ai un problème sur l'envoi de 4 bytes d'une Méga vers un Nano

Code Mēga Master :

#include <SPI.h>
void setup()
{
spi.begin;
}

void loop()
{
if (Valid == 1)
{
digitalWrite(SS, LOW); // enable Slave Select
SPI.transfer (11);
SPI.transfer (DataA);
SPI.transfer (12);
SPI.transfer (DataB);
digitalWrite(SS, HIGH); // disable Slave select

  Valid = 0;      
}

Code Nano Slave :
void setup()
{
Serial.begin (9600);
SPCR |= bit (SPE); //Slave
pinMode (MISO, OUTPUT);
process_it = false;
SPI.attachInterrupt();
}
ISR (SPI_STC_vect)
{
Data1 = SPDR; // grab byte from SPI Data Register
Data2 = SPDR;
Data3 = SPDR;
Data4 = SPDR;
process_it = true;
}

void loop()
{
if (process_it)
{

  Serial.println (Data1);
  Serial.println (Data2);
  Serial.println (Data3);
  Serial.println (Data4);                
  process_it = false;
}

Mon problème, je reçois bien la valeur Data1 et 3 fois la valeur Data4.
Merci pour vos réponses.
}

At every run of the SPI_STC interrupt handler only one byte is available in the SPDR register. You have to code the needed buffer yourself.

Jettes un oeil à cet exemple; peux tu voir l'erreur que t'as faite?

Try by re-formatting your ISR() as per following logic:

ISR (SPI_STC_vect)
{
    Data1[i] = SPDR; // grab byte from SPI Data Register
    i++;
    if(i == 4)
    {
       process_it = true;
    }
}

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. ➜ déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans "Les bonnes pratiques du Forum Francophone”

Merci à tous, l'erreur est réparée.