Модуль часов реального времени DS3231 (ZS-042)

Здесь обсуждаем Arduino
Аватара пользователя
gurvinok
Сообщения: 1500
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Модуль часов реального времени DS3231 (ZS-042)

Сообщение gurvinok » 02 май 2016, 13:19

Всп верно, оно и будет во втором варианте работать. Слона то по частям пихаем, а не целиком. А что там с вещественнным непонятно. 5 это целое, а 5.8 это вещественное. Под целое выделяют память из расчета со знаком или без от 8 ит до сколько хочешь, а под вещественное от 16 бит и сколько хочешь. В обоих вариан ах выделенно по 32 бита.
Если долго мучиться, может быть получится.

Аватара пользователя
GhostX
Сообщения: 1115
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Re: Модуль часов реального времени DS3231 (ZS-042)

Сообщение GhostX » 02 май 2016, 13:58

Я думал мы не слона пихаем, а четырех разных, но у каждого вырезаны разные части, как коня порелало в старом клипе мерлен менсона на тему по фильму клетка.))
Что то гиф не показывается, но если нажать, то откроется.
Изображение
Я представляю работу со сдвигами именно так. И на основе такого понимания, не мпредставляю целостности слона...
С вещественными числами не совсем понял, но походу разница именно в минимально возможной длинне...)) я с точкой еще не подружился. Думаю осознание само придет.)

Аватара пользователя
gurvinok
Сообщения: 1500
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Модуль часов реального времени DS3231 (ZS-042)

Сообщение gurvinok » 02 май 2016, 21:35

Ну если туго с вещественными числами, то просто забей на них. В бинаре они представлены в виде нескольких байт. Если рассмотреть текущий пример, то float имеет длину в 4 байта. Все что в нем храниться пофиг. Представь что там просто нули и единицы. Чтобы распихать по байтам, то нужно всего навсего создать массив из 4 байт с типом byte и передав указатель напихать в него куски от float. Пример:

Код: Выделить всё

	float val = 5.8; // Вещественное число 5.8. Представим что float занимает 4 байта
	byte data[4] = {0}; // Массив типа byte на 4 ячейки. В него положим float.

	byte  *temp = (byte*)&val; // Указатель на первый байт в float

	for(int i=0; i<4; i++)  // Цикл 4 итерации
	{
		data[i] = *temp; // Передаем значение байта в массив по указателю на адрес байта в float
		temp++; // Сдвигаем адрес а байт
	}
Теперь в массиве лежит float распиханный по байтно.
Если долго мучиться, может быть получится.

Аватара пользователя
GhostX
Сообщения: 1115
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Re: Модуль часов реального времени DS3231 (ZS-042)

Сообщение GhostX » 03 май 2016, 00:45

С этим согласен.
Я про лошадь не спроста писал. Гифка наглядно показывает что происходит с целым.
Так вот если так разделить 4 лошади и взять куски из разных лошадей, то по типу голова, жопа собрать, оно же станет лошадью, и не перепутаешь ни с чем...
Тоесть если возьмем
А = 11111111 11011111
И сделаем из него сдвигом В = 00000000 11011111
И еще так же С = 00000000 11111111
И дадим тип byte
Получим тупо хвосты. Два разных бинарных числа. Какая разница что они из себя представляют?!
Вещественное число или не вещественное, оно все равно состоит из 0 и 1 больше ничего нет....
Почему я не могу так сотварить?
Предполагаю, проблема в преобразовании типов...
Ведь по сути что мы массив рвем на куски, что сдвигами стираем части чисел... Логические размышления не дают конфликтов...

Аватара пользователя
gurvinok
Сообщения: 1500
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Модуль часов реального времени DS3231 (ZS-042)

Сообщение gurvinok » 03 май 2016, 12:00

Я картинку не вижу.
Здесь можно по другому представить. К примеру стоит состав из 32 выгонов и их нужно перевезти на предприятие, но менять положение вагонов в составе нельзя. Это связано с тем что на заводе разгрузка должна проходить в точной последовательности. Но вот беда, у нас есть 4 локомотива, но у каждого хватает сил упереть за собой только 8 вагонов. Тогда мы прицепляем первые 8 вагонов к первому локомотиву и перевозим их на завод. Затем цепляем ко второму следующие 8 вагонов и везем на завод. Далее с третьим и четвертым локомотивом аналогично. Когда все привезли на завод начинаем собирать первые 8 вагонов ко вторым, к третьим и наконец к последним. От того что мы перевезли состав по частям ничего внутри вагонов не поменялось. И даже если мы возили все эти вагоны разными путями. В конечном итоге завод получил свой состав в той последовательности вагонов в которой он был до перевоза. С float тоже самое. Память МК состоит из множества 8 битных ячеек и float представляется как 32 бита. То есть это 4 байта. Отсюда и вытекает возможность разобрать float на байты получив адрес первого и перенести его в любое место. Не забыв собрать в той же последовательности.
Если долго мучиться, может быть получится.

Аватара пользователя
GhostX
Сообщения: 1115
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Re: Модуль часов реального времени DS3231 (ZS-042)

Сообщение GhostX » 03 май 2016, 14:26

Чтоб увидеть изображение, нужно правой кнопкой нажать и открыть ссылку на гиф.
Но можно сюда ткнуть тык
Все что там про состав написано, не противоречит сдвигам и последующим сборам. Как так?

Аватара пользователя
gurvinok
Сообщения: 1500
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Модуль часов реального времени DS3231 (ZS-042)

Сообщение gurvinok » 03 май 2016, 14:50

Тык приводит на 403 ошибку, а на телефоне нет правой кнопки мыши)))
Рассказ о вагонах полностью пересказывает программу написанную мной выше.
Если долго мучиться, может быть получится.

Аватара пользователя
GhostX
Сообщения: 1115
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Re: Модуль часов реального времени DS3231 (ZS-042)

Сообщение GhostX » 03 май 2016, 16:33

Тык, у меня выглядит вот так.
Блин я не знаю как объяснить проблему.(((
Вложения
image.png
image.png
image.png

Аватара пользователя
gurvinok
Сообщения: 1500
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Модуль часов реального времени DS3231 (ZS-042)

Сообщение gurvinok » 03 май 2016, 20:34

У меня тык выглядит вот так)))
лошадь.jpg
Если долго мучиться, может быть получится.

Аватара пользователя
GhostX
Сообщения: 1115
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Re: Модуль часов реального времени DS3231 (ZS-042)

Сообщение GhostX » 03 май 2016, 21:37

А почему такая фигня?!

Ответить