Что в моей программе не так?
- Войдите на сайт для отправки комментариев
Ср, 14/10/2015 - 23:36
Добрый день. Пытаюсь контролировать регистры I2C устройства через Serial MOnitor путем отправки сначала адреса регистра, а затем байта для записи. Но в результате нихрена не пашет. Записывает только 1 символ в каждый цикл.
Вот такая подррограмма:
void setReg() { inNumber = 0; inNumber1 = 0; Serial.println("Enter Register Address"); while (!Serial.available()); // ждем пока не будут введены данные while(Serial.available()) //данные введены, продолжаем программу { char inChar=(Serial.read()-48); //преобразуем ASCII в INT inNumber *=10; inNumber=(inChar+inNumber); //получили число которое вводили в мониторе } Serial.print("Register set to:"); Serial.println(inNumber); Serial.println("Enter Register Data"); while (!Serial.available()); //то же самое для байта который будет записан while(Serial.available()) { char inChar1=(Serial.read()-48); inNumber1 *=10; inNumber1=(inChar1+inNumber1); } Serial.print("Register data set to:"); Serial.println(inNumber1); Wire.beginTransmission(DS3231_I2C_ADDRESS); // Записываем полученные данные Wire.write(inNumber); Wire.write(inNumber1); Wire.endTransmission(); Serial.println (inNumber, HEX); Serial.println (inNumber1);
А сколько он должен записывать? Там регистры вроде однобайтные.
Записывает она один байт, который я передаю через Serial monitor в виде десятиричной цифры, набример байт 1000 0101 я передаю через ком порт десятичным занчением "133".
Ошибку я нашел!
18
while
(!
Serial
.available());
//то же самое для байта который будет записан
нужно тут вставить delay !!
19
while
(
Serial
.available())
Необходимо бюыло вставитб delay. Как я понимаю весь обьем данных не успевал загрузиться и программа успевала схватывать ноль от
Serial
.available() и шла дальше.
Ну, тогда уж не здесь ставить delay, а внутри цикла чтения.