Подтверждение передачи и получения данных по i2c от MASTER к SLAVE

Документация по языку программирования, программное обеспечение
Правила форума
Матрос
Сообщения: 1
Зарегистрирован: 21 июл 2016, 19:34

Подтверждение передачи и получения данных по i2c от MASTER к SLAVE

Сообщение Матрос » 05 авг 2016, 23:10

Ардуино приобрел недавно. Пришло время разобраться с протоколом I2C. Попробовал демоскетчи из библиотеки Wire-работают. При использовании скетчей Master Writer-Slave Receiver при обрыве связи добавил в мастере "индикацию-сообщение" при проблеме передачи.

Возможно-ли в СЛЕЙВЕ сделать так же?

Привожу скетч мастера:

Код: Выделить всё

#include <Wire.h>
int led=13;
void setup()
{
  Wire.begin(); // join i2c bus (address optional for master)
  Serial.begin(9600);
  pinMode(led,OUTPUT);
 
}

byte x = 0;

void loop()
{
  Wire.beginTransmission(4); // transmit to device #4
  Serial.println("1");
  Wire.write("x is ");        // sends five bytes
      Serial.println("2");
  Wire.write(x);              // sends one byte 
      Serial.println("3");
 if (Wire.endTransmission () == 0)//если передача закончилась корректно , то
 {
   digitalWrite(led,LOW);
    Serial.println("Ok");
 }
 else// если нет- АЛАРМ!
 {
   digitalWrite(led,HIGH);
   Serial.println("Err");
 }
 
  x++;
  delay(500);
}

код SLAVE из папки примеров, стандартный:

Код: Выделить всё

#include <Wire.h>

void setup()
{
  Wire.begin(4);                // join i2c bus with address #4
  Wire.onReceive(receiveEvent); // register event
  Serial.begin(9600);           // start serial for output
}

void loop()
{
  delay(100);
}

// function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany)
{
  while(1 < Wire.available()) // loop through all but the last
  {
    char c = Wire.read(); // receive byte as a character
    Serial.print(c);         // print the character
  }
  int x = Wire.read();    // receive byte as an integer
  Serial.println(x);         // print the integer
}

При восстановлении связи в данном случае обмен данными восстанавливается.

Вернуться в «Вопросы по программированию Ардуино»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей