Мне нужно отобразить на компьютере данные с микроконтроллера. В последней версии HiAsm я создал программу и данные отображаются как надо.
Микроконтроллер выдает 10 байт данных (HEX)и байт CRC8.Мне нужно в программе на компьютере проверить достоверность данных по CRC.
Но мои поиски по сайту элемента CRC8 не дали результата. Может у кого-нибудь есть элемент CRC8?
Этот топик читают: Гость
Ответов: 55
Рейтинг: 0
|
|||
карма: 0 |
|
Разработчик
Ответов: 26160
Рейтинг: 2127
|
|||
Для начала, нужно знать по какому полиному расчитан CRC8 и какой порядок обработки битов
Вот тут, в таблице, можно посмотреть какие они бывают -- http://ru.wikipedia.org/wiki/CRC |
|||
карма: 22 |
|
Ответов: 55
Рейтинг: 0
|
|||
В микроконтроллере у меня табличный:
Name : CRC-8 Poly : 0x31 x^8 + x^5 + x^4 + 1 Init : 0xFF |
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
nesco, порядок обработки известен, 8-битные полиномы, подходящие для расчётов тоже
Математика писал(а): 8;7;6;1
8;7;5;3 8;7;3;2 8;6;5;4 8;6;5;3 8;6;5;2 8;7;6;5;4;2 8;7;6;5;2;1 ------------ Дoбавленo в 11.48: Ну надо же! AVladM, молодец! Имеет-ли значение скорость обработки (1 мсек или 10 мсек)? (Кстати, представленный полином может выдать одинаковые результаты для разных входных данных) |
|||
карма: 19 |
|
Ответов: 55
Рейтинг: 0
|
|||
Передача данных ведется с интервалом в 1 секунду, так что скорость обработки значения не имеет.
|
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
AVladM,
AVladM писал(а): скорость обработки значения не имеет |
|||
карма: 19 |
|
Разработчик
Ответов: 26160
Рейтинг: 2127
|
|||
AVladM, а ты для проверки можешь дать свою строку HEX из 10 байт и валидный CRC8 для этой строки
|
|||
карма: 22 |
|
Ответов: 55
Рейтинг: 0
|
|||
На данный момент я откатываю программу на 6-байтном варианте.
Вот две строчки 6 байт данных и CRC 53 07 17 17 8A FF 55 53 07 17 16 8A 00 CB На 10 байт будет окончательный вариант. |
|||
карма: 0 |
|
Разработчик
Ответов: 26160
Рейтинг: 2127
|
|||
AVladM, на, держи. Реализаци твоего CRC8 на HiAsm-e табличным алгоритмом, но начальное значение CRC должно быть не FF, как ты указал, а 00
code_22233.txt ------------ Дoбавленo в 15.44: Можно сократить на один элемент, если применить целочисленное представление массива
И в довесок -- на математическом методе расчета CRC8
|
|||
карма: 22 |
| ||
файлы: 1 | code_22233.txt [2.5KB] [183] | ||
Голосовали: | kacmem |
Ответов: 55
Рейтинг: 0
|
|||
Спасибо! Буду разбираться, хотя я ни разу не программист. Вынужденно пишу на С для PIC16.
|
|||
карма: 0 |
|
Ответов: 844
Рейтинг: 17
|
|||
[offtop]помогите каким способом получили с 0x39.0x56.0x89 57.86.0.137[/offtop]
|
|||
карма: 0 |
|
Ответов: 1841
Рейтинг: 369
|
|||
[offtop]GAv, 39 + Convertor (HexToInt) = 57[/offtop]
|
|||
карма: 1 |
|
Ответов: 55
Рейтинг: 0
|
|||
nesco писал(а): Реализаци твоего CRC8 на HiAsm-e табличным алгоритмомУ меня после цепочки COM-StreamConverter выходит слитный поток байтов HEX без пауз, а для CRC нужны отдельные байты. Мои поиски способа вставить пробелы между байтами пока безуспешны.Пробовал прикручивать Str_Enum. Теперь у меня полученная строка стоит стабильно без провалов в ноль(данные приходят раз в секунду), но пробел вставить не удалось.Подскажите, поожалуйста, как мне быть. |
|||
карма: 0 |
|
Разработчик
Ответов: 26160
Рейтинг: 2127
|
|||
AVladM писал(а): выходит слитный поток байтов HEX без паузИ что, проблема разбить парами Для моей схемы используется строка, где каждый байт отделен от предыдущего пробелом ------------ Дoбавленo в 17.55: На тебе с разбивкой на пары
|
|||
карма: 22 |
|
Ответов: 55
Рейтинг: 0
|
|||
Спасибо!Программа у меня работает.Для обработки по байтам я разбил строку с помощью Copy, а вот как вставить пробелы между байтами
не сообразил.Для надежности нужно убедится в достоверности принятых данных.Вот отсюда и CRC. ------------ Дoбавленo в 07.22: Проверил "...на математическом методе расчета CRC8" выдает ошибку "List index out of bounds(40)" В версии с разбивкой на пары при неизменной входной строке при каждом нажатии кнопки выдает разный байт CRC Посмотрите, пожалуйста. |
|||
карма: 0 |
|