Checksummme unter Bascom

OP Persönliche Seite #632946
Lesenswert?

Hallo Leute,

in Bascom wird der Befehl Checksumsum zur Vefügung gestellt.

Ich hab folgendes Protokoll erdacht:

Sender:
-Aus String Checksumme bilden und an String anhängen
-gesamten String senden

Empfänger:
-Empfangenen String Checksumme abspalten
-aus den gewonnenen String Checksumme bilden
-Checksummen vegleichen
-String ausgeben

Ich will damit ein Slave dazu bewegen seine Daten (Temperatur o.ä.)
bei fehlerhaften Empfang nochmals zu senden.

Ist das so üblich.(konnte kein Bz.eines einfachen Protokolls finden)
Ist das so einigermassen sicher.

Wigbert
Angehängte Dateien:
OP Persönliche Seite #633928
Lesenswert?

Hi Marko,
wenn ein Byte verlohrengeht woher weiss der Empfänger
wie der Sendetext aussah. Eine Checksumme ist die einzige
wahre Aussage.Es sei den die Checksumme würde im Fehlefall
wieder stimmen.Das sind meine Bedenken.
hab in meiner Simmulation nur zum Probieren den Sendetext beim
Empfänger übernommen. Ich wirklichkeit liegen ja dazwischen
"welten"

Wigbert
#633964
Lesenswert?

Wigbert -dl1atw wrote:
> CRC ist schon besser, da er kleine Fehler wohl repariert.

Nein, CRC repariert garnichts. CRC heißt Cyclic Redundancy Check und ist 
eine Prüfsumme, die durch Polynomdivision berechnet oder aus einem 
Tabellensystem abgeleitet wird.

Durch geschickte Auswahl des Generatorpolynoms kann man die Prüfsumme 
besonders sensibel für bestimmte Arten von Übertragungsfehlern machen.

Ich weiß nicht, wie die Checksum-Funktion in BASCOM implementiert ist, 
halte es aber für gut möglich, daß das ein CRC-Algorithmis ist.

Details zu CRC: http://de.wikipedia.org/wiki/Cyclic_Redundancy_Check
Gast #633971
Lesenswert?

Dim Datenarry(9) As Byte                                    'Scratchpad 
0-8 72 bits incl CRC, explanations for DS18b20
'Sc(1)                           'Temperature LSB
'Sc(2)                           'Temperature MSB
'Sc(3)                           'TH/user byte 1         also SRAM
'Sc(4)                           'TL/user byte 2         also SRAM
'Sc(5)                           'config                 also SRAM    x 
R1 R0 1 1 1 1 1 - the r1 r0 are config for resolution - write FF to byte 
for 12 bit - others dont care
'Sc(6)                           'res
'Sc(7)                           'res
'Sc(8)                           'res
'Sc(9)                           '8 CRC ---> * Byte CRC check

Dieser 1WIRE Bus ist schon eine klasse Sache.
Ist aber sehr S-Ran intensiv glaube ich.
OP Persönliche Seite #633973
Lesenswert?

Hi Uhu,
Dein von Dir genanten Beitrag und auch ähnliche in diesem Forum
kenne ich , trotzden Dank , ich dachte da Bascom den Befehl
Checksum nun mal hat.......

bacom-looser ,
da ich auf dem von Dir genannten Forum Mitglied bin
kenne ich auch die dortigen CRC Erklärungen.

Also ist Checksum primitiv? nicht zu gebrauchen?.....

In der Hilfe von Bascom ist der Befehl als Xor-Verknüpfung
wohl erklärt.
Gast #633986
Lesenswert?

Die 8 Daten Bytes werden mit CRC8 berechnet und das Neunte Byte enthält 
die Checksumme.Eigentlich braucht man ja nur die erste zwei Bytes
das steckt die Temperatur drinne.Siehe Beispiel oben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren