16 Bit Crc Error Correction
Contents |
The remote host or network may be down. Please try the request again. Your cache administrator is webmaster. Generated Thu, 29 Sep 2016 19:12:06 GMT by s_hv720 (squid/3.5.20)
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us 16 bit crc polynomial Learn more about Stack Overflow the company Business Learn more about hiring developers
16 Bit Crc Lookup Table
or posting ads with us Stack Overflow Questions Jobs Documentation Tags Users Badges Ask Question x Dismiss Join the Stack Overflow 16 bit crc c code Community Stack Overflow is a community of 4.7 million programmers, just like you, helping each other. Join them; it only takes a minute: Sign up Is it possible to do rudimentary error correction http://srecord.sourceforge.net/crc16-ccitt.html with CRC? up vote 8 down vote favorite 6 I know the whole intention of using CRC is to do error detection, but I heard someone state that it can be used to do basic error correction in addition to error detection. I was curious if this was the case, and if so, how powerful is it? I mean, we usually refer to CRC as capable of http://stackoverflow.com/questions/3788570/is-it-possible-to-do-rudimentary-error-correction-with-crc performing x-bit detection, but I'm curious if it is capable of performing x-bit correction. If so, how does this work? Thanks. crc error-correction share|improve this question edited Jan 9 '15 at 17:30 user2864740 35.1k43678 asked Sep 24 '10 at 15:30 naivedeveloper 1,04431733 add a comment| 3 Answers 3 active oldest votes up vote 9 down vote accepted It is possible to do single-bit error correction with a CRC. Assume one has a CRC "register" and has functions to run the CRC algorithm forward and backward a bit at a time, ignoring incoming data int crc_forward(int old_value, int data_bit) { if (old_value & 0x8000) return ((old_value ^ 0x8000) SHL 1) ^ 0x1021 ^ data_bit; else return (old_value SHL 1) ^ data_bit; } int crc_reverse(int old_value) { if (old_value & 1) return (old_value SHR 1) ^ 0x8810; else return old_value SHR 1; } Suppose one has a packet which is computed so that initializing the crc to some value and running crc_forward for each bit (MSB first) should yield zero. If one gets a CRC value other than zero, one can run the algorithm in reverse (ignoring data bits) until the computed CRC value is 1. That's the location of the incor
Witness ExpertiseProduct Liability Automotive Electronics Medical Device Design Computer Security Process & Architecture Safety & Reliability all... How-ToArticles Books Coding Standard Glossary Webinars Skills Tests Surveys BlogsNews http://www.barrgroup.com/Embedded-Systems/How-To/CRC-Math-Theory Barr Code Coding Standards Device Security Expert Witness Software Safety Registration for Fall Training Courses Now Open. See our complete training calendar. Glossary Find definitions for technical terms in our Embedded Systems Glossary. A B C D EF G H I JK L M N OP Q R S TU V W X YZ Symbols Test Your 16 bit Skills How good are your embedded programming skills? Test yourself in the Embedded C Quiz or the Embedded C++ Quiz. Newsletter Signup Want to receive free how-to articles and industry news as well as announcements of free webinars and other training courses by e-mail? Signup Today! CRC Series, Part 2: CRC Mathematics and Theory Wed, 1999-12-01 00:00 - 16 bit crc Michael Barr by Michael Barr Checksum algorithms based solely on addition are easy to implement and can be executed efficiently on any microcontroller. However, many common types of transmission errors cannot be detected when such simple checksums are used. This article describes a stronger type of checksum, commonly known as a CRC. A cyclic redundancy check (CRC) is is based on division instead of addition. The error detection capabilities of a CRC make it a much stronger checksum and, therefore, often worth the price of additional computational complexity. Additive checksums are error detection codes as opposed to error correction codes. A mismatch in the checksum will tell you there's been an error but not where or how to fix it. In implementation terms, there's not much difference between an error detection code and an error correction code. In both cases, you take the message you want to send, compute some mathematical function over its bits (usually called a checksum), and append the resulting bits to the message during transmission. Error Correction