Термостат с развитием

Nord_Air
Offline
Зарегистрирован: 15.06.2020

DetSimen пишет:

ты складываешь два байта. но результат уже в 1 байт не влазит, для хранения всего результата уже нужно два байта 0x01 FC = 508 Dec

Так?

 

Совершенно верно

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

а теперь, чтобы результат 0x01FC влазил опять в 1 байт, что надо сделать?  Надо отбросить старший байт, 0x01, и оставить 0xFC, что по русски равно 252.  Поэтому, сложение по модулю 256, это фактически правильная сумма всех байт с последующим отбрасыванием старших байтов, сколько бы их там ни было.

254 + 254 = 508 (0x01FC) отбрасываем 0х01 остается 0xFC = 252

фактически, при байтовом сложениии, 254+254 = 252.  ЧТД.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

254 + 254 + 252 + 252 = 1012 (0х03F4)  старший байт 0х03 отбрасываем, остается 0xF4 = 244

254 + 254 + 252 + 252 = 244 при байтовом сложении

Проверь на виндовском каркуляторе для пограммистов

Nord_Air
Offline
Зарегистрирован: 15.06.2020

DetSimen пишет:

а теперь, чтобы результат 0x01FC влазил опять в 1 байт, что надо сделать?  Надо отбросить старший байт, 0x01, и оставить 0xFC, что по русски равно 252.  Поэтому, сложение по модулю 256, это фактически правильная сумма всех байт с последующим отбрасыванием старших байтов, сколько бы их там ни было.

254 + 254 = 508 (0x01FC) отбрасываем 0х01 остается 0xFC = 252

фактически, при байтовом сложениии, 254+254 = 252.  ЧТД.

 

 Ты думаешь чудо явил??? :)))  

При переходе через 255 (байт) младшие биты, а не старшие отбрасываются.  Это раз.

Второй момент.  А как библиотечная функция считает что сумма больше 255? Да ни как? ;)

 

 

b707
Offline
Зарегистрирован: 26.05.2017

Nord_Air пишет:

Ты думаешь чудо явил??? :)))  

При переходе через 255 (байт) младшие биты, а не старшие отбрасываются.  Это раз.

Второй момент.  А как библиотечная функция считает что сумма больше 255? Да ни как? ;)

Деда, что я тебе говорил? - дурака учить - только портить

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Nord_Air пишет:

При переходе через 255 (байт) младшие биты, а не старшие отбрасываются. 

Вот в этом твоя главная ошибка. отбрасываются старшие, они тупо в 8битный регистр не влазют.  пока ты это не поймёшь, дальше тебе не сдвинуться. Я пашол кофю пить. 

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Nord_Air пишет:

Второй момент.  А как библиотечная функция считает что сумма больше 255? Да ни как? ;)

Никак. У ей всё что в 1 байт не влазит (старшие биты) отбрасывается отоматически. 

b707
Offline
Зарегистрирован: 26.05.2017

Nord_Air пишет:

Второй момент.  А как библиотечная функция считает что сумма больше 255? Да ни как? ;)

а ей это не нужно. Код приведен в #67

b707
Offline
Зарегистрирован: 26.05.2017

Nord_Air пишет:

 Ты думаешь чудо явил??? :))) 

это не чудо, а прстейшая математика...

А ты просто не можешь признаться самому себе, что оказался дураком

Ты занимаешься программированием полгода, а ДетСимен - 30 лет. И ты берешься с ним спорить? Но дурак ты не потому, что чего-то не знаешь, а потому что уверен, что знаешь все и лучше всех. Например лучше авторов даташитов.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

если у тебя есть один 8разрядный регистр и там 254 (0xFE)

и второй восьмиразрядный регистр и там тоже 254 (0хFE)

то при их сложении получается сумма 0x01FC из которой только младшие 8 бит (0хFC) могут влезть в 8 битный регистр, а девятый бит 0х01 в него уж точно не залезет, поэтому его отбрасываем, остаёцца 0xFC. Процессор в своей арифметике это делает автоматически. 

Nord_Air
Offline
Зарегистрирован: 15.06.2020

DetSimen пишет:

Никак. У ей всё что в 1 байт не влазит (старшие биты) отбрасывается отоматически. 

[/quote]

 

 

Понятно что отбрасываются...    5-й байт это сумма первых четырех.  Предположим его значение 7. 

но давай  прикинем варианты..

1-й байт - 0, 2-й - 0, 3 - 0 , 4 - 7,

2й вариант

 1-й байт - 255, 2-й - 0, 3 - 0 , 4 - 7, 

3й вариант

 1-й байт - 255, 2-й - 255, 3 - 0 , 4 - 7, 

4й вариант

 1-й байт - 255, 2-й - 255, 3 - 255 , 4 - 7, 

 

 Во всех этих случаях, в пятом байте. чек сумме будет 7.

 

 

Библиотечная функция, тупо складывает все 4 байта.  ИЗЗЗЗзззза того что  в большинстве случаев сумма всех байтов не переваливает за 255, никто и не заморачивается, что всё это добро не может влезть в 1 байт. 

 

Но если тебе очень хочется подумать, как 257, влезает в один байт, и как там куда переходит...  Я думаю это всем будет интересно.

b707
Offline
Зарегистрирован: 26.05.2017

Nord_Air пишет:

Но если тебе очень хочется подумать, как 257, влезает в один байт, и как там куда переходит...  Я думаю это всем будет интересно.

в это трудно поверить, но до него так и не дошло :)

НордАйр, а стоит ли тебе заниматься программированием? - по-моему это не твое :)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Nord_Air пишет:

Но если тебе очень хочется подумать, как 257, влезает в один байт, и как там куда переходит...  Я думаю это всем будет интересно.

А вот так 

257 это 0x0101  старший, девятый бит, не влазит, отхерачиваем его топором, блять. Остаётся 0х01.

В терминах процессорной 8битной арифметики 257 = 1

b707
Offline
Зарегистрирован: 26.05.2017

Nord_Air пишет:

но давай  прикинем варианты..

1-й байт - 0, 2-й - 0, 3 - 0 , 4 - 7,

2й вариант

 1-й байт - 255, 2-й - 0, 3 - 0 , 4 - 7, 

3й вариант

 1-й байт - 255, 2-й - 255, 3 - 0 , 4 - 7, 

4й вариант

 1-й байт - 255, 2-й - 255, 3 - 255 , 4 - 7, 

 

 Во всех этих случаях, в пятом байте. чек сумме будет 7.

семь будет только в первом варианте, в остальнх будет другое число. Возьми калькулятор и посчитай, Дет симен обьяснил же

Nord_Air
Offline
Зарегистрирован: 15.06.2020

DetSimen

 

нет никакого процессора, никуда он ничего не откидывает. 

От датчика приходит 5 байт.  первые 4 это температура и влажность, 5-й чек сумма.  Все они пишутся просто в массив[40] Это всё!!! :)))))

b707
Offline
Зарегистрирован: 26.05.2017

Nord_Air пишет:

От датчика приходит 5 байт.  первые 4 это температура и влажность, 5-й чек сумма.  Все они пишутся просто в массив[40] Это всё!!! :)))))

и что это меняет?

Nord_Air
Offline
Зарегистрирован: 15.06.2020

b707 пишет:

Nord_Air пишет:

но давай  прикинем варианты..

1-й байт - 0, 2-й - 0, 3 - 0 , 4 - 7,

2й вариант

 1-й байт - 255, 2-й - 0, 3 - 0 , 4 - 7, 

3й вариант

 1-й байт - 255, 2-й - 255, 3 - 0 , 4 - 7, 

4й вариант

 1-й байт - 255, 2-й - 255, 3 - 255 , 4 - 7, 

 

 Во всех этих случаях, в пятом байте. чек сумме будет 7.

семь будет только в первом варианте, в остальнх будет другое число. Возьми калькулятор и посчитай, Дет симен обьяснил же

 

 В 5ом байте. чек сумме датчика DHT будет 7

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Nord_Air пишет:

DetSimen

От датчика приходит 5 байт.  первые 4 это температура и влажность, 5-й чек сумма.  Все они пишутся просто в массив[40] 

Это массив бит. 5 байт по 8 бит это 40 бит, вот библиотека разворачивает каждый бит в байт и пишет в массив. Зачем-то. 

Nord_Air
Offline
Зарегистрирован: 15.06.2020

b707 пишет:

Nord_Air пишет:

От датчика приходит 5 байт.  первые 4 это температура и влажность, 5-й чек сумма.  Все они пишутся просто в массив[40] Это всё!!! :)))))

и что это меняет?

 Для тебя ничего. Я вообще не очень понимаю кому и о чем ты комментируешь

b707
Offline
Зарегистрирован: 26.05.2017

Nord_Air пишет:

В 5ом байте. чек сумме датчика DHT будет 7

блин, ну что за тупость. Сядь посчитай. Семь будет только в первом наборе, в других НЕ БУДЕТ.

Nord_Air
Offline
Зарегистрирован: 15.06.2020

DetSimen пишет:

Nord_Air пишет:

DetSimen

От датчика приходит 5 байт.  первые 4 это температура и влажность, 5-й чек сумма.  Все они пишутся просто в массив[40] 

Это массив бит. 5 байт по 8 бит это 40 бит, вот библиотека разворачивает каждый бит в байт и пишет в массив. Зачем-то. 

 В смысле зачем-то, в массив пишется тупо всё что приходит от датчика. Всё

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Nord_Air пишет:

 В 5ом байте. чек сумме датчика DHT будет 7

Короче, я тебя понял.  ты старался и заслужил чесно, держи

Nord_Air
Offline
Зарегистрирован: 15.06.2020

DetSimen

 Можно не спорить а проверять код ;)

b707
Offline
Зарегистрирован: 26.05.2017

Nord_Air пишет:

 В смысле зачем-то, в массив пишется тупо всё что приходит от датчика. Всё

какое это вообще имеет отношение к обсуждаемому вопросу подсчета чексуммы? - просто написал чтоб что-то сказать?

b707
Offline
Зарегистрирован: 26.05.2017

Nord_Air пишет:

 Что-то будет по теме?

а это все не по теме было?  :)

Сколько тебе лет-то, северный ветер? похоже уже маразм...

Nord_Air
Offline
Зарегистрирован: 15.06.2020

b707 пишет:

Nord_Air пишет:

 В смысле зачем-то, в массив пишется тупо всё что приходит от датчика. Всё

какое это вообще имеет отношение к обсуждаемому вопросу подсчета чексуммы? - просто написал чтоб что-то сказать?

 потому что в 5-й байт пишется чек сумма первых четырех, дошло имбицил!!!! :))))))))))

b707
Offline
Зарегистрирован: 26.05.2017

Nord_Air пишет:

Можно не спорить а проверять код ;)

ОК, давай проверим

вот строчка подсчет чексумм из библиотеки iarduino_DHT

if(((reply[0]+reply[1]+reply[2]+reply[3])&0xff)!=reply[4]){return DHT_ERROR_CHECKSUM;}	

какие-то еще вопросы есть?

Nord_Air
Offline
Зарегистрирован: 15.06.2020

b707 пишет:

Nord_Air пишет:

Можно не спорить а проверять код ;)

ОК, давай проверим

вот строчка подсчет чексумм из библиотеки iarduino_DHT

if(((reply[0]+reply[1]+reply[2]+reply[3])&0xff)!=reply[4]){return DHT_ERROR_CHECKSUM;}	

какие-то еще вопросы есть?

 Ты думаешь я толковал об этой шляпе, и её не открывал???

 У меня есть вопросы к твоим познаниям в математике...

 

 Я так-то, собсно, о претнзии к этой строке :))))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

вот это вот &0xff оставляет только младшие 8 бит результата от всей суммы и сравнивает с 8 битами из 5го байта. 

b707
Offline
Зарегистрирован: 26.05.2017

Nord_Air пишет:

 У меня есть вопросы к твоим познаниям в математике...

а у меня к твоим - уже нет.

Если ты все-таки напрягешь умишко - ты увидишь в этой строчке то самое сложение по модулю, которое тебе пытался обьяснить дед

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Nord_Air пишет:

 Ты думаешь я толковал об этой шляпе, и её не открывал???

 У меня есть вопросы к твоим познаниям в математике...

я понял, ты феерический идиот, посему вопросов больше не имею. живи в своём мире со своей математикой. 

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

живи в своём мире со своей математикой. 

проблема в том, что он не сидит там, в своем мире - а лезет учить других, расписывая сотни строк о "кривых даташитах" и "недописанных библиотеках"

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

из кривого даташита. Поймёшь чонить? 

If the data transmission is right, the check-sum should be the last 8bit of "8bit integral RH data + 8bit decimal RH data + 8bit integral T data + 8bit decimal T data"

https://www.mouser.com/datasheet/2/758/DHT11-Technical-Data-Sheet-Translated-Version-1143054.pdf

страница 5

Nord_Air
Offline
Зарегистрирован: 15.06.2020

DetSimen пишет:

вот это вот &0xff оставляет только младшие 8 бит результата от всей суммы и сравнивает с 8 битами из 5го байта. 

 Все значения что приходят 8 битные.   Когда пятым байтом приходит 20. Мы не знаем, это 20 или это 255+20 или 255+255+20...  Пятым байтом просто приходит 20.

  Это всё!!!   Это понятно!!!!??????????? Никаким процессором никак это не обрабатывается. 

 Складывается. приведенной выше шляпой. тупо и неправильно!  Но в следствии того что в 8 из 10 случаев сумма байтов не превосходит 255, это работает.   ЭТО ПОНЯТНО!!!!!!?????

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

пиздец ты долбоёб. конченый. 

вам на пару с tonna только преподавателями и работать. 

b707
Offline
Зарегистрирован: 26.05.2017

Nord_Air пишет:

 Складывается. приведенной выше шляпой. тупо и неправильно!  Но в следствии того что в 8 из 10 случаев сумма байтов не превосходит 255, это работает.   ЭТО ПОНЯТНО!!!!!!?????

пипец тупой...

Дорогой, давай спокойнее. "Эта шляпа" складывает все правильно. И работает ВСЕГДА - и когда сумма менее 255, и когда более.

 

Nord_Air
Offline
Зарегистрирован: 15.06.2020

 Я другого ответа и не ожидал ;)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Nord_Air пишет:

Когда пятым байтом приходит 20. Мы не знаем, это 20 или это 255+20 или 255+255+20... 

За всех не говори, это ты не знаешь.  Мы - знаем.  

если пришло 20:  

это 20

или 255+21

или 255+255+22  

или 255+255+255+23

 

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

вам на пару с tonna только преподавателями и работать. 

этот не преподает, этот программы пишет... по 2 тыщи строк

http://arduino.ru/forum/proekty/klimat-kontrol#comment-547306

Nord_Air
Offline
Зарегистрирован: 15.06.2020

 Я за то чтобы всё было честно...

 Есть мои ответы, есть ваши...

 

  Можно закрепить чтобы вы их не фиксили?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

b707 пишет:

этот не преподает, этот программы пишет... по 2 тыщи строк

Что могу сказать. А.уеть. 

b707
Offline
Зарегистрирован: 26.05.2017

Деда, все равно не дойдет.

такого можно только забанить, обьяснять ему что-то бесполезно

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Nord_Air пишет:

 Я за то чтобы всё было честно...

 Есть мои ответы, есть ваши...

 

  Можно закрепить чтобы вы их не фиксили?

Я своё удалять не буду. Если только другие админы мат почистят, я не буду. 

b707
Offline
Зарегистрирован: 26.05.2017

Nord_Air пишет:

 Я за то чтобы всё было честно...

 Есть мои ответы, есть ваши...

Можно закрепить чтобы вы их не фиксили?

я фигею... (...ик простите)

Он, походу, еще и уверен, что мы жуткую пургу несем и он собирается нас потом поймать на слове :)))

 

НордЭйр, не боись, я свое менять не буду, тут все верно

Nord_Air
Offline
Зарегистрирован: 15.06.2020

DetSimen пишет:

Nord_Air пишет:

Когда пятым байтом приходит 20. Мы не знаем, это 20 или это 255+20 или 255+255+20... 

За всех не говори, это ты не знаешь.  Мы - знаем.  

это 255+21

или 255+255+22  

или 255+255+255+23

 

 А че не +7  ?  А

255+255+7....

 или 486..

  Осталось только функцию научить различать вашу ересь, что 21. это 21 а не 255+21 :)))))))))))))))

b707
Offline
Зарегистрирован: 26.05.2017

Nord_Air пишет:

 А че не +7  ?  А

255+255+7....

 

2 + 2 = 4

а че не 7 ?

или не 33 ?

как думаешь?

b707
Offline
Зарегистрирован: 26.05.2017

Nord_Air пишет:

 Я за то чтобы всё было честно...

 Есть мои ответы, есть ваши...

Можно закрепить чтобы вы их не фиксили?

я вообще тоже хотел бы, чтоб эту ветку сохранили. Тогда всякий раз, когда ты захочешь порассуждать о чужих ошибках - я буду давать ссылку на это эпичное побоище... И вовсе не для того, чтоб тебя позлить - а чтоб другие оценили твой "уровень" и поняли "цену" твоих знаний

Nord_Air
Offline
Зарегистрирован: 15.06.2020

b707 пишет:

я вообще тоже хотел бы, чтоб эту ветку сохранили. Тогда всякий раз, когда ты захочешь порассуждать о чужих ошибках - я буду давать ссылку на это эпичное побоище... И вовсе не для того, чтоб тебя позлить - а чтоб другие оценили твой "уровень" и поняли "цену" твоих знаний

Не знаю куда плюсовать, чтобы ты поддерживал, аппал, тему, когда меня нет на форуме.  Я всетки тут относительно редко бываю...

Всецело поддерживаю, всецело! ;)

b707
Offline
Зарегистрирован: 26.05.2017

мой тебе совет - прочитай все-таки какой-то учебник по Си

Может тогда дойдет, что никакого отдельного "процессора", чтобы правильно сложить четыре байта и отбросить старшие разряды - не нужно.

Вся магия внутри этой строчки:

((reply[0]+reply[1]+reply[2]+reply[3])&0xff)

 

Nord_Air
Offline
Зарегистрирован: 15.06.2020

b707 пишет:

мой тебе совет - прочитай все-таки какой-то учебник по Си

Может тогда дойдет, что никакого отдельного "процессора", чтобы правильно сложить четыре байта и отбросить старшие разряды - не нужно.

Вся магия внутри этой строчки:

((reply[0]+reply[1]+reply[2]+reply[3])&0xff)

 

 Проблем же нет

byte i;

byte reply = [] {255,7,7,7,21}; 

i = ((reply[0]+reply[1]+reply[2]+reply[3])&0xff)

if (i==reply[4])  чек сумм чек ;) 

 Я эту шляпу уже видел, не нужно мне её снова показывать....

  Я думаю закончим на сегодня... диалог.