Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo, > > ich nutze die CCII Station mit I2C 1-Wire Bridge8 HS (DS2482-800) > und mehreren Sensoren an verschiedenen Ports. > > Um die Funktionssicherheit zu erhöhen und Fehler sauber zu erkennen, wollte ich eine > CRC-Prüfung implementieren. Dazu habe ich eine kleine Funktion abgewandelt, welche > ich an anderer Stelle gefunden habe. Sie funktioniert einwandfrei. > test unter: <a href="http://www.datastat.com/sysadminjournal/maximcrc.cgi" target="_blank">Erics CRC-Generator</a> > Es werden alle 9 Bytes des Scratchpad mit einer for-Schleife ausgelesen. > Problem: > Nur das letzte Byte (CRC) ist falsch. Es ist um genau 1 zu hoch. > Die anderen übertragenen Bytes sind augenscheinlich korrekt. > > Ich finde hier keinen Fehler. Könnte es ein Problem mit > der I2C-Umsetzung sein? > Hier mal die Sensordaten zum Nachrechnen: > T ist die ber. Temp.; den ersten Sensor habe ich rausgezogen, hier müsste das letzte Byte > eigentlich ebenfalls FF sein. Daher vermute ich eine Prob mit der Bridge... > > 12:38:21 E: CRC fail 0 1 > 12:38:21 D: Bytes FF FF FF FF FF FF FF FF 00 > 12:38:22 T -0.1 0 0 > 12:38:22 E: CRC fail 1 1 > 12:38:23 D: Bytes B6 00 4B 46 7F FF 0A 10 A0 > 12:38:23 T 11.4 1 0 > 12:38:23 E: CRC fail 2 1 > 12:38:24 D: Bytes 1A 02 4B 46 7F FF 06 10 AE > 12:38:24 T 33.6 2 0 > 12:38:24 E: CRC fail 3 1 > 12:38:25 D: Bytes 4E 02 4B 46 7F FF 02 10 9F > 12:38:25 T 36.9 3 0 > 12:38:26 E: CRC fail 4 1 > 12:38:26 D: Bytes 0E 00 4B 46 7F FF 02 10 AE > 12:38:26 T 0.9 4 0 > 12:38:27 E: CRC fail 5 1 > 12:38:27 D: Bytes F5 00 4B 46 7F FF 0B 10 D8 > 12:38:27 T 15.3 5 0 > > > <ot> > Ich poste die CRC-Funktion hier, falls jemand anderes sie brauchen kann. > Mit den oft genutzten Lookuptables bläht sich das ganz schön auf, diese hier > gefällt mir besser. > <code> > // bytes als array, Arraygröße als len > function crc8( byte addr[], byte len) returns byte > { > byte crc; > byte i,j,l; > crc = 0; > l = len-1; > for i=0...l > { > byte inbyte; > inbyte = addr[i]; > for j=0...7 > { > byte mix; > mix = (crc ^inbyte) & 0x01; > crc = crc shr 1; > if (mix) > crc = crc ^ 0x8C; > inbyte = inbyte shr 1; > } > } > return crc; > } > </code> > </ot>
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB