DOGS102 spinnt (vertikaler Versatz, dann komplett Schwarz)

Sodele, jetzt hab ich das DOGS102 an meiner Ölung dran und im Motorrad in Betrieb.

Folgendes Symptom tritt auf:
Irgendwann (heut morgen wars nach 2km Fahrt) erhält das Display auf einmal einen vertikalen Versatz um etwa 50%. Dabei läuft es über (was unten rausgeht, kommt oben wieder rein).
Es aktualisiert weiterhin ganz normal, nur bleibt eben dieser Versatz bestehen.
Irgendwann später dann, wird es komplett schwarz (es ist ein positiv Display, das heißt alle Pixel sind aktiv oder der Kontrast ist bei 100%).

Ich hatte den Effekt unter Laborbedingungen ein mal beobachtet (da war der Tachoimpuls mit 500hz befeuert) und dachte mir, dass es von der hohen Frequenz kommt. Das kommt aber bei mir in der Praxis nie vor (maximal 33hz können vorkommen).

Auf Störeinwirkungen durch Zündspule oder so sollte es also nicht zurückzuführen sein.
Jetzt habe ich irgendwo im Netz gelesen, dass die SPI Kommunikation durch Interrupt gestört werden kann und somit Befehle verfälscht werden. Kann es sein, dass ich genau ein solches Problem habe? Ich habe da dann noch was von Interrupts maskieren gelesen (um das Problem zu lösen) aber ich weiß nicht, was damit gemeint ist.
Gehts da darum, den Interrupt während der SPI übertragung abzuschalten? Verliere ich dann nicht dadurch automatisch Impulse?

SPI über ca. 1,5m?
Das ist sehr optimistisch.

In Fahrzeugen haben sich 2 Systeme durchgesetzt.
CAN und langsam auch Lin.

In der Industrie RS485

Gemeinsame Eigenschaft, der drei, ist die differenzielle Datenübertragung.

Ich glaube, da solltest du dir was abschauen.

SPI über 1,5m funktioniert bisher jedenfalls deutlich besser als I2C über 1,5m (I2C blieb recht zuverlässig hängen).

Ich bin davon abhängig, was das Display kann, ich kann da nicht einfach CAN herzaubern :wink: (nein ich will kein Lilypad oder sowas mit hinters Display klemmen und das dann mit dem Arduino kommunizieren lassen).
Also muss ich jetzt irgendwie mit dem SPI klarkommen. Davon abgesehen war schonmal ein anderes SPI Display verbaut (da war die Leitung sogar noch deutlich länger) und auch das hat funktioniert. Der Unterschied ist nur, dass es früher ein Textdisplay war und jetzt ist es ein Grafisches.

Ist es wirklich so abwegig, dass der Interrupt das Problem verursacht? Viel macht er nicht (2 Zähler hochziehen und aktuelle millis speichern), aber auch das könnte vielleicht schon zu viel sein.

Gibt es eine Möglichkeit einen Interrupt quasi zu parken, so dass er nicht verloren geht aber geschützten Programmcode nicht unterbricht?

Ist es wirklich so abwegig, dass der Interrupt das Problem verursacht?

Schwer zu sagen....

Ich habe ein NRF24L01+ Netzwerk in Betrieb.
Einige Knoten werden sehr stark mit Interrupts gequält.
Das bremst die Kommunikation mit den Funkmodulen, aber Ausfälle produziert das nicht.

Bei einer SoftSPI Schnittstelle, würde ich dir sofort zustimmen, aber es ist Hardware SPI, oder?
HardwareSPI läuft unbeirrt weiter.

PS:
Du könntest auch dein SPI mit Differezialtreibern nachrüsten.

hust

dann stimme mir mal zu. Ich habs als SoftSPI umgesetzt (das China Board hält sich da scheinbar nicht an das, was der Nano vorgibt, also kannte ich die Pins nicht und zum Löten wars auch deutlich einfacher, weil ich alles schön nebeneinander setzen konnte - Pin 13 ist beim Nano gegenüber).

Ich kann ja testweise einfach den Interrupt verhindern (Kabel raus). Dann ölt er halt vorerst mal nicht normal, das tut aber zum Ausprobieren nicht weh, weil er dann zur Not einfach im Zeitmodus läuft.

Wenn das Problem dann weg ist, dann sollte ich wohl versuchen doch noch Hardware SPI umzusetzen. Das Ätzende daran ist, dass ich dann schon wieder das Kabel unterm Tank durchfummeln muss. Aber ich hab ja mittlerweile Erfahrung...

Ich sehe das Problem in den Störungen die ein Benzinmotor mit Zündung veruchsacht.
Grüße Uwe

Wie erklärst du dir, dass ich das gleiche Symptom auch beim Testen in der Wohnung hatte? Strahlt ein Monitor so stark, dass es das sein könnte?

Zu dem Hardware SPI Problem fällt mir noch ein: Ich lese an manchen Stellen im Netz als mal darüber, dass die LED an Port 13 da ein Problem sein könnte, weil sie zu langsam ist. Allerdings hats mit Hardware SPI an meinem Arduino UNO funktioniert und da ist die 13 auch mit LED. Daher halte ich das für unwahrscheinlich.

uwefed:
Ich sehe das Problem in den Störungen die ein Benzinmotor mit Zündung veruchsacht.
Grüße Uwe

Durchaus...
Auch die Lima feuert gut ins Bordnetz rein.
Die permanent erregten Limas wollen Halbwellen mit ca 60V bzw. 20A ins Bordnetz pressen.
Und der Regler hackt die Halbwellen per Thyristor gegen GND.
Die Batterie, als Puffer, mildert das Gezappel etwas.

Ganz schön dreckig, so ein Bordnetz.
Es kann sich lohnen, da mal ein Ozzi dran zu hängen, damit man mal einen Begriff davon bekommt, was da los ist.

Ich lese an manchen Stellen im Netz als mal darüber, dass die LED an Port 13 da ein Problem sein könnte, weil sie zu langsam ist.

Beim Uno sitzt ein Treiber vor der LED. Diese stellt dann keine Last dar.
Wenn das bei deinem Nano so ist, dann ablöten, oder mit dem Dremel dran.
(habe noch nie davon gehört, dass die LED Sorgen macht. Aber das heißt nix)

Der Treiber beim Uno könnte dann durchaus ne Erklärung sein. Im allerletzen Notfall kann ich auch wieder auf den Uno wechseln. Von dem bin ich ja aber bewusst weg, weil er zu viel Platz gebraucht hat.

Die Led rausmachen will ich ungerne, da zerlöte ich wahrscheinlich eher den ganzen Arduino, wenn ich das versuche.

Jetzt erstmal testen, ob es überhaupt mit dem Interrupt zu tun hat. Insgeheim hoffe ich das ja, dann hab ich wenigstens nen Punkt, an dem ich ansetzen kann.

Also am Interrupt liegts nicht. Abgeklemmt und es tritt nach ner Zeit wieder auf.

Mich wundert halt, dass es auch im Versuchsaufbau aufgetreten ist. Vielleicht ist es aber auch Zufall und im Testaufbau wars der Interrupt und im Motorrad sind es induktive Störungen am Kabel.

Vielleicht ist es aber auch einfach ein Effekt, der nach ner bestimmten Zeit auftritt. Dazu muss ich mal ohne Motor das Ding ca. 10min anlassen und schauen, was dann passiert. Das kann ich mir aber irgendwie nicht vorstellen.

Mir fällt also jetzt nur ein, das Kabel mal obenrum zu legen (weiter weg von den Zündspulen) und dann zu schauen.
Ansonsten halt noch softwareseitig alle Nase lang mal nen Reset feuern als Workaround. Oder irgendwelche Entstörmaßnahmen am Kabel, aber da kenn ich mich leider nicht aus.

Ich hab jetzt nochmal ne Idee, was das Problem sein kann. Ich schwing nochmal den Lötkolben.

Wenn ich euch jetzt aber verrate, was ich vorhabe, dann wird mir hier gleich einer ein "Volldepp" an den Kopf werfen...

Mein Spannungsteiler hat ne Gesamtimpedanz von knapp 7k, das wird wohl vieeeel zu hoch sein. Ich schraub das jetzt mal auf 70ohm runter. Das könnte dann vielleicht auch in etwa als Serienterminator hinhauen (falls das in meinem Fall überhaupt relevant ist, denn die Leitung liegt ja über den Spannungsteiler auch mit auf Masse).

Nachdem ich jetzt die neuen Widerstände drin hab, ist mir eingefallen, dass 70ohm gegen Masse dann doch etwas zu wenig sind (damit bekomm ich dann bei 5V 71mA). Also alles nochmal raus und erhöhen. Zum Glück ist es mir vorher aufgefallen, sonst wär er wahrscheinlich hin gewesen.

Sodele,

gestern wurde der Spannungsteiler ausgetauscht. Von 2,2k/4,7k auf 100/220. Das hat das Problem wohl beseitigt (auf dem Weg zur Arbeit war kein Problem mehr, auch keine kleineren Störungen).