реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> CRC16 speed and compact
afe
сообщение Mar 1 2006, 04:09
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 4-05-05
Из: Харьков
Пользователь №: 4 740



lichno pol'zoval v svoix project'ax neodnokratno

Pls: perenesite v etu temu:

! Исходники программ и библиотек
Прикрепленные файлы
Прикрепленный файл  crc16.c.txt ( 2.4 килобайт ) Кол-во скачиваний: 149
 


--------------------
SY AfE
Go to the top of the page
 
+Quote Post
Rst7
сообщение Mar 1 2006, 06:40
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Раз пошла такая пьянка wink.gif, я делаю вот так - и быстро, и мало по памяти.
Для восьмой меги, для других - править конечный адрес FLASH

#include "iom8.h"
#include "inavr.h"
#include "pgmspace.h"

unsigned int CRC(void)
{
char __flash *p;
char h12=0;
char h0=0;
char h1;
char hl5;
char hh5;

p=0;
do
{
h1=h12; //F E D C B A 9 8
h12=__swap_nibbles(h12); //B A 9 8 F E D C
hh5=h12; //B A 9 8 F E D C
h12^=h1; //FB EA D9 C8 BF AE 9D 8C
h12&=0xF0; //FB EA D9 C8 _ _ _ _
hh5&=0x0F; //_ _ _ _ F E D C
h1^=hh5; //F E D C FB EA D9 C8
hl5=h12; //FB EA D9 C8 _ _ _ _
{
unsigned int i=(hh5<<8)|hl5; //_ _ _ _ F E D C FB EA D9 C8 _ _ _ _
i<<=1;
hh5=i>>8; //_ _ _ F E D C FB
hl5=(char)i; // EA D9 C8 _ _ _ _ _
}
h1^=hl5; //crclo // FEA ED9 DC8 C FB EA D9 C8
h12^=hh5; //crchi //FB EA D9 FC8 E D C FB

h12^=h0;
h0=h1^((unsigned int)p<0x1FFE?(*p):0);
p++;
}
while((unsigned int)p<0x2000);
return(((h12<<8)|h0)!=*(unsigned int __flash *)0x1FFE);
}

void main(void)
{
if (CRC())
{
printf_P((PGM_P)"Flash CRC error!");
}
}

Заточено специально для IAR - тест программной памяти. В опциях проекта (линкера) надо ставить:
Fill unused code memory
Generate checksum
Size 2 bytes
CRC16 (0x11021)
Complement As Is
Bit order: MSB first


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
GxOST
сообщение Mar 1 2006, 08:08
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 58
Регистрация: 6-12-05
Из: Санкт-Петербург
Пользователь №: 11 878



Цитата(afe @ Mar 1 2006, 07:09) *
lichno pol'zoval v svoix project'ax neodnokratno


кстати, процедура для генерации этой таблицы такая:
Код
void initcrc16tab(void)
{
      register  b, v, i;

      for( b = 0; b <= (1<<B)-1; ++b )
      {
            for( v = b<<(W-B), i = B; --i >= 0; )
                  v = v&0x8000 ? (v<<1)^P : v<<1;
            crc16_table[b] = v;
      }
}


--------------------
cul8r!
* #ru_embedded - эмбеддерский чат
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 23:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.02008 секунд с 7
ELECTRONIX ©2004-2016