Что в моей программе не так?

Ясделялъ
Offline
Зарегистрирован: 18.05.2015

Добрый день. Пытаюсь контролировать регистры 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);

 

bwn
Offline
Зарегистрирован: 25.08.2014

А сколько он должен записывать? Там регистры вроде однобайтные.

Ясделялъ
Offline
Зарегистрирован: 18.05.2015

Записывает она один байт, который я передаю через Serial monitor в виде десятиричной цифры, набример байт 1000 0101 я передаю через ком порт десятичным занчением "133".

Ошибку я нашел! 

18 while (!Serial.available()); //то же самое для байта который будет записан

 

нужно тут вставить delay !!

19 while(Serial.available())

Необходимо бюыло вставитб delay. Как я понимаю весь обьем данных не успевал загрузиться и программа успевала схватывать ноль от Serial.available() и шла дальше.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, тогда уж не здесь ставить delay, а внутри цикла чтения.