Zákerácka chyba...

Všetko možné na prevetranie mozgových závitov.

Moderátori: Merak, Moderátori

Používateľov profilový obrázok
Radus
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1497
Dátum registrácie: 27 Okt 2009, 00:00
Bydlisko: Prešov
Vek: 42

Zákerácka chyba...

Príspevok od používateľa Radus » 01 Feb 2020, 12:37

Tento kód, nepracuje správne, komilátor nevyhodí ani warning, sedel som nad tým asi hodinu. Ide len o výpočet CRC.
Kto prvý? Keď je to napísané spolu, je to asi vyditeľnejšie, ale ja som mal tú funkciu v inom súbore...

Kód: Vybrať všetko

//CRC8 setting
#define SCD30_CRC8POLYNOMIAL					0x31
#define SCD30_CRC8INITIALIZATION				0xFF

int Compute_CRC_with_initVal_def(int initVal, int poly, int *bytes_array, int bytes_count);

int main()
{
	uint8_t tempArr2[2];

	tempArr2[0] = 0xBE;
	tempArr2[1] = 0xEF;
	uint8_t crc = Compute_CRC_with_initVal_def(SCD30_CRC8INITIALIZATION, SCD30_CRC8POLYNOMIAL, (int*)tempArr2, 2);
	
}


int Compute_CRC_with_initVal_def(int initVal, int poly, int *bytes_array, int bytes_count)
{
	int i, j;
	int c;
	int CRC = initVal;
	for (j = 0; j < bytes_count; j++)
	{
		c = bytes_array[j];
		CRC ^= c;
		for (i = 0; i < 8; i++)
			if ((CRC & 0x80) != 0) CRC = (CRC << 1) ^ poly;
			else CRC <<= 1;
		CRC &= 0xff;
	}
	return CRC;
}
pre výstrahu ostatným :)
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Zákerácka chyba...

Príspevok od používateľa peterple » 01 Feb 2020, 13:20

odkedy je v C int dlhý 1byte?
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

nalimko33
Ultimate člen
Ultimate člen
Príspevky: 4484
Dátum registrácie: 29 Dec 2008, 00:00
Bydlisko: Košeca
Vek: 51

Re: Zákerácka chyba...

Príspevok od používateľa nalimko33 » 01 Feb 2020, 13:33

tých chýb je v tom texte viac - "vyditeľnejšie"
0
SHARP MZ-811

Používateľov profilový obrázok
Radus
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1497
Dátum registrácie: 27 Okt 2009, 00:00
Bydlisko: Prešov
Vek: 42

Re: Zákerácka chyba...

Príspevok od používateľa Radus » 01 Feb 2020, 16:31

...áno, áno, ospravedlňujem sa najprv za gramatické chyby. Funkcia bola najprv napísaná pre typ uint8_t, ale potreboval som ju postaviť univerzálnejšie aby požila aj iné typy, tak som použil int, aj keď lepšie by bolo unsigned int, preto tá definícia " int *bytes_array".
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok