| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| CRC16 въпрос http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=2817 |
Страница 1 от 1 |
| Автор: | ToHu [ Нед Авг 27, 2006 1:08 pm ] |
| Заглавие: | CRC16 въпрос |
абе аз все си ползвам един мой алгоритъм, който обаче никога не съм проверявал дали дава същиея резултат като калкулаторите. Компилирам аз днес на х51 ядрото и се оказва че не отговаря, а тоя път от другата страна да речем не е мой софт и би трябвало да генерира по някой от стандартните. Предплагам проблема е полинома .... Значи какво пробвах ... unsigned int CRC16( char *source, unsigned int size) { unsigned int crc = 0, i; for(i = 0; i < size; i++) { crc = CRC16_table[(crc >> } return crc; } тук ползвам таблица. Пробвах на приев кода от някаква тема, но също не получавам резултат като с калкулаторите, пробвах и един друг мой алгоритъм който не е табличен, ама някак все не е като в калкулатора, за това на CCS няма да говорим |
|
| Автор: | bateAz [ Нед Авг 27, 2006 1:14 pm ] |
| Заглавие: | |
(*source+i) дали дава същото като *(source+i) |
|
| Автор: | syscop [ Нед Авг 27, 2006 2:16 pm ] |
| Заглавие: | |
Едва ли |
|
| Автор: | ToHu [ Нед Авг 27, 2006 2:16 pm ] |
| Заглавие: | |
ами ... за тов аможе да се помисли, ама е факт че първата перация е прави с първия байт от масива .....но .. все пак сега ще пробваме да видим .... да де .. малко съм тъп, ама т е малко ... на първия наистина не оказва влияние, все пак е 0 не че като го оправих ми дава същото CRC като калкулатора де, но мерси за корекцията, даже не бях се замислил какво съм написал |
|
| Автор: | Nikola Kirov [ Нед Авг 27, 2006 5:28 pm ] |
| Заглавие: | |
http://www.lammertbies.nl/comm/info/crc ... ation.html |
|
| Автор: | ToHu [ Нед Авг 27, 2006 7:00 pm ] |
| Заглавие: | |
тъкмо тоя калкулатор ползвам. А алгоритъма е кейлски ако не се лъжа по горе, с лека модификациа само в предаването на данните към функциите. п.с. и между друото на две три места съм го ползвал и си работи, само дето сега забелязвам че това дето връща не е като на нормалнот CRC16, най-вероятно таблицата е правена за друг полином. |
|
| Автор: | Wise [ Нед Авг 27, 2006 7:09 pm ] | |||||||||
| Заглавие: | ||||||||||
или за друга първоначална стойност на регистъра виждал съм и с инверсия да се полозва полинома //аз имах същия проблем за CRC8 , но с програмиста си уточнихме мерките и стана// |
||||||||||
| Автор: | ToHu [ Вто Авг 29, 2006 11:33 pm ] |
| Заглавие: | |
Мдааа този сорс по горе ... ясно защо не ще ....трябва да е ето така : crc = CRC16_table[(crc >> 8 & 0xFF) ^ *(source+i)] ^(crc << това е добър пример защо copy/paste не е добре да се прави, и това е нещо дето съм го ползвал на няколко места ..... |
|
| Автор: | ¶ [ Вто Авг 29, 2006 11:53 pm ] |
| Заглавие: | |
Моето CRC16 използва полинома 0xA001. Погледнах линка на калкулатора, който си дал, преди доста време се дзверих и аз с него, обаче така и така не можах да докарам правилно CRC16 с този калкулатор и с полином 0xA001. Моето със сигурност смята вярно CRC16, тъй като иначе нямаха да ми работят програмите с LonWorks мрежите на Echelon Пак в този линк, по-долу има сорсове на Ц за изтегляне, смятащи CRC16, що не видиш те как се държат ? |
|
| Автор: | ToHu [ Сря Авг 30, 2006 12:12 am ] |
| Заглавие: | |
Ами тръгна, генерира вече както трябва, имаше грешка в сорса, естествено сега като е загледах по подробно я забелязох, това кеото се вземасхе от таблицата не бесхе резултат от текущата стойност а т предходната. Малко извратено, не знам нарочно лие било така направено, и доколко в тоя вид открива както и нормално CRC. |
|
| Автор: | TheWizard [ Сря Авг 30, 2006 12:31 am ] |
| Заглавие: | |
При някой CRC има следното CRC32 = 0xFFFFFFFF; // CLEAR CRC CRC32 = CalculateCRC32(buffer, len);// с таблица CRC32 = ~CRC32; не се споменава в документациите за сетване и накрая НОТ - откъдето идва видима "Грешка", иначе сорса за Калкулация си е напълно правилен |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|