Прием данных по UART
Прием данных по UART
Уважаемые помогите, не могу решить вроде элементарную задачу. Нужно из юарт принять 4 байта с расчетом контрольной суммы, после этого должен загорется сведодиод на выходе ОК сам блок и проэкт в архиве
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Прием данных по UART
тут я разобрался, теперь данные которые отправляются по 485-му не видно на мастере
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Прием данных по UART
Все переделал, НЕ РАБОТАЕТ мастер не видит слэйф хотя слэйф шлет нормальное количество байт и корректно 3E 0A 06 19 27 00 67 00 FB где 3Е - префикс, 0А - адрес, 06 - команда запроса, 19 - температура, 27,00 - 2 байта уровеня топлива, 67,00 - 2 байта частоты FB - контрольная сумма, что еще надо не пойму, помогите а!!!!!!!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Прием данных по UART
так не пробовали?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Прием данных по UART
Как только не пробовал, похоже дело в контрольной сумме и в том что я правильно не могу интежер разделить на 2 байтаrw6cm писал(а):так не пробовали?
data[4] = Level1;
data[5] = Level; Должен быть один Level
Прием данных по UART
У меня на ком порт без задержки только часть пакета приходит, с задержкой весь.stapmoff писал(а):Как только не пробовал
контрольную сумму можно попробовать поставить 00 , тогда по идее он не должен ее учитывать.
не уверен но контрольная сумма 3E0A061927006700=F5
Последний раз редактировалось rw6cm 12 июл 2017, 17:01, всего редактировалось 1 раз.
Win10-64, FLProg (portable)
Прием данных по UART
Вот именно, не совпадос какой то!!!! Ну могу разделить интежер на 2 байта и мне кажется, что из за этого не правильно считается контрольная сумма, судя по датчику который выдавал такие же данные, контрольная сумма была 3E0A061927006700=86 вродеrw6cm писал(а):но контрольная сумма 3E0A061927006700=F5
Добавлено (12.07.2017, 19:00)
---------------------------------------------
Сделал вот так
data[5] = ( byte )( Level >> 8 );
data[4] = ( byte )Level;
Не знаю правильно нет?
Добавлено (12.07.2017, 19:04)
---------------------------------------------
Вот теперь точно все правильно, разделил int на 2 байта, старший первый, но прибор не видит(( Вот что шлет слэйф 3E 0A 06 19 0F FF 07 D0 9C
19 - 25 градусов
0F FF - 2 байта уровень топлива 4095
07 D0 - 2 байта частота 2000
9C- сумма
Добавлено (12.07.2017, 19:31)
---------------------------------------------
Вот реальные данные от рабочего слэйва 3E 01 06 19 27 00 67 00 87
Вот те же данные, но от моего слэйва 3E 01 06 19 27 00 67 00 4D
не совпадает контрольная сумма!!! Блин
Прием данных по UART
а может так
data[4] = Level&FF; (или Level&255)
data[5] = Level>>8;
data[4] = Level&FF; (или Level&255)
data[5] = Level>>8;
Прием данных по UART
Да не я уже разделил интежер на 2 байта, тут все ОК. теперь не совпадает контрольная суммаpan писал(а):а может так data[4] = Level&FF; (или Level&255)
data[5] = Level>>8;
Добавлено (12.07.2017, 20:43)
---------------------------------------------
Попробовал, вот что выдает 3E 01 06 19 00 67 00 00 39
Добавлено (12.07.2017, 20:43)
---------------------------------------------
Это не то
Прием данных по UART
Похож на алгоритм CRC-8/MAXIMstapmoff писал(а):Вот реальные данные от рабочего слэйва 3E 01 06 19 27 00 67 00 87
Вот его калькулятор
Для уверенности еще один пакет правильных данных не помешал бы.
Win10-64, FLProg (portable)
Прием данных по UART
Вот несколькоrw6cm писал(а):Для уверенности еще один пакет правильных данных не помешал бы.
3E 01 06 19 27 00 67 00 BB
25 градусов 39 уровень 103 частота
3E 01 06 19 27 00 67 00 BB
3E 01 06 1E FF 0F D0 07 5A
30 градусов 4095 уровень 2000 частота
3E 01 06 1E FF 0F D0 07 5A
3E 01 06 1E FF 0F D0 07 5A
Последний раз редактировалось stapmoff 13 июл 2017, 08:36, всего редактировалось 1 раз.
Прием данных по UART
Это же такой же 3E 01 06 19 27 00 67 00 BB и 3E 01 06 19 27 00 67 00 87
Почему контрольные суммы разные?
Почему контрольные суммы разные?
Win10-64, FLProg (portable)
Прием данных по UART
Вот о том и речь)rw6cm писал(а):Почему контрольные суммы разные?
Вот такой пример из документации протокола LLS Алгоритм вычисления контрольной суммы
1 U8 CRC8(U8 data, U8 crc)
2 {
3 U8 i = data ^ crc;
4 crc = 0;
5 if(i & 0x01) crc ^= 0x5e;
6 if(i & 0x02) crc ^= 0xbc;
7 if(i & 0x04) crc ^= 0x61;
8 if(i & 0x08) crc ^= 0xc2;
9 if(i & 0x10) crc ^= 0x9d;
10 if(i & 0x20) crc ^= 0x23;
11 if(i & 0x40) crc ^= 0x46;
12 if(i & 0x80) crc ^= 0x8c;
13 return crc;
14 }
Последний раз редактировалось stapmoff 13 июл 2017, 08:59, всего редактировалось 1 раз.
Прием данных по UART
Эти откуда ?stapmoff писал(а):Вот реальные данные от рабочего слэйва 3E 01 06 19 27 00 67 00 87
3E 01 06 19 27 00 67 00 BB
3E 01 06 1E FF 0F D0 07 5A
Последний раз редактировалось rw6cm 13 июл 2017, 09:07, всего редактировалось 1 раз.
Win10-64, FLProg (portable)
Прием данных по UART
Немного исправил блок, теперь сумма другая, но не та
3E 01 06 19 27 00 67 00 4D
3E 01 06 19 27 00 67 00 4D
Добавлено (13.07.2017, 09:14)
---------------------------------------------
3E 01 06 19 27 00 67 00 4D
3E 01 06 19 27 00 67 00 4D
Добавлено (13.07.2017, 09:14)
---------------------------------------------
с моего устройстваrw6cm писал(а):Эти откуда ?
Прием данных по UART
как может быть при одинаковых цифрах разная сумма...
чудес не бывает. единственное что приходит на ум это то циферки в разных форматах (dec hex)
чудес не бывает. единственное что приходит на ум это то циферки в разных форматах (dec hex)
Прием данных по UART
Всему виной была вот эта строчкаpan писал(а):циферки в разных форматах (dec hex)
for (n = 0; n <= 7; n++) // рассчитываем crc8
тут была 8
Но все равно сумма не совпадает
Последний раз редактировалось stapmoff 13 июл 2017, 09:26, всего редактировалось 1 раз.
Прием данных по UART
У вас есть пакет который должен проходить, (правильный)?
Win10-64, FLProg (portable)
Прием данных по UART
если была 8 , то должно было быть в скобках n=1stapmoff писал(а):тут была 8
Добавлено (13.07.2017, 09:28)
---------------------------------------------
чудеса
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей