Что в моей программе не так?
- Войдите на сайт для отправки комментариев
Ср, 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".
Ошибку я нашел!
18while(!Serial.available());//то же самое для байта который будет записаннужно тут вставить delay !!
19while(Serial.available())Необходимо бюыло вставитб delay. Как я понимаю весь обьем данных не успевал загрузиться и программа успевала схватывать ноль от
Serial.available() и шла дальше.Ну, тогда уж не здесь ставить delay, а внутри цикла чтения.