Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[EL] SHT75 Vochtigheid & Temperatuur sensor CRC controle

Pagina: 1
Acties:
  • 116 views sinds 30-01-2008
  • Reageer

  • Neptunus
  • Registratie: Januari 2001
  • Laatst online: 13-11 10:50
Ik ben aan het spelen met de SHT75 Vochtigheid & Temperatuur sensor. Heb alles voor elkaar. Kan mooi de Vochtigheid & Temperatuur halen. Ik zou alleen graag een CRC controle willen uitvoeren op de ontvangen bits.

In de datasheet staat uitgelegt hoe dit zou moeten. Ik begrijp er alleen niet al te veel van. Na dat je de bits van de Vochtigheid of Temperatuur hebt ontvangen, zou je ook de crc bits kunnen ontvangen. Deze bits kan ik inderdaad ontvangen. Alleen hoe het bereken van de crc waarde in zijn werk gaat is mij totaal ontduidelijk.

De datsheet van de SHTxx is te vinden op:
SHTx
Toevoeging voor crc controle

Ik heb een vertaling gemaakt van de uitleg in de datasheet voor de controle van de crc controle.

Bytewise met deze implementatie wordt de CRC gegevens opgeslagen in een lijst van de 256 byteraadpleging. Voer de volgende handelingen uit:

1. Initialiseer het CRC register met de waarde van lager knagen aan van de waarde van het omgekeerde statusregister ((s0sß2s3'0000)). (gebrek ' 00000000 ' = 0)

Als ik de eerste datasheet bekijk dan haal de de crc waarde gewoon op na het ontvangen van de Vochtigheid of Temperatuur "zie pagina 3" )

2. XOR elke (overgebracht en ontvangen) byte met de vorige CRC waarde. Het resultaat is de nieuwe byte u de CRC waarde moet berekenen waarvan.

Wat ze hier mee bedoelen is mij totaal onduidelijk, denk dat dit komt omdat ik bij 1 al in de fout ga. De volgende stappen lukken dan natuurlijk niet

3. Gebruik deze waarde als index aan de lijst om de nieuwe CRC waarde te verkrijgen.

4. Herhaal van 2 tot u alle bytes door het proces hebt overgegaan.

5. De laatste byte die van de lijst wordt teruggewonnen is de definitieve CRC waarde.

6. De CRC waarde die van SHTxx wordt teruggewonnen moet worden omgekeerd (beetje 0 = beetje 7, beetje 1=bit 6... beetje 7 = beetje 0) en kan dan bij definitieve CRC waarde (2) worden vergeleken

Zou jullie mij misschien op gang kunnen helpen. Als ik weet wat nu eigenlijk de bedoeling is dan kom ik er wel uit denk ik.

  • FlyEragon
  • Registratie: Oktober 2003
  • Laatst online: 23-11 16:27

FlyEragon

Alien Monkeys

Ik zou eerst even kijken hoe "Cyclic Redundancy Check" precies werkt, dan begrijp je ook beter hoe je dat moet implementeren in je huidige ontwerp.
http://www2.rad.com/networks/1994/err_con/crc.htm

  • Neptunus
  • Registratie: Januari 2001
  • Laatst online: 13-11 10:50
Erkandude schreef op donderdag 30 december 2004 @ 18:07:
Ik zou eerst even kijken hoe "Cyclic Redundancy Check" precies werkt, dan begrijp je ook beter hoe je dat moet implementeren in je huidige ontwerp.
http://www2.rad.com/networks/1994/err_con/crc.htm
Zal alles even doorlezen en dan kijken of ik er uitkom!

  • Sprite_tm
  • Registratie: September 2002
  • Laatst online: 29-10 06:07

Sprite_tm

Semi-Chinees

Waar heb je die vertaling vandaangehaald? 'lager knagen'? Ik denk dat je toch de Engelse versie zal moeten bekijken, anders gaat er echt te veel lost in translation zijn.

Wat je doet. Je hebt een temp register T en je doet het volgende::
• Pak de eerste 4 bits van het statusregister (status & 0x0f dus) en stop die in het tempregister T. (1)
• (*)Byte verzonden of ontvangen? T=T xor (de verzonden of ontvangen byte)
• Pak de lookup table erbij en zoek de T'de entry op. Stop die waarde weer in T.
• Meer data te versturen/ontvangen? Ga terug naar (*)
• De data in T is nu je CRC. Pak de CRC die je sensor gepakt heeft, draai die binair om (76543210 -> 01234567) en kijk of de 2 hetzelfde zijn.

(1): Het lijkt erop dat het statusregister ook eerst bitwise geinverteerd moet worden (76543210 -> 01234567), en dat als je geen rare dingen uithaalt uit deze stap altijd 0 komt. Je zou kunnen proberen om daarmee te beginnen te experimenteren.

Edit: @ Remboooo hieronder: Mja, ik weet, maar dat was even het beste voorbeeld van hoe brak die vertaling was. Ik snapte 'm ook pas toen ik de datasheet opende.

[ Voor 27% gewijzigd door Sprite_tm op 30-12-2004 20:06 ]

Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog


Verwijderd

Sprite_tm > de "lower nibble", oftewel de laagste 4 bits :D
wat een gigantisch brakke vertaling :X

  • the12be
  • Registratie: November 2000
  • Laatst online: 17:33
leuk he die crc check :).....

hier ff een dump van wat links die ik verzameld heb tijdens de crc implementatie van m'n usb gebeuren.

klik
en nog eens
je raad het al <= met applet, erg handig om precies te begrijpen wat er gebeurt
en de laatste <= wel een grote lap text maar wel duidelijk en compleet

Je kan denk ik het best het voorbeeld proberen na te rekenen (op papier) en snappen wat er gebeurt. De code daarna zal niet zoveel werk meer zijn.

je moet maar zo denken, je hebt nog dik 2 weken om het werkend te krijgen :P

  • Neptunus
  • Registratie: Januari 2001
  • Laatst online: 13-11 10:50
HIHI leuk om jou nog eens tegen te komen. En heb inderdaad nog een dikke tweee weken om het werkend te krijgen.
Pagina: 1