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

 
 
> 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
 
Start new topic
Ответов
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

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 19:22
Рейтинг@Mail.ru


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