Инструкции

Справочный раздел

В этом разделе Вы найдетё инструкции, справочники, и всевозможные хелпы по использованию программного обеспечения.

Разделы инструкций

В сети

Пользователей: 71
Из них просматривают:
Аналоги: 25. Видео: 1. Даташиты: 25. Инструкции: 5. Магазин: 1. Новости: 4. Остальное: 1. Производители: 2. Теги: 1. Форум: 6.
Участников: 2
Гостей: 69

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.
Оглавление

Wire.setWireTimeout()

Описание
Устанавливает тайм-аут для передачи в режиме Ведущего.

 
Примечание

эти тайм-ауты почти всегда указывают на основную проблему, такую ​​как неправильное поведение устройств, шум, недостаточное экранирование или другие проблемы с электричеством. Эти тайм-ауты предотвратят зависание вашего скетча, но не решат эти проблемы. В таких ситуациях часто (также) происходит повреждение данных, которое не приводит к тайм-ауту или другой ошибке и остается незамеченным. Поэтому, когда происходит тайм-аут, вполне вероятно, что некоторые данные, ранее прочитанные или записанные, также повреждены. Могут потребоваться дополнительные меры для более надежного обнаружения таких проблем (например, контрольные суммы или обратное чтение записанных значений) и устранения их (например, полный сброс системы). Этот тайм-аут и такие дополнительные меры следует рассматривать как последнюю линию защиты, когда, возможно, вместо этого следует устранить основную причину.

 

Синтаксис

Wire.setWireTimeout(timeout, reset_on_timeout)
Wire.setWireTimeout()

 

Параметры

timeout a timeout: тайм-аут в микросекундах, если ноль, то проверка тайм-аута отключена
reset_on_timeout: если true, то проводное оборудование будет автоматически перезагружено по тайм-ауту.
 
Когда эта функция вызывается без параметров, настраивается время ожидания по умолчанию, которого должно быть достаточно для предотвращения зависаний в типичной конфигурации с одним Ведущим.

 

Возвращаемые значения

нет

 

Пример

#include <Wire.h>

void setup() {
  Wire.begin(); // join i2c bus (address optional for master)
  #if defined(WIRE_HAS_TIMEOUT)
    Wire.setWireTimeout(3000 /* us */, true /* reset_on_timeout */);
  #endif
}

byte x = 0;

void loop() {
  /* First, send a command to the other device */
  Wire.beginTransmission(8); // transmit to device #8
  Wire.write(123); // send command
  byte error = Wire.endTransmission(); // run transaction
  if (error) {
    Serial.println("Error occured when writing");
      if (error == 5)
        Serial.println("It was a timeout");
  }

  delay(100);

  /* Then, read the result */
  #if defined(WIRE_HAS_TIMEOUT)
    Wire.clearWireTimeoutFlag();
  #endif
  byte len = Wire.requestFrom(8, 1); // request 1 byte from device #8
  if (len == 0) {
    Serial.println("Error occured when reading");
    #if defined(WIRE_HAS_TIMEOUT)
    if (Wire.getWireTimeoutFlag())
      Serial.println("It was a timeout");
    #endif
  }

  delay(100);
}

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

Разное

Интересно

Обработанные водным раствором щелочи стальные контакты (например, батарейного отсека переносной магнитолы или пульта ДУ) никогда не заржавеют.

Похожие инструкции