DS 1307 - как считывать из неё данные полубайтами?

bizzon
Offline
Зарегистрирован: 29.03.2016

Доброго дня!

Есть рабочий скетч, который считывает из 1307 данные в десятичном виде (например 24). Хотелось бы получить из неё отдельно десятки, отдельно единицы (то есть 2 и 4). Подскажите пару команд для ардуины. Можно конечно произвести деление ( / и % ), но зачем лишние преобразования.

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

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

Ответ на Ваш вопрос: штатно - никак.

Если Вы готовы написать свою реализацию I2C, то там можете хоть отдельные биты читать (правда, обязательно с начала байта), благо уголовное наказание за извращения давно отменено. Но, судя по Вашему вопросу, боюсь, что Вам пока рано писать такие вещи.

bizzon
Offline
Зарегистрирован: 29.03.2016

Точно обманули? Вот здесь описывается то что мне нужно, но как прикрутить это к ардуине? Буквы в коде знакомые, но пока не вкурил.

http://microsin.net/programming/avr/ds1307-rtc-clock-with-avr.html

 

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

bizzon пишет:

Точно обманули? Вот здесь описывается то что мне нужно, но как прикрутить это к ардуине?

http://microsin.net/programming/avr/ds1307-rtc-clock-with-avr.html

 

Там написано как полубайтами читать? Ну, читайте и реализуйте.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

bizzon, а где ваш скетч? на чём показывать? Как-то так:

Wire.beginTransmission(0x68);
Wire.write(0x00);
Wire.endTransmission();
Wire.requestFrom(0x68,3);
if(Wire.available()) {
byte secund = Wire.read(); //00h
byte minut = Wire.read();  //01h
byte chasov = Wire.read();  //02h
Serial.print((chasov & B00110000)>>4);
Serial.print(chasov & B00001111);
Serial.write(':');
Serial.print((minut & B11110000)>>4);
Serial.print(minut & B00001111);
Serial.write(':');
Serial.print((secund & B11110000)>>4);
Serial.print(secund & B00001111);

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

bizzon пишет:

Доброго дня!

Есть рабочий скетч, который считывает из 1307 данные в десятичном виде (например 24). Хотелось бы получить из неё отдельно десятки, отдельно единицы (то есть 2 и 4). Подскажите пару команд для ардуины. Можно конечно произвести деление ( / и % ), но зачем лишние преобразования.

Спутали тёплое с круглым :) Единицы и десятки - это одно, а полубайты - это соооовсем другое, паанимаишь.

 

bizzon
Offline
Зарегистрирован: 29.03.2016

 Про полубайты -да,каюсь,погорячился.

 DIMAX , за пример спасибо.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

А я кстати так и не понял, что с полубайтами не так? :) Цифры десяток и единиц лежат раздельно, именно в полубайтах..

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

dimax пишет:

А я кстати так и не понял, что с полубайтами не так? :) Цифры десяток и единиц лежат раздельно, именно в полубайтах..

Да всё с ними так, не парьтесь ;)