mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CRC8 <==> SAE J1850 - was mache ich falsch (Bascom)


Autor: Frank Miketta (Firma: CarHifi-Store) (carhifi-store)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

auf Empfehlung bin ich nun hier gelandet - wenn es hier keine Lösung 
gibt geht es nicht, hieß es ;-)

Mein Problem: Ich muss eine CRC-Checksumme nach SAE J1850-Standart über 
10 Datenbytes erstellen. Die Bascom-CRC-Routine kann ich nicht nehmen 
weil sie 8C (Dallas) als Generatorpolynom nimmt. Nach Wiki muss ich 1D 
als Polynom nehmen. Also hab ich mir eine Routine geschrieben bei der 
ich das Polynom frei einsetzen kann:

[quote]
Dim Ar(10) As Byte
Dim Temp1 As Byte                                           ' Temporäre 
Variable
Dim Temp2 As Byte                                           ' Temporäre 
Variable

Dim X As Byte

Dim Crc As Byte
Dim Crcpoly As Byte

Dim Bytecounter As Byte
Dim Bitcounter As Byte


Ar(1) = &HB2
Ar(2) = &HD0
Ar(3) = &HE0
Ar(4) = &H70
Ar(5) = &H00
Ar(6) = &H00
Ar(7) = &H00
Ar(8) = &H00
Ar(9) = &H00
Ar(10) = &H00


Crcpoly = &H1D

Gosub Calc_crc


Print Hex(crc)
Crc = Crc8(ar(1) , 10)
Print Hex(crc)

End

Calc_crc:
Crc = 0

For Bytecounter = 1 To 10
    Temp2 = Ar(bytecounter)
        For Bitcounter = 0 To 7

           Temp1 = Temp2 Xor Crc
           Temp1 = 1 And Temp1

            Shift Crc , Right
           Crc = Crc And &HFF

            Shift Temp2 , Right
           Temp2 = Temp2 And &HFF

               If Temp1 <> 0 Then
                  Crc = Crc Xor Crcpoly

               End If


        Next


Next

Return
[/quote]

Die Routine funktioniert, wenn ich 8C einsetzte bekomme ich das gleiche 
Ergebnis wie die CRC8-Routine berechnet.

Setze ich aber die 1D ein bekomme ich nicht das richtige Ergebnis nach 
J1850 zurück. Hat SAE J1850 noch andere Eigenheiten von denen ich nichts 
weiß? Habe hier noch zwei Beispiele von kompletten Datensätzen, das 
letzte Byte ist die CRC die zurückkommen [i]müsste[/i].

[quote]
'A2 82 50 00 00 00 00 00 00 00 4D
'B2 D0 E0 70 00 00 00 00 00 00 88
[/quote]

Bitte helft mir - Google ist schon heißgelaufen und in der Suche hab ich 
auch nichts weiteres gefunden.

Gruß Frank

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.