Forum: Mikrocontroller und Digitale Elektronik Sinnhaftigkeit: i2c mit crc absichern ?


von Frank (Gast)


Lesenswert?

Hallo,

"irgendwie" (hab leider brauchbares Oszi) habe ich manchmal 
Übertragungsfehler auf meinem I2C-Bus. Der Takt beträgt 100Khz, die 
Länge über verdrillte Litze etwa 30cm (Ist das zu viel ?).

Wieviel Sinn macht es, eine CRC-Prüfsume mit einzubauen ?
Die Fehler treten nur manchmal auf.

von Frank (Gast)


Lesenswert?

sollte heissen: KEIN brauchbares Oszi :-)

von Gast (Gast)


Lesenswert?

Ja, CRC klingt gut.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Sicher, daß kein Programmier- / Timingfehler voliegt? Wenn Dir CRC 
hilft, Fehler zu erkennen, dann kannst Du´s ja ruhig mit einbauen. 
Besser ist jedoch, Fehler zu vermeiden. 30cm Kabel auf I2C sind 
keinesfalls schon zu viel.

von Frank (Gast)


Lesenswert?

Ich benutze Routinen aus den Atmel-Application-Notes, ich hoffe 
zumindest dass diese Fehlerfrei sind :-)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Najaa - ein bisserl genauer drüberschauen hat ja noch nicht geschadet. 
Ich denke nicht, daß es unbedingt an mistigem Layout liegt, oder? 
Nötigenfalls kannst Du ja mal die beiden PullUps am Bus von 10k auf 4k7 
verkleinern und gucken, ob es besser wird.

von John S. (linux_80)


Lesenswert?

Und was meinst Du mit verdrillte Litze, welche Litzen sind miteinander 
verdrillt ?
Ein Flachbandkabel mit Gnd zwischen SDA und SCL hat bei 30cm keine 
Probleme, auch bei 400kHz.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

30 cm ist nicht zuviel. Elektrisch stimmt alles? Pull-ups vorhanden und 
korrekt dimensioniert (http://www.mcc-us.com/i2cHowToUseIt1995.pdf)?

Tröste dich: Ein Oszi ist nicht das ultimative Tool zum I2C-debuggen 
(auf was willst du triggern und wie lang sind deine I2C Telegramme...). 
Besser wäre ein Logikanalyzer mit I2C Protokollhandling. Und das ist 
nicht mehr preiswert.

Tipp: In der Artikelsammlung zu I2C ist ein Link zu Cheapi2c. Das 
ist ein brauchbarer I2C-Sniffer, der Linux (irgendeine LiveCD reicht) 
und eine parallele Schnittstelle braucht. Zu den 30 cm: Beim Sniffen 
habe ich mit Cheapi2c den Datenverkehr zwischen einem µP und einem EPROM 
mitgeschnitten - mit einem 2m Druckerkabel zum Sniffer-PC.

von Fabian B. (fabs)


Lesenswert?

Also zumindest die AppNote für I2C von Atmel in Assembler hatte Fehler! 
Einfach so sollte man die nicht als korrekt ansehen.

Gruß
Fabian

von Frank (Gast)


Lesenswert?

Naja, kann schon am "Layout" (=Lochraster) liegen, ich weiss es nicht.
Der Bus ist etwa zu 10% ausgelastet, und es treten 4-5 Fehler in 10 
Minuten auf. Ist nicht wirklich viel..

Ich kann aber 1. keine Fehler brauchen :-) und 2. Würde ich schon gern 
bei den 100Khz bleiben.
Einige Fehler (Arbitration Lost usw) werden ja von I2C-Protokoll schon 
abgefangen, aber diese treten komischerweise nie auf.

Die Widerstände sind schon 4k7. Kann man noch weiter heruntergehen ?
Der Master und alle Slaves sind AVR's.

von Frank (Gast)


Lesenswert?

Verdrillt sind SCL, SDA und Masse.

@Stefan: Danke für die Tips und den Link, werde ich mir mal anschauen !

von Frank (Gast)


Lesenswert?

Cheapi2c gibt es leider nicht mehr.
Aber da ist auch ein Link zu einem Forumsbeitrag, der sehr interessant 
ist.
Es geht dort um einen Sniffer auf ATMega8 Basis.
Wenn ich nicht anders weiterkomme, muss ich mir den mal bauen.



2007-12-17

Time has come to close the door on the 2002-3 Xbox work -- with 2008 
approaching and the various changes in laws over the last year and more 
to be expected.

Although the work was done before the EUCD was enacted, the legal 
landscape is changing all the time, and I don't have a way to assess how 
it stands now, or going on, to keep serving it. Since it is all pretty 
old information anyway now (my Xboxes have been in a landfill for some 
time) it's no great loss. Even the tools like Cheaptag are deprecated 
because they require Parallel printer ports which no longer feature on 
modern PCs.

Anyway -- Happy Christmas and New Year to everyone :-)

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Ich betreibe hier I2C mit 33kHz auf 3m Telefonleitung in LKWs und 
Traktoren.
Das macht Spaß !
Ich habe jetzt auch eine CRC-16 eingeführt - Fehler sehe ich trotzdem, 
die sind aber nicht ganz so schlimm bei mir (reine Anzeige).

Bei 30cm sehe ich keine Chance für elektronische Fehler!
Die Pull-Ups kannst Du auf 2,2k ändern, aber das wird nicht wirklich 
viel bringen.
Hast Du evtl. einen Bug in der Software ?

Ich nutze den Po.Scope als Logicanalysator und I2C-Analyzer zum 
Debuggen. Ist schon nicht schlecht und sehr preiswert.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Das ist schade. Auf der Seite waren ein paar interessante Sachen auch 
ausserhalb XBox-Hacking drauf. Aber ich verstehe auch den Autor.

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Hallo Stefb,


und Du bist ganz sicher, daß Du jetzt keinen Joint in der Hand hast ?
Wie erklärt sich sonst Dein Posting ?

von Kai G. (runtimeterror)


Lesenswert?

Vielleicht einfach mal die Gegenprobe machen:
- Frequenz so weit senken wie's geht
- Leitung so weit kürzen wie's geht
Wenn dann die Fehler weniger werden hat die Schaltung zumindest eine 
Teilschuld. Bei so seltenen Fehlern ist vielleicht auch die andere 
Richtung interessant. Einfach mal die I²C-Frequenz erhöhen und schauen, 
ob dann nur noch Datenbrei ankommt.

Kann es sein, dass du dir von den Platinen hochfrequente Störungen 
einfängst? Ist ohne Oszi aber echt doof :(

Ach ja... rüttel mal ander ganzen Apparatur während des Tests... wenn 
das was am Fehlerbild ändert weißt du ja, wo du suchen musst ;) Denke 
nicht, dass das was bringt, kostet aber nur eine Minute und spart im 
Erstfall mehrere Stunden.

Gruß

Kai

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Bernd Rüter wrote:
> Hallo Stefb,
> und Du bist ganz sicher, daß Du jetzt keinen Joint in der Hand hast ?
> Wie erklärt sich sonst Dein Posting ?

Rauchen tue ich nicht. Aber sind von Wasabi Coated Green Peas solche 
Nebeneffekte bekannt? Von denen habe ich eine halbe Dose intus.

von John S. (linux_80)


Lesenswert?

Und auch mal ohne verdrillen probieren, denn SCL könnte SDA 
beeinflussen, und schon kommt ein andres Bit raus.

von Falk B. (falk)


Lesenswert?

@ Tiny 80 (linux_80)

>Und auch mal ohne verdrillen probieren, denn SCL könnte SDA
>beeinflussen, und schon kommt ein andres Bit raus.

Wen der Slave halbwegs I2C konform ist, dann muss er Pulse kleiner als 
50ns ignorieren. Ich tippe mal auf Masseprobleme, unsaubere 
Versorgungsspanung oder last but not least einen Programmfehler. GGf. 
auch Störpulse von starken geschalteten Lasten, Relais, Motoren etc.

MFG
Falk

von Frank (Gast)


Lesenswert?

Hallo @alle

danke nochmal für die vielen tollen Tips.

Habe das Kabel gegen ein geschirmtes Dreiadriges ausgetauscht und jetzt 
ist
es prima.

Schuld war mein PC-Monitor, der Master lag unmittelbar daneben. Ein 
Stück davon entfernt waren die Fehler verschwunden. Mit dem neuem Kabel 
klappt es aber auch so.
Der Monitor scheint ein richtiger Stahlemann zu sein :-)

von Gast (Gast)


Lesenswert?

Jo, nachdem dem Lesen aller Beträge wäre das auch der nächste noch nicht 
gemachte Vorschlag gewesen, Neonröhren oder Schweißtrafo an/aus/an/aus 
und schauen ob die Fehler auftreten...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.