Forum: Mikrocontroller und Digitale Elektronik Verifizierung


von Daisy D. (daisywarlordduke)


Lesenswert?

Hallo,

Wie kann man die einwandfreie Funktion von z.B. einem I2C Bus in einer 
Schaltung zeigen?

Ich habe von meinem Vorgänger ein paar lose Blätter bekommen und dort 
hat er mit Hilfe von VOH, VOL, VIH, VIL und dessen Toleranzen und einer 
Messung von High and Low Pegeln (Oszilloskop) kurz skizziert das die 
Pegel in Ordnung sind.
Was mir dazu einfällt ist halt der Umstand das Oszilloskope nicht 
wirklich toll sind wenn es um Pegel geht.

Gibt es da etwas besseres? Oder gibt es da fertige Geräte?

Einer der Programmierer meinte man sollte es eher indirekt machen. 
Schreiben / Lesen und sehen ob das wir das Erwartete erhalten.


Wie macht ihr so etwas? Oder simuliert man sowas? Speziell wenn mehrere 
Teilnehmer da sind.

Danke im Vorraus.

von Echter Hardwerker, kein Softie (Gast)


Lesenswert?

Man macht einen "harten" 24h Dauertest mit 95% traffic in einer 
Klimakammer und schaltet dabei die Stromversorgung zwischen unteren und 
oberen Limit.

Und ja, es gibt auch Normen für solche Tests aka Prototypqualifizierung. 
Bspw Stanag 4370.

von Programmierer (Gast)


Lesenswert?

I2C ist notorisch anfällig. Die kleinste Störung kann ihn komplett aus 
dem Takt bringen. Besonders natürlich weil die 1 nur mittels eines 
hochohmigen Signals erzeugt wird (Pullup). Wenn du den Bus wirklich 
verifizieren willst, müsstest du die (garantiert fehlerhafte) 
Logikschaltung der I2C-Peripherie des Controllers kennen und prüfen was 
passiert, wenn in jedem Moment ein Bit falsch ankommen kann. Das ist 
natürlich nicht machbar, weil man darauf keinen Zugriff hat.

Du kannst also höchstens validieren, z.B. durch ausführliche Tests. Du 
kannst versuchen, in jeder Stufe der Kommunikation (Startbit, Adresse, 
ACK-Bits, Datenbits, Stopbit) eine Störung zu produzieren und sehen wie 
das System reagiert.

Ich kann dir verraten wie es ausgeht: Weil die meisten I2C-Protokolle 
keinerlei Konsistenzprüfung (CRC o.ä.) haben, werden unbemerkt falsche 
Daten übertragen. Ein falsch angesteuertes I2C-Gerät kann sich dadurch 
komplett aufhängen. Auch die I2C-Peripherie mancher Controller (z.B. die 
alten STM32) kann sich bei sowas komplett aufhängen und muss hart 
resettet werden.

Falls du also nicht ausführliche Checks in Software machst (CRC, 
Timeouts) und bei Bedarf sowohl die I2C-Peripherie als auch das externe 
Gerät resettest, ist deine Implementation fehleranfällig. Ich hatte mal 
ein PCB wo ich alle 30sec das externe I2C-Gerät mittels Reset-Leitung 
zurückgesetzt habe, weil die ständigen Übertragungsfehler nicht erkannt 
werden können und das Gerät zum abstürzen brachten. In Version 2 wurde 
dann SPI verwendet...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Daisy D. schrieb:
> Was mir dazu einfällt ist halt der Umstand das Oszilloskope nicht
> wirklich toll sind wenn es um Pegel geht.
Kommt auf das Oszilloskop an...

Und natürlich sind Oszilloskope anerkannte Messmittel, wenn es um 
Signalintegrität geht. Ganz herausragend ist z.B. das "Augendiagramm", 
mit dem die Signalqualität von Hochgeschwindigkeitsbussen geprüft wird.

Daisy D. schrieb:
> Wie macht ihr so etwas?
1. Die Signalintegrität sicherstellen: sieht jedes der beteiligten ICs 
an seinen Pins das Signal in der Form wie es im Datenblatt des Bausteins 
für den jeweiligen Pin spezifiziert ist?

2. Sicherstellen, dass das Bit-Timing zu dem passt, was im Datenblatt 
steht.

3. Bei Raumtemperatur ein Dauerlauf mit Dauerlast über Nacht bzw. übers 
Wochenende. Am drauffolgenden (Mon)Tag muss die Software "0 
Übertragungsfehler" melden.

4. Das selbe im Klimaschrank mit Temperaturzyklen von -20°C bis 100°C.

5. Das selbe mit Vcc an der Untergrenze.

6. Das selbe mit Vcc an der Obergrenze.

7. Zwischendurch auch mal den "EMV-Test des kleinen Mannes": 
Beitrag "Re: Tiefentladungsschutz mit Attiny und P-Kanal Fet"

: Bearbeitet durch Moderator
von MaWin (Gast)


Lesenswert?

Daisy D. schrieb:
> Was mir dazu einfällt ist halt der Umstand das Oszilloskope nicht
> wirklich toll sind wenn es um Pegel geht.

Doch, sind sie, auf 1% kommt es dabei nicht an. Und das Ankoppeln eines 
Tastkopfes verschlechtert das Signal höchstens, wenn es dann also immer 
noch innerhalb der Specs ist, ist zwar nicht gewährleistet, dass der Bus 
funktioniert, aber es läge dann an einem Baustein der nicht spec-konform 
reagiert, und nicht am Aufbau.

von Olaf (Gast)


Lesenswert?

> Wie kann man die einwandfreie Funktion von z.B. einem I2C Bus in einer
> Schaltung zeigen?

Wie schon jemand gesagt hat, man kann eine ganze Menge Aufwand treiben
um einen digitalen Bus zu spezifizieren/zertifizieren und in  bestimmten
Anwendungen macht man das auch.

Das Problem bei I2C ist aber leider das es dort keine garantierte
einwandfreie Funktion gibt. Es kann dir da immer passieren das ein 
Slave,
z.B aufgrund eines Uebertragungsfehlers (Surge) ploetzlich SDA und SCL
dauerhaft auf GND zieht und da erst mit einem Powercycle wieder 
rauskommt.
Deshalb hat man ja bei SMB, im Prinzip eine Art I2C, sowohl einen 
minimal
Takt wie auch einen Timeout definiert.

Daher brauchst du dir keine weiteren Gedanken machen, alleine mit
der Wahl von I2C bist du bereits durchgefallen. .-)

Olaf

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

MaWin schrieb:
> Und das Ankoppeln eines Tastkopfes verschlechtert das Signal höchstens
Manche haben es schon geschafft, Busse zu bauen, die nur mit 
angeschlossenem Oszi-Tastkopf liefen... ;-)

War natürlich letztlich trotzdem irgendein Timing verletzt.

von Steve van de Grens (roehrmond)


Lesenswert?

Daisy D. schrieb:
> Was mir dazu einfällt ist halt der Umstand das Oszilloskope nicht
> wirklich toll sind wenn es um Pegel geht.

Doch, genau dafür sind Oszilloskope da. Sie stellen den Verlauf der 
Spannung über die Zeit dar. Damit kannst du prüfen, ob die Pegel 
(LOW/HIGH) im Rahmen sind und ob die Flanken steil genug sind.

Auf 1% Genauigkeit kommt es da nicht an, denn ein korrekt gestaltetes 
Gerät bleibt sowieso weit von den Grenzwerten entfernt.

> Einer der Programmierer meinte man sollte es eher indirekt machen.
> Schreiben / Lesen und sehen ob das wir das Erwartete erhalten.

Diese Trial&Error Methode sagt nichts darüber aus, wie zuverlässig es 
unter anderen Rahmenbedingungen funktionieren wird. Zum Beispiel wenn 
sich die Temperatur ein paar Grad verändert. Als zusätzlicher Test in 
einer Klimakammer macht es allerdings Sinn.

: Bearbeitet durch User
von Olaf (Gast)


Lesenswert?

> Diese Trial&Error Methode sagt nichts darüber aus, wie zuverlässig es
> unter anderen Rahmenbedingungen funktionieren wird.

Das gilt aber genauso auch fuers Messen mit dem Oszi. Da schaden auch 
Messungen im Klimaschrank nicht. Da hab ich schon erstaunliches gesehen.

Olaf

von Klaus R. (klara)


Lesenswert?

Hallo,
wenn man die I2C Spezifikationen einhält, ist I2C schon zuverlässig. I2C 
wurde von Philips entwickelt. Die I2C Spezifikationen sollte man sich 
unbedingt anschauen.

https://www.nxp.com/docs/en/user-guide/UM10204.pdf

Sollte es bei langen Leitungen zu Problemen kommen, dann geht man 
einfach mit der Taktfrequenz herunter. Man muß ja nicht immer mit 100 
kHz oder 400 kHz arbeiten.

Eine Faustformel sagt, Eine Halbierung der Taktfrequenz verdoppelt die 
Reichweite.
mfg Klaus

von Olaf (Gast)


Lesenswert?

> wenn man die I2C Spezifikationen einhält, ist I2C schon zuverlässig. I2C
> wurde von Philips entwickelt.

Es ist zuverlaessig fuer TVs und anderem Consumerkram. Wenn von 
100000Kunden fuenf dabei sind die einmal im Jahr den Stecker ihres TVs 
kurz rausziehen muessen dann ist das nicht weiter schlimm.

Wenn der Spurassistent deines Autos jedes Jahr fuenf Leute in den 
Gegenverkehr lenkt weil I2C haengt ist das nicht akzeptabel.


In der Praxis hat man natuerlich haeufig Anwendungen zwischen diesen
beiden Extremen. Da muss man halt abschaetzen ob man mit den Problemen
leben kann oder nicht. Aber sie lassen sich nicht wegdiskutieren.

Aber Leute die eine "einwandfreie Funktion einer Schaltung" jemand
anderem beweisen wollen, gehoeren tendenziell zu letzerem und nicht
zu kleinen Arduino-Weihnachtsbaumbastlern. .-)

Olaf

von Falk B. (falk)


Lesenswert?

Daisy D. schrieb:
> Wie kann man die einwandfreie Funktion von z.B. einem I2C Bus in einer
> Schaltung zeigen?

Durch diverse Stresstest. Einfach nur im Labor bei Sonnenschein 
einschalten ist zu wenig.

> Ich habe von meinem Vorgänger ein paar lose Blätter bekommen und dort
> hat er mit Hilfe von VOH, VOL, VIH, VIL und dessen Toleranzen und einer
> Messung von High and Low Pegeln (Oszilloskop) kurz skizziert das die
> Pegel in Ordnung sind.

Naja.

> Was mir dazu einfällt ist halt der Umstand das Oszilloskope nicht
> wirklich toll sind wenn es um Pegel geht.

So ein Unsinn!

> Gibt es da etwas besseres? Oder gibt es da fertige Geräte?

Jaja, die Wundergeräte, die alles aufs Mikrovolt genau messen und am 
Ende ein Zettel rauskommt, der dich juristisch bis in alle Ewigkeit 
entlastet.

> Einer der Programmierer meinte man sollte es eher indirekt machen.
> Schreiben / Lesen und sehen ob das wir das Erwartete erhalten.

Das ist ein minimaler Funktionstest. Der ist trivial.

> Wie macht ihr so etwas?

Mit einem möglichst harten Stresstest. Das kann man nahezu beliebig 
aufwändig machen. Minimale/Maximale Temperaturen, dito 
Versorgungsspannungen. Dann mit Störeinkopplungen verschiedenster Art.

>Oder simuliert man sowas?

Nö.

> Speziell wenn mehrere
> Teilnehmer da sind.

Dann kann/sollte man möglichst stressige Dauerzugriffe machen, was der 
Bus hergibt. Und dann schauen, ob und wieviele Fehler auftreten (Keine 
Antwort, fehlerhafte Daten etc.)

von Klaus R. (klara)


Lesenswert?

Olaf schrieb:
> Aber Leute die eine "einwandfreie Funktion einer Schaltung" jemand
> anderem beweisen wollen, gehoeren tendenziell zu letzerem und nicht
> zu kleinen Arduino-Weihnachtsbaumbastlern. .-)

Ja, auch ich kenne solche Projekte. Das erinnerte mich immer an
"Per Anhalter durch die Galaxis".😉

Vogonen,

Anweisungen in dreifacher Ausfertigung unterschrieben, eingereicht, 
zurückgereicht, beanstandet, verloren, gefunden, einer öffentlichen 
Untersuchung unterworfen, wieder verloren und schließlich drei Monate in 
weichen Torf gesteckt und als Feueranzünder wiederverwendet werden.

https://haiopaia.wordpress.com/tag/burokratie/

mfg Klaus

von Programmierer (Gast)


Lesenswert?

Dieses Herumreiten auf der Temperatur macht mich stutzig. So etwas 
popeliges wie eine LCD-Ladungspumpe kann den I²C schon stören. Also eher 
einen Dauertest mit einem kräftigen Störer daneben, aber wichtig dabei: 
Jede einzelne Übertragung gegentesten, also man muss auch wirklich 
sicher sein dass die Daten korrekt ankommen (und nicht nur dass 
überhaupt irgendwelche Daten ankommen).

Andere Datenbusse wie SD-bus, USB, CAN haben nach jedem Datenpaket eine 
Prüfsumme und können somit Fehler erkennen, egal ob sie jetzt durch 
Temperatur, EMV, Wackelkontakt oder whatever ausgelöst werden; bei I²C 
wird fast alles durchgewunken...

von Falk B. (falk)


Lesenswert?

Programmierer schrieb:
> Dieses Herumreiten auf der Temperatur macht mich stutzig. So etwas
> popeliges wie eine LCD-Ladungspumpe kann den I²C schon stören.

Wenn man NULL Plan von Schaltungsdesign und EMV hat.

> Also eher
> einen Dauertest mit einem kräftigen Störer daneben,

Ja, aber einfach einen "Störer" nutzen ist halbgar. Wenn der Koppelpfad 
nicht gegeben ist, passiert da nix. Und anders herum, wenn extrem 
unrealistisch viel einkoppelt, geht gar nix. Das ist nicht so einfach 
abschätzbar, das brauch einiges an Wissen und Erfahrung.

von Programmierer (Gast)


Lesenswert?

Falk B. schrieb:
> Ja, aber einfach einen "Störer" nutzen ist halbgar. Wenn der Koppelpfad
> nicht gegeben ist, passiert da nix.

Naja, oder einfach nur wenig, aber nicht nichts. Wenn da einmal pro 
Stunde ein Bit kippt, muss man den Fall testen. Und wenn man auf 
gekippte Bits testet, hat man automatisch alle möglichen Quellen für 
gekippte Bits mit erledigt, nicht nur Temperatur.

von Olaf (Gast)


Lesenswert?

> Ja, auch ich kenne solche Projekte. Das erinnerte mich immer an

Genau. Bei jedem Projekt rotieren heute mindestens 1GB an Dokumenten
auf ewig auf irgendwelchen Festplatten und werden niemals mehr
angeschaut. :-D

Olaf

von Echter Hardwerker, kein Softie (Gast)


Lesenswert?

Programmierer schrieb:
> Dieses Herumreiten auf der Temperatur macht mich stutzig.

Wieso herumreiten, der Arbeitstemperaturbereich ist nun mal Bestandteil 
der Spec, also muss das Dingens darüber verifiziert werden. Dabei popen 
wegen der Temperaturdrift div. Bauteilparamtere gern noch andere 
Fehldimensionierungen auf.

> Also eher
> einen Dauertest mit einem kräftigen Störer daneben

Störer sind i.d R. nicht Betandteil der Spec. also wird darauf nicht 
getestet. (Ausnahme, das was die EMV bzgl Störeinstrahlung) verlangt

Ich glaube, hier wird "Verifikation" mit "robust machen ohne Wissen über 
erwartbare Störszenarien" verwechselt.

> Andere Datenbusse wie SD-bus, USB, CAN haben nach jedem Datenpaket eine
> Prüfsumme und können somit Fehler erkennen,
> ... bei I²C wird fast alles durchgewunken...

Njein, auch bei I2C kann man das Übertragungsprotokoll um eine CRC 
ergänzen, ist natürlich nicht so bequen wie ne fertige protokollkonforme 
CRC-Hardware.

Die nützt aber auch nichts wenn die Verbindung Scheisse implementiert 
ist, die kann Störungen nur anzeigen aber nicht beheben. Insofern 
ersetzt eine CRC keine Hardware-Fach-KnowHow

von Steve van de Grens (roehrmond)


Lesenswert?

Programmierer schrieb:
> So etwas popeliges wie eine LCD-Ladungspumpe kann den
> I²C schon stören. Also eher einen Dauertest mit einem
> kräftigen Störer daneben

Deswegen testet man ja das gesamte Gerät am Stück. Und für die 
gegenseitige Beeinflussung benachbarter Geräte gibt es Standards samt 
Testprozeduren, an die man sich halten sollte, falls man die Standards 
erfüllen will oder muss.

von Daisy D. (daisywarlordduke)


Lesenswert?

Danke für die vielen konstruktiven Beiträge

Bei einer anderen Firma haben wir das wie von einigen hier vorgeschlagen 
gemacht. Getestet bis die Schwarte kracht. Meist wurde dazu ein Gerät 
gebaut welches das eigentliche Gerät zyklisch ansteuert, etc.

Das ganze Gebilde wurde dann in die Klimakammer, EMC Kammer, usw. 
geschoben. Was man halt so brauchte. Die Versorgung wurde ebenfalls 
variert.

Prüfungen können wir nicht einbauen da wir mit Bausteinen kommuniezieren 
die man nicht programmieren kann.

Ein Kollege von mir hat die High und Low Pegel gemessen und kam auf 
0.45V und 3.2V. Fuer einen der Teilnehmer sind 0.45 jedoch zu hoch.

Danke nochmals

von Dietrich L. (dietrichl)


Lesenswert?

Daisy D. schrieb:
> Das ganze Gebilde wurde dann in die Klimakammer, EMC Kammer, usw.
> geschoben. Was man halt so brauchte. Die Versorgung wurde ebenfalls
> variert.

Du solltest dabei bedenken, das Test eigentlich nur grobe Fehler 
erkennt: Du testest ja nur ein oder auch mehrere Geräte mit Bauteilen, 
deren Streuung der Daten du nicht kennst.
Es kann also durchaus sein, dass später Geräte mit Bauteilen aus anderen 
Chargen Probleme machen, weil Bauteiledaten an der Grenze des vom 
Hersteller spezifizierten Bereichs liegen, aber immer noch im erlaubten 
Bereich. Und diese Fälle gab es bei den Tests bis dato nicht.

Da hilft nur saubere Entwicklung nach z.B. der Wost-Case Methode, wo mit 
der ungünstigsten Kombination der Bauteildaten gerechnet wird. Da ist 
nicht trivial und ziemlich aufwendig und lässt sich durch Testen nicht 
ersetzen.

Lediglich EMC kann man wohl fast nur durch Testen ermitteln, da die 
Berechnung oft schwierig ist!?

von Daisy D. (daisywarlordduke)


Lesenswert?

Hallo  Dietrich L,

Wost-Case Methode das hoert sich sehr interessant an.
Haben wir hier im Forum eventuell Informationsquellen?

Ich bin mir nicht 100% sicher wo, aber ich meine gelesen zu haben das 
selbst Datenblätter nicht bindend sind.

LG

: Bearbeitet durch User
von Dietrich L. (dietrichl)


Lesenswert?

Daisy D. schrieb:
> Ich bin mir nicht 100% sicher wo, aber ich meine gelesen zu haben das
> selbst Datenblätter nicht bindend sind.

Ich gehe davon aus, dass in der Realität nicht alle Bauteile beim 
Hersteller auf Einhaltung der Min-/Max-Daten getestet werden, sondern 
nur Stichproben.
Dann gibt es mit einer gewissen Wahrscheinlichkeit auch Bauteile, die 
außerhalb des Toleranzbereichs liegen. In dem Zusammenhang wird dann 
auch die "Gauss-Verteilung" genannt.
Wie weit das bei heutiger Fertigung und allen Herstellern noch gilt weiß 
ich nicht.
Hier wurde das Thema mal diskutiert:
Beitrag "Wie sind Widerstandstoleranzen zu interpretieren?"

Neben der Worst-Cast-Methode gibt es auch die Monte-Carlo-Methode, die 
mit den Wahrscheinlichkeiten der Datensteuung rechnet. Das ist 
aufwendiger, hat aber den Vorteil, dass bei vielen Bauteilen angenommen 
wird, dass sich Toleranzen auch kompensieren können.
Im Endeffekt geht es aber immer um Wahrscheinlichkeiten, denn auch bei 
Worst-Case können Ausreißer daneben liegen. 100% Sicherheit gibt es im 
echten Leben halt nie...

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.