Hallo, Ich habe ein Problem mit meinem I2C Bus. Mal funktioniert er, mal nicht. Am Bus hängt ein pcf8574 zu Display Adapter, ein LM75, Ds3231, Rda5807, 24LC24. Habe zu Testzwecken das Display angesteckt mit dem i2clcd Testprogramm. Mal läuft er problemlos bis zu einer Stunde, mal geht er schon nach einer Minute aus, mal Initalisiert er nicht mal das Display. Verschiedene Pullups wurden getestet (10k,4.7k,2.2k,1k) leider ohne erfolg. Ein ändern der Baudrate hat leider nichts gebracht. Genauso wie ein Chipwechsel. (Ich verwende einen Atmega328P) Habe mal ein Bild der Funktionierenden Übertragung angehängt. Die Fehlerhafte konnte ich ohne Speicheroszilloskop nicht aufnehmen. Wie gesagt, mit dem Mikrokontroller ist alles in Ordnung, nur der I2C Bus macht Probleme. Hoffe das mir jemand weiterhelfen kann. mfg
Ja, die Flanken sind nicht schlecht :D Liegt aber daran, das dass Bild gedreht worden ist. (Habe das Bild mal gedreht, hoffe das es richtig hochgeladen wird) Welchen Pullup soll ich da nehmen? 750 oder 500ohm mfg
:
Bearbeitet durch User
Jakob P. schrieb: > Verschiedene Pullups wurden getestet (10k,4.7k,2.2k,1k) Hast du dann wenigstens irgendeinen Unterschied gesehen? Warum sind die Flanken an deinem SDA viel besser? Was hängt denn alles am SCL dran?
Jakob P. schrieb: > Hoffe das mir jemand weiterhelfen kann. Was geht nicht - nur Display, nix geht mehr oder was ?
>Was hängt denn alles am SCL dran? Genau das Gleiche, an dem SDA hängt. > Hast du dann wenigstens irgendeinen Unterschied gesehen? Konnte ich leider schlecht analysieren, da der Bus oft abstürzt. > Was geht nicht - nur Display, nix geht mehr oder was ? Der ganze Bus geht nicht, Normalerweise wird auch die RTC abgefragt, Die Bleibt auch still.
Jakob P. schrieb: > Der ganze Bus geht nicht, Irgendein Device spielt mit Clockstretching rum, ansonsten müsste es gehen. Wenn es nicht mehr geht, irgendetwas senden, mit Oszi aufnehmen.
Mal zur Sicherheit gefragt: ALLE devices haben die selbe Versorgungsspannung???
> ALLE devices haben die selbe Versorgungsspannung???
Nein, der RDA5807 läuft mit 3,3V macht aber keine Probleme.
Hatte den schon mal ausgebaut
> Irgendein Device spielt mit Clockstretching rum, ansonsten müsste
> es gehen.
In dem Programm wurde nur die twimaster library benutzt,
dazu nur der i2clcd demo code
> Wenn es nicht mehr geht, irgendetwas senden, mit Oszi aufnehmen.
Ist schwer, da es ein analoges ist
Jakob P. schrieb: >> Wenn es nicht mehr geht, irgendetwas senden, mit Oszi aufnehmen. > Ist schwer, da es ein analoges ist Egal, dich interessiert in diesem Zusammenhang nur, ob SCL auch wieder auf HIGH geht. Also, wenn es nicht geht, dauernd 0x55 senden (Beispiel), sehen ob SCL sauber durchkommt. ACK oder eine Antwort interessiert nicht, nur SCL.
:
Bearbeitet durch User
Jakob P. schrieb: > Nein, der RDA5807 läuft mit 3,3V macht aber keine Probleme. > Hatte den schon mal ausgebaut Böse, aber OK. Erstmal DAS Standarddokument dazu: http://www.nxp.com/documents/application_note/AN10441.pdf Messe mal im ausgeschaltetem Zustand die Pull-ups mit einem Multimeter (evtl. mehrere parallel, weil jeder Entwickler eines vorgesehen hat?) SDA / SCL-Pin ist definitiv sauber konfiguriert? uC debuggen, dann Register anschauen. Pull-up nicht zu klein auslegen, der die meisten Bausteine vertragen nur ein paar mA am SDA/SCL-Pin. Von TI gibt es ein Appnote zur Dimensionierung: www.ti.com/lit/an/slva689/slva689.pdf Thema Analogoszi: Zeitschleife und dann immer wieder das selbe auf den Bus legen.
So, ich habe versucht ein Test Programm zu erstellen, geht leider nicht, hier der Code: [c] #define F_CPU 16000000 #include <avr/io.h> #include <stdbool.h> #include <stdint.h> #include <avr/pgmspace.h> #include <util/delay.h> #include "i2cmaster.h" int main(void) { i2c_init(); while (1) { i2c_start(0x55); } } [\c]
Jakob P. schrieb: > So, ich habe versucht ein Test Programm zu erstellen, geht leider nicht, Was geht nicht ? Ok, dann regelmässig RTC auslesen und wenn es nicht mehr klappt, in Richtung Oszi schauen...
Wie lang sind die Busleitungen? Wie werden die verschiedenen Module (?) kontaktiert? Klingt alles nach einem Berg China-Modulen mit Jumper-Kabeln verbunden...
So, Hatte jetzt den EEPROM regelmäßig ausgelesen, Das konnte mein Oszi auch anzeigen: Bild 1 ist SCL, Bild 2 ist SDA Habe das Gefühl, das SCL etwas von SDA übernimmt. Lässt sich so etwas ohne große Hardware Änderungen übernehmen? (Der I2C Bus ist auf einer Platine) > Wie lang sind die Busleitungen? Wie werden die verschiedenen Module (?) > kontaktiert? Klingt alles nach einem Berg China-Modulen mit > Jumper-Kabeln verbunden... Nein, der Bus ist auf einer Platine, ~12cm lang Habe ein Bild der Platine angehängt mfg
Jakob P. schrieb: > Nein, der Bus ist auf einer Platine, > ~12cm lang > Habe ein Bild der Platine angehängt Sieht OK aus, zumindest was I2C betrifft. > Bild 1 ist SCL, Bild 2 ist SDA > Habe das Gefühl, das SCL etwas von SDA übernimmt. Nein, mit Pullup gibt es so etwas nicht. SDA sieht 1A aus. SCL auch, Flanken sind auch OK, es gibt auch keine Störspitzen wie bei Bildern am Anfang. Wo sind die Bilder wenn der Bus blockiert ist ?
:
Bearbeitet durch User
> Wo sind die Bilder wenn der Bus blockiert ist ?
Wie gesagt, mit meinem Analogen Oszi lässt sich das leider nicht
aufnehmen.
Kann nur das Problem beschreiben:
1. Strom wird angelegt, SDA/SCL geht auf +5v. Keine Kommunikation
2. Strom geht an, SDA/SCL Kommunication läuft, geht nach einiger zeit
auf 5v
2. Strom geht an, SDA/SCL Kommunication läuft, geht nach einiger zeit
auf GND
Wie gesagt, mal läuft er bis zu 2 Minuten, Mal schreibt er nur 10
Zeichen, mal macht er nichts.
Die Baudrate liegt auf 100khz
Habe das Atmelstudio Projekt angehängt
So, habe nochmal ein Foto vom EEPROM auslese Programm angehängt. Das Problem war, das der Tastkopf nicht kalibriert war. Außerdem war die Baudrate nicht richtig eingestellt. Die Anderen Probleme bestehen weiterhin. Das Display ist immer an dem Board angeschlossen.
Jakob P. schrieb: > Habe ein Bild der Platine angehängt Habe mal ein bisschen mitgelesen (speziell am Board) und gefunden: - Sehr dicke Elkos am Ausgang eines Spannungsreglers sind sehr sehr ungünstig für die Regeleigenschaften, vielleicht zuviel des Guten. Gilt für beide Regler auf dieser Platine (1000uF und zusätzlich 470uF parallel). - Für beide Vcc Pins des 328 sollten ja je ein Abblock-C vorhanden sein. - Die 5V-Versorgung ist schlangenförmig durch die ganze Platine geführt was zu unerwünschten Verkopplungen führen kann. Ich mache bei lagen-losen Versorgungsspannungen immer eine Gitter/Netzstruktur, mindestens aber eine Stern- struktur, nie eine Kette ... - Ich traue nicht dem 3.3V Baustein am 5V Bus. Meine 2 cents
Versuch mal mit den niedrigsten SCL-Takt zu arbeiten. Zwischen den einzelnen Datenbytes Pausen einbauen, gib den Slaves eine Chance die Datenbytes zu verarbeiten ;-)
Jakob P. schrieb: > 4,98 MB > 4,75 MB Ich werde das Gefühl nicht los, dass du den Informationsgehalt deiner Photos maßlos überschätzt :-(
Jakob P. schrieb: >> Wo sind die Bilder wenn der Bus blockiert ist ? > Wie gesagt, mit meinem Analogen Oszi lässt sich das leider nicht > aufnehmen. Wie gesagt, es lässt sich doch aufnehmen. Es geht doch nur darum zu sehen ob SCL OK ist. Wenn der Bus nicht mehr funktioniert, am Oszi nachschauen. In IDLE sollen sowohl SDA als auch SCL High sein. Und du sollst mit deinem Oszi nur kontrollieren, dass dies auch der Fall ist. Was soll da nicht gehen ?
Frickelfritze schrieb: > - Sehr dicke Elkos am Ausgang eines Spannungsreglers sind > sehr sehr ungünstig für die Regeleigenschaften, vielleicht > zuviel des Guten. Gilt für beide Regler auf dieser Platine > (1000uF und zusätzlich 470uF parallel). LM1117 (NS): "The ESR of the output capacitor should range between 0.3Ω - 22Ω". Zu kleiner ESR ist also ungünstig.
:
Bearbeitet durch User
Hallo Jakob, bitte unbedingt mal den Schaltplan zu dem Board posten. Die 5V scheinen durch den Prozessor durchverbunden zu sein. Ich sehe keine Verbindung auf dem Board. Gruß Schaltplan
Schaltplan schrieb: > Die 5V scheinen durch den Prozessor durchverbunden zu sein. Ich sehe > keine Verbindung auf dem Board. Unter den Buchstaben "ATM" zu finden. Aber wie schon angemerkt wurde, fehlt auf einer Seite der Kerko. Nebenbei: Dem Datasheet vom Audioverstärker PAM8403 reicht es nicht aus, dessen Versorgung einfach nur kurz an einen dicken Elko zu hängen.
:
Bearbeitet durch User
Jakob P. schrieb: > Wie gesagt, mit meinem Analogen Oszi lässt sich das leider nicht > aufnehmen. Dein Oszi wird doch wohl einen externen Triggereingang haben, auf den du mit einem Ausgangspin deines µC in deiner Programmschleifen einen sauberen Trigger geben kannst ...
> Wie gesagt, es lässt sich doch aufnehmen. > Es geht doch nur darum zu sehen ob SCL OK ist. > Wenn der Bus nicht mehr funktioniert, am Oszi >nachschauen Normalerweise geht er auf high zurück > LM1117 (NS): "The ESR of the output capacitor > should range between 0.3Ω - 22Ω". Zu kleiner > ESR ist also ungünstig Die Spannung habe ich auch alle geprüft, sind auch alle in Ordnung, an denen liegt es nicht. > bitte unbedingt mal den Schaltplan zu dem >Board posten. > Die 5V scheinen durch den Prozessor > durchverbunden zu sein. Ich sehe keine. > Verbindung auf dem Board. Den Schaltplan kann ich später posten, habe gerade nur handyinternet Mfg
Wolfgang schrieb: > Dein Oszi wird doch wohl einen externen Triggereingang haben, auf den du > mit einem Ausgangspin deines µC in deiner Programmschleifen einen > sauberen Trigger geben kannst ... Das komische ist, dass er nur den Level aufzeigen muss - braucht also überhaupt keinen externen Trigger. Ein popeliges DMM sollte normalerweise auch reichen...
> Dein Oszi wird doch wohl einen externen > Triggereingang haben, auf den du
mit einem > Ausgangspin deines µC in deiner > Programmschleifen
einen sauberen Trigger > geben kannst ...
Das Problem dabei ist, das dass Programm im fehlerfall schon nach
wenigen sekunden abgestürzt ist, so schnell kann ich das nicht
aufnehmen. Ext. Trigger hilft da auch nichts
Jakob P. schrieb: >> Wenn der Bus nicht mehr funktioniert, am Oszi >nachschauen > Normalerweise geht er auf high zurück Manomanoman !!! Ist der SCL auf High wenn der Bus nicht funktioniert ? Ja oder Nein ?
> Ist der SCL auf High wenn der Bus nicht > funktioniert ?
Es liegt kein Takt mehr an, er ist auf high getzogen
Jakob P. schrieb: > Das Problem dabei ist, das dass Programm im fehlerfall schon nach > wenigen sekunden abgestürzt ist, so schnell kann ich das nicht > aufnehmen. Ext. Trigger hilft da auch nichts Wie auf einmal abgestürzt ? Jakob P. schrieb: > Der ganze Bus geht nicht, > Normalerweise wird auch die RTC abgefragt, > Die Bleibt auch still. Was stimmt den nun ? Programm ist abgestürzt oder Bus ist blockiert ? Irgendwann musst du zwischen beiden Möglichkeiten wählen...
Jakob P. schrieb: >> Ist der SCL auf High wenn der Bus nicht > funktioniert ? > Es liegt kein Takt mehr an, er ist auf high getzogen Na also, war das so schwer ? Bus ist in Ordnung, irgendeine Routine blockiert oder resettet deinen uC. Passiert das auch ohne LCD ?
Jakob P. schrieb: > Die Spannung habe ich auch alle geprüft, sind auch alle in Ordnung, an > denen liegt es nicht. Ich unterstelle dir mal: wenn du es nicht schaffst mit dem Oszilloskop den Fehlerfall auf dem I2C Bus darzustellen schaffst du es auch nicht eine eventuelle Verkopplung von Spannungseinbrüchen zwischen zwei 5V-Verbrauchern nachzuweisen. Eine einfache Spannungsprüfung mit dem Voltmeter bringt überhaupt gar nichts. Das gilt auch für die Problematik der "dicken" Elkos sekundärseitig der Spannungsregler.
> Bus ist in Ordnung, irgendeine Routine > blockiert oder resettet > deinen uC. > Passiert das auch ohne LCD ? Wie gesagt, das Lcd Textprogramm habe ich schon hochbeladen i2clcd test.zip Ohne lcd kann ich später mal testen. > Das gilt auch für die Problematik > der "dicken" Elkos sekundärseitig der > Spannungsregler. Soll ich die mal reduzieren? An jedem ic wurde ein Kondensator verbaut.
Jakob P. schrieb: > Ohne lcd kann ich später mal testen. Tu das. >> Das gilt auch für die Problematik >> der "dicken" Elkos sekundärseitig der > Spannungsregler. > Soll ich die mal reduzieren? Nein, nicht nötig, das sind rausgegoolte "Ratschläge" die mit der Realität nichts gemeinsames haben. Natürlich würden es kleinere Elkos auch tun, aber in deinem Fall nichts verbessern oder verschlechtern. > An jedem ic wurde ein Kondensator verbaut. Reicht vollkommen, wenn es so ist - vielleicht sollten 2 an MEGA. P.S. SCL und SDA sind wirklich einwandfrei, lass die Fummelei am Board vorerst sein, wichtiger ist es, das Ganze ohne LCD und zugehörige Routinen auszuprobieren, um den Übeltäter zu finden.
:
Bearbeitet durch User
Jakob P. schrieb: >> Dein Oszi wird doch wohl einen externen > Triggereingang haben, auf den du > mit einem > Ausgangspin deines µC in deiner > > Programmschleifen > einen sauberen Trigger > geben kannst ... > Das Problem dabei ist, das dass Programm im fehlerfall schon nach > wenigen sekunden abgestürzt ist, so schnell kann ich das nicht > aufnehmen. Ext. Trigger hilft da auch nichts Sch..ß Handy
> Sch..ß Handy Das nimmt in 23MP auf :D 5433x3008 Pixel. > Ich werde das Gefühl nicht los, dass du den Informationsgehalt deiner > Photos maßlos überschätzt :-( > Nein, nicht nötig, das sind rausgegoolte "Ratschläge" die mit > der Realität nichts gemeinsames haben. Natürlich würden es > kleinere Elkos auch tun, aber in deinem Fall nichts verbessern > oder verschlechtern. Sehe ich auch so, viel hilft viel :D Keine Sorge mit deinem Modem dauert es nur 11m 54s. Das Problem ist, das dass Forum die Bilder dreht. Habe mal ein Video von SCL gemacht, die Spannung ist 3V, SDA aber 5v man kann sehr gut sehen, das SCL, auf 5V zurückgeht. Was könnte das für ein Fehler sein? mfg
Frickelfritze schrieb: > - Sehr dicke Elkos am Ausgang eines Spannungsreglers sind > sehr sehr ungünstig für die Regeleigenschaften, vielleicht > zuviel des Guten. Gilt für beide Regler auf dieser Platine Nur gut, dass die Spannungsregler das nicht wissen. In der Realität: Großer Quatsch. Jakob P. schrieb: > Das Problem ist, das dass Forum die Bilder dreht. Das Forum dreht keine Bilder, auch Du gehörst zu den Smartphonekiddies, die nicht realisieren, dass ihre lokale Umgebung Unfug macht.
In dem Moment, wo dein Gerät hängt, sind also SDA und SCL dauerhaft auf High Pegel, richtig? Dann hängt dein Bus nicht, sondern du hast ein Softwareproblem.
Jakob P. schrieb: > WP_20170318_14_26_48_Pro.mp4 (86,6 MB, 109 Downloads) >> Sch..ß Handy > Das nimmt in 23MP auf :D > 5433x3008 Pixel. Katzenvideos sind schon schlimm genug. Muss man jetzt auch noch fast inhaltslose 80er-Jahre Oszi-Bilder als Video im Netz verewigen? Ein kleiner Logikanalysator, mit dem du minutenlang deine Signale mit sämtlichen Hängern auf einem PC aufzeichnen kann, kostet bei ebay keine 7€. (z.B. 201541710029). Oder hast du nur dieses alberne Smart-Phone?
> Muss man jetzt auch noch fast inhaltslose 80er-Jahre Oszi-Bilder > als Video im Netz verewigen? Die BMP Bilder von meinem Digital-Oszilloskop sind komprimiert ca 10-20 Kilobytes klein. > Oder hast du nur dieses alberne Smart-Phone? Vorsicht, das ist schon fast eine Beleidigung. Hobby-Bastler fangen normalerweise mit nichts an und kaufen sich das Sinnvolle Equipment nach und nach. Dafür sollte man verständnis aufbringen. Apropos Smartphone: Meins fragt mich vor dem "Teilen" von Bildern, ob ich sie verkleinern möchte. Dafür gibt es sicher auch eine App. Ansonsten nimm dazu Paint - das ist inzwischen nicht mehr ganz so unbrauchbar, wie damals zu Windows 95 Zeiten.
Jakob P. schrieb: > Am Bus hängt ein pcf8574 zu Display Adapter, Wie sieht der denn aus? Ist das so ein Fertig-Teil? Ein Schaltplan Deiner Platine wäre auch nicht schlecht. Ich hab Dein Programm mal compiliert (mit anderer Adresse und PIN-Belegung) und ein 4-zeiliges Display via China-PCF8574-Adapter drangehägt. Initiiert und läuft ohne Probleme - egal wie oft gestartet und derzeit seit ca. 40 Minuten ohne Probleme.
Durch einige tests schließe ich auch auf das lcd adapter modul. Wenn ich den chip ohne Controller starte läuft der i2c bus. > Wie sieht der denn aus? Ist das so ein > Fertig- Teil? > Ein Schaltplan Deiner Platine wäre auch nicht > schlecht. Ist ein selbstbaumodul nach schaltplan eines chinamodules (pcf8574,100nf,2x 10k für i2c) Den Schaltplan kann ich hochladen wenn ich wieder am pc bin > Ein kleiner Logikanalysator, mit dem du > minutenlang deine Signale mit sämtlichen > Hängern auf einem PC aufzeichnen kann, kostet > bei ebay keine 7€ Wird noch geliefert...
:
Bearbeitet durch User
Stefan U. schrieb: > Die BMP Bilder von meinem Digital-Oszilloskop sind komprimiert ca 10-20 > Kilobytes klein. Bei PNG gibt es nicht mal die Diskussion über zusätzliche Kompression, ebenfalls nur wenige kB für ein Oszi-Bild Stefan U. schrieb: > Vorsicht, das ist schon fast eine Beleidigung. Hobby-Bastler fangen > normalerweise mit nichts an und kaufen sich das Sinnvolle Equipment nach > und nach. Dann guck dir doch mal die Textformatierung an, die da rauskommen. Das reißen auch 5MB für ein Photo, dessen Inhalt man genauso gut in 200 kByte packen kann oder Bilder mit 23MPixeln nicht raus, sorry. Jakob P. schrieb: >> Bus ist in Ordnung, irgendeine Routine ... Jakob P. schrieb: >> Dein Oszi wird doch wohl einen externen ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.