с минусом десятичные числа в регистр 10h (Aging offset) нельзя записать только в формате двоичного целого числа со знаком с дополнением до 2, где бит 7 представляет бит знака числа.
помогите сделать конвертацию из десятичных в двоичное число с дополнение до двух и обратно
вот пример конвертации десятичные в двоично-десятичный код
Код:
// конвертируем обычные десятичные значения в двоично-десятичный код: byte decToBcd(byte val){ return( (val/10*16) + (val%10) ); } // конвертируем двоично-десятичный код в обычные десятичные значения: byte bcdToDec(byte val){ return( (val/16*10) + (val%16) ); }
а мне нужно конвертацию из десятичных в с двоичное число с дополнение до двух и обратно
или я чета не понимаю... если вы говорите ВОТ ТАК И ЭТО ПРОСТО.
Цитата:
В чём неудобство? Наоборот же, никаких не нужно преобразований - складывай-вычитай-умножай-не-хочу. Положительное записать - Wire.write(12), отрицательное - Wire.write(-12).
https://dzen.ru/a/XuIx2Lo4HTaLhFKM ААААААААААААААААААААА Я ПОНЯЛ наверно если число int8_t 1 байт -128… 127 Целые числа оно само как надо пишется, мая ошибка была то что я читал не все байты почему-то Aging_off = (Wire.read() & 0x7f);// читаем байты
а надо все Aging_off = (Wire.read() & 0xff);// читаем байты –
" & 0xff" - вообще лишняя "деталь". эта "маска" никак не изменяет само число. "дополнение до 2" - это образное выражение, и не соответствует действительности. а в общем случае, чтобы получить отрицательное число, нужно из 0 (а не из 2) вычесть положительное число. например, есть положительное число 5. 0 - 5 = -5.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
позвольте еще спросить когда выставляешь врем в часах, как сделать мигание одним из значений времени.
в библиотеке iarduino_RTC это ест, но я не знаю где в ней искать эту функцию gettime() с синтаксисом void blinktime(uint8_t value, float frequency = 1) https://iarduino.ru/file/235.html?yscli ... 9488429175 //библиотека iarduino_RTC
или можно самому как то написать функцию blinktime();
Устанавливаете Notepad++, вставляете все файлы в программу, нажимаете CTRL+F и выполняете поиск по всем файлам. 3 секунды, 8 щелчков мыши. Файл iarduino_RTC.h, строка 76.
Устанавливаете Notepad++, вставляете все файлы в программу, нажимаете CTRL+F и выполняете поиск по всем файлам.
спасибо понял. но blinktime(uint8_t value, float frequency = 1) мне не подходит он мигает с одинаковыми интервалами...
Добавлено after 4 hours 2 minutes 55 seconds: решено! может кому интересно. не надо никаких функций делать просто вставляете в то место чем мигать собрались и все!!! (millis() & 512) ? Now_Minute / 10 : '0'
Переписываю библиотеку с ESP32 . В процессе обнаружилось непонимание компилятором GCC констант вида : 0b00000000, причем в main , к которому ее пытаюсь подключать проблем нет , они в .h библиотеки . Какой заголовочник надо добавить в него? Сейчас в ней stdbool.h и stdint.h.
В процессе обнаружилось непонимание компилятором GCC констант вида : 0b00000000
С++ такие префикс поддерживает начиная с С++14, а в C они появились только в С23, но на уровне GNU-расширений 0b уже очень давно работает, т.е. по идее достаточно просто добавить -std=gnu17 или какая там у вас версия стандарта...
ps. Проверил у себя на gcc 14 и ему вообще без разницы какие ключи, 0b работает всегда )
Adrift, вопрошающий уверяет, что не понимает именно компилятор. Учитывая, что он не прикладывает образец своего переписывания, нет повода для сомнения в его словах. И он спрашивал "Какой заголовочник надо добавить в него?" а не это вот всё
причем в main , к которому ее пытаюсь подключать проблем нет , они (проблемы) в .h библиотеке .
Компилятор "понимает" их в main , и не понимает в заголовочнике библиотеки. В main есть #include "biblioteka.h" (вымышлено)
Nranddek писал(а):
а не это вот всё
Да ! Например , если из biblioteka.h удалить stdint.h , то компилятор в ней не понимает и uint8_t , uint16_t , итд . А в маин -понимает. Значит в ней не хватает заголовочника или макроса.
пишите в классическом стандарте Си, либо игнорируйте предупреждение, либо не используйте подобные константы (я вот не использовал, не использую и не планирую, и как-то живу ) либо отключить предупреждение, правда, вряд ли его можно избирательно отключить, скорее всего, отвалятся все подобные, предупреждающие о несоответствии стандартов
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения