Hallo Forum, ich habe an meinem Raspberry Pi (Modell B Rev 2) ein LCD-Display per Pegelwandler am I2C-Bus und möchte nun den Digitalpoti MCP4551 (I2C-fähig) ebenfalls daran anschließen. Sobald ich den Poti parallel an SCL und SDA anschließe, ist das Display nicht mehr ansprechbar und i2cdetect braucht extrem lange (gefühlt 30 Sekunden), um seine Adressliste auszugeben. Die ist daraufhin leer, weil nichts gefunden wird. Sobald ich den Poti wieder entferne, läuft alles wieder normal. Das LCD kann ganz normal angesprochen werden und i2cdetect spuckt in einer halben Sekunde seine Liste (mit gefundener LCD-Adresse) aus. Meine Vermutung war zunächst, dass ich den Mikrochip falschrum angeschlossen hätte. Das glaube ich nun nicht mehr, weil ein kleiner Kreis Pin1 kennzeichnet, wie Google mir verrit (http://www.raviyp.com/embedded/150-identifying-pin-no-1-on-an-ic), und der Anschluss dann doch stimmen müsste. Auf Github (https://github.com/raspberrypi/linux/issues/1467) steht, dass eventuell zusätzliche Pullup-Wiederstände nötig wären, ohne zu verraten, welche. Intern hat der Raspberry wohl 1,8K-Widerstände am I2C, die fest verlötet sind. Wenn ich also welche anfügen würde, wären sie ja parallel geschaltet und hätten kaum Effekt. Hat jemand eine Idee, wie ich den Chip an's Laufen kriege? Ich tappe ziemlich im Dunkeln und weiß nichtmal, ob ich bei der Fehlersuche auf dem richtigen Pfad bin.
:
Bearbeitet durch User
Hallo, vielleicht wird die Kapazität durch den zusätzlichen Busteilnehmer zu groß. Hast Du schon mal mit dem Oszilloskop die Signalform angeschaut? Welche Taktgeschwindigkeit ist eingestellt. Durch Parallelschaltung eines Widerstandes könnte man Rückschlüsse ziehen auf den bereits wirksamen Pullup-Widerstand. Mit freundlichem Gruß
:
Bearbeitet durch User
Hallo, das hört sich nach falsch verdrahtetem Poti-IC an. Für eine weitere Analyse des Problems ist der Schaltplan notwendig. Alles andere ist reine Spekulation. Gruß TK
Hast du den Mcp vor oder hinter dem Pegelwandler angeschlossen? Und mit welcher Spannung werden beide Bauteile betrieben? Vielleicht wird der Buspegel über die internen Schutzdioden des Mcp beeinflusst?
Neinein, ich bin absoluter Anfänger. So was tolles wie ein Oszilloskop wäre für mich viel zu teuer. Ich hatte mich gerade deshalb für I2C-Bausteine entschieden, weil der Standard sehr anfängerfreundlich zu sein scheint. Beim Display hatte ich sofort Erfolg. Mit zwei Bausteinen gibt's nun Probleme. Hab auch mal den Poti alleine angeschlossen - gleiches Bild: i2cdetect braucht extrem lange und findet nichts. Es muss also irgendwie mit dem Chip und/oder meiner Verkabelung mit diesem zu tun haben. Edit: Ich sehe gerade, meine Antwort hat sich mit anderen gekreuzt: Spannung ist 3,3V. Verkabelung ist extrem simpel: Die beiden Leitungen SCL und SDA vom Poti sind an den beiden Pins SCL und SDA des Raspberrys eingestöpselt. Gleiches beim LCD-Display. Ein Breadboard macht die multiple Verwendung der Raspberry-Pins möglich. Deshalb kann ich also mehrere Sachen am selben Pin anschließen. Natürlich werden LCD und Poti zusätzlich mit Strom versorgt, wie in den Datanblättern gefordert. LCD braucht 5V, der Poti kriegt 3,3V (laut Datenblatt ist alles zwischen 1.8V und 5.5V okay).
:
Bearbeitet durch User
> Es muss also irgendwie mit [..] meiner Verkabelung mit diesem zu > tun haben. Wie ist selbige denn? Gnd und Vcc ordentlich verbunden?
Ohne Messmittel ist das alles etwas schwierig. Vielleicht gibt es irgendjemand in der Umgebung, der zumindest mal per Oszilloskop auf die Signale schauen kann? Und dann gibt es da noch das geniale Werkzeug Logic Analyzer, welches Du dir für unter 10€(!) zulegen kannst. Gerade bei I2C Entwicklungen eine absolut geniale Sache. Du benötigst z.B. einen "Saleae Clone" und die freie Software Sigrok. Logic Analyzer hört sich vielleicht kompliziert an, ist aber sehr einfach in der Anwendung. Der nimmt auf bis zu 8 Leitungen hochfrequent die Signale auf (aber nur den Logic Pegel, nicht das analoge Signal), diese werden dann nach der Aufnahme von der PC Software interpretiert und z.B. als I2C Signale dargestellt. So kannst Du genau verfolgen, was gerade passiert.
??? VSS liegt an Masse. VDD ist mit 3,3V verbunden. P0B ist ebenfalls mit 3,3V verbunden. P0W soll dann die abgegriffene Spannung rausführen. Ich hab mal schnell ein Bild gemalt.
Welches Display? Hast du die Fragen nach den Adressen gelesen (und kannst damit was anfangen)?
Mir würde dann noch einfallen, dass die Taktgeschwindigkeit deines Busses zu hoch sein könnte. Kannst du die reduzieren auf 400kHz oder weniger zum Testen?
Peter K. schrieb: > LCD braucht 5V, der Poti kriegt 3,3V (laut > Datenblatt ist alles zwischen 1.8V und 5.5V okay). Könnte auch das Problem sein: I2C an 5V- und 3.3V-Bausteinen gleichzeitig. Wenn das Digitalpoti schon mit 5V betrieben werden kann, dann mach das doch mal - vorausgesetzt der Prozessor wird auch mit 5V betrieben.
Ich hab mir erstmal ein paar Bookmarks zu "Saleae Logic Analyzer" und "Sigrok" angelegt. Das sieht ja sehr interessant aus. Ja, das mit den Adressen habe ich gelesen, ich weiß auch was gemeint ist. Jedoch schrieb ich ja schon, dass das Problem auch auftritt, wenn nur der Poti angeschlossen ist und ich das Display abklemme. Ich weiß gerade nicht, welche Adresse der Poti hat (man kann wohl zwischen zwei wählen...Moment mal...vielleicht sollte ich A0 mal mit GND verbinden, um den runterzuziehen. Ich verstehe das hier nicht im Datenblatt: A0 ist für zwei Sachen zuständig: High Voltage Command und Address0. Die Pins A2 und A1 gibt es bei dieser Single-Poti-Version nicht und würde das vorvorletzte und vorletzte Bit der Adresse definieren. A0 definiert das letzte Bit der Adresse...und eben auch diesen High Voltage Command. Dass mit der Geschwindigkeit ist mir hier im Datenblatt auch irgendwo begegnet. Ahja, hier: Standard-Mode sind 100 KHz, Fast 400 Khz, High-Speed 1.7 1,7 Mhz und High-Speed 3.4 3,4 Mhz. Ich weiß jetzt nicht, was der Raspberry benutzt. Ich bin einfach vom Standard-Mode ausgegangen. Achja, hier steht noch, dass A0 intern per Widerstand mit VDD verbunden sei. Vielleicht sollte ich den dann doch nicht runterziehen? Eigentlich steht hier auch nichts davon. Edit: Nein 3,3V und 5V können am Raspberry nicht gemischt werden. Der stirbt dann. Deswegen ja der Pegelwandler vor dem I2C-Display. Mein Problem bleibt aber bestehen, wenn ich das Display abklemme.
:
Bearbeitet durch User
Versteht das jemand? Stammt aus dem Datenblatt (Seite 43): "Address 0 is multiplexed with the High Voltage Command (HVC) function. So the state of A0 is latched on the MCP4XXX’s POR/BOR event. The state of the A2 and A1 pins should be static, that is they should be tied high or tied low. 6.1.3.1 The High Voltage Command (HVC) Signal The High Voltage Command (HVC) signal is multi- plexed with Address 0 (A0) and is used to indicate that the command, or sequence of commands, are in the High Voltage mode. High Voltage commands are sup- ported for compatibility with the nonvolatile devices. The HVC pin has an internal resistor connection to the MCP45XX/46XXs internal VDD signal." Auf Seite 46 ist dann eine Tabelle. Da steht, dass die Adresse für meinen Poti " ‘0101 11’b + A0 " lautet. B heißt wahrscheinlich Bit oder Byte. Dann steht da noch: "The state of the A0 address pin is latch on POR/BOR. This is required since High-Voltage commands force this pin (HVC/A0) to the VIHH level." Ich glaube, ich zieh den Pin einfach mal runter (oder hoch?). Kann da was passieren?
Peter K. schrieb: > Ich verstehe das hier nicht im Datenblatt: A0 ist für zwei Sachen > zuständig: High Voltage Command und Address0. Deshalb ist das auch kein gewöhnlichter Digitaleingang, sondern kann zwischen 3 Pegelbereichen (VIL, VIH or VIHH) unterscheiden. Peter K. schrieb: > Achja, hier steht noch, dass A0 intern per Widerstand mit VDD verbunden > sei. Vielleicht sollte ich den dann doch nicht runterziehen? Das ist ein Pull-Up, der dafür sorgt, dass der A0-Pin im unbeschalteten Zustand einen wohl definierten und erlaubten Pegel liefert. Warum solltest du den nicht runterziehen, um dem Poti eine andere Adresse zu geben? Der Pin muss allerdings schon beim Einschalten auf dem von dir gewünschten Pegel liegen, wie du dem Datenblatt Kap. 3.1 entnehmen kannst, sonst ist die Pegeländerung wirkungslos.
Ich würde das Diisplay jetzt mal außen vor lassen und mich aufs Poti konzentrieren. "Check your current I2C speed by issuing the command in the terminal: sudo cat /sys/module/i2c_bcm2708/parameters/baudrate "
Peter K. schrieb: > Ich glaube, ich zieh den Pin einfach mal runter (oder hoch?). Kann da > was passieren? Wieso hoch? Wohin? Der liegt doch über den Pull-up Widerstand schon auf VIH. Und auf VIHH willst du ihn für deine Fragestellung nicht wirklich ziehen, oder? Lass den Pin mal in der Luft hängen und dann miss mit deinem Multimeter die Spannung - eh voilá ...
Vielen Dank. Das mit dem "latched" (verriegelt) hatte ich nicht verstanden. Dann probier ich das mit dem Runterziehen gleich mal. Zur Frage: Wenn der ja schon hochgezogen ist, dürfte die Adresse nicht Ursache meines Problems sein, weil der Chip beim Hochfahren ja dann eine gültige Adresse hat. Ich verbinde A0 jetzt trotzdem mal mit GND. Edit: Ist ja Wahnsinn wieviele Antworten Samstags morgens um 11 zu kriegen sind. Schon wieder kam meine Antwort zu spät.
1 | # sudo cat /sys/module/i2c_bcm2708/parameters/baudrate |
2 | 0 |
Welche Spannung soll ich genau messen?
:
Bearbeitet durch User
ah, ok. Muss mal kurz weg. Bin in'ner Stunde wieder da und poste Dann.
Zwischen A0 und Ground sind 3,3V. Hab die beiden jetzt verbunden und da passierten interessante Dinge: i2cdetect konnte den Chip zum ersten mal finden. Er hatte die Adresse 2e. Unmittelbar danach habe ich i2cdetect erneut ausgeführt. Seitdem zeigt es bei jedem Aufruf eine Liste in der angeblich alle Adressen gefunden wurden. Die Liste enthält nun also gar keine unbelegten Adressen mehr, was natürlich nicht sein kann. Habe die i2ctreiber deaktiviert und wieder geladen: Kein Unterschied, es werden immernoch alle Adressen auf einmal ausgegeben, statt nur die beiden von Display und Poti.
Ein Multimeter hast Du...? Miss doch mal SDA und SCL im Ruhezustand, ist das High? Sonst wäre der Bus blokiert... Gruss Chregu
Bin mir jetzt mit der Anweisung nicht ganz sicher. Was heißt Ruhezustand? Ich hab jetzt alles aus SDA und SCL ausgestöpselt und beide jeweils gegen GND gemessen. Bei beiden liegen je 3,2V Spannung an. Wenn der Chip angeschlossen ist liegen zwischen SDA und GND 0,09V. Zwischen SCL und GND messe ich dann 3,22V.
:
Bearbeitet durch User
Peter K. schrieb: > Wenn der Chip angeschlossen ist liegen zwischen SDA und GND 0,09V. Damit blockiert er den Bus.
Hilft mir die Erkenntnis irgendwie? Hab ich beim Löten was kaputtgemacht? Evtl. bezüglich elektrostatischer Entladung nicht genug aufgepasst? Oder kurz: Ist der Chip im Eimer?
:
Bearbeitet durch User
Es könnte auch sein, dass die Taktfrequenz gerade so zu hoch ist und der Chip den einen oder anderen takt nicht bekommt und er so den Bus nicht wieder frei gibt. Grund kann die Größe der Pullups sein, da jeder am Bus angeschlossene Chippin eine Kapazität aufweist, die in Kombination mit dem Widerstand einen Tiefpass bilden. Kleinere Pullups würden hier womöglich genauso helfen wie eine Verringerung der Taktfrequenz.
Tja, zur Frequenz kann ich leider nichts sagen. Der Raspberry-Befehl, der die Frequenz anzeigen soll, zeigt einfach nur eine Null.
Schalte nur mal ein und mache noch nichts am I2C-Bus ausser initialisieren. Wenn SDA dann immer noch 0 ist, ist wirklich was nicht in Ordnung! Gruss Chregu
Peter K. schrieb: > Hab ich beim Löten was kaputtgemacht? Zeig mal ein Photo von deinem Aufbau, speziell Lötstellen/Anschlüsse am MCP4551 und Busverdrahtung.
Die hintere Schiene des Breadboard führt 5V, die vordere 3,3V. Die hintere wird für das Display gebraucht, das ich aber vorübergehend ausgestöpselt habe. Die beiden I2C-Kabel halte ich auf dem Foto gerade in der Hand. Ich habe das Raspberry-Pinout nocheinmal perspektivisch beigefügt, damit man die Pins identifizieren kann. Der Chip ist extrem klein (4x4 mm²) und war dementsprechend schwer zu löten. Eine sehr starke Vergrößerung ist in der Ecke oben rechts. Der Chip hängt an den Kabeln, die unten rechts aus dem Bild ragen. Das zusätzliche weiße Kabel (erster Pin von rechts im Bild) gehört zu einem Piezzo-Kristall (und hat mit dem Problem vermutlich nichts zu tun).
:
Bearbeitet durch User
Peter K. schrieb: > Eine sehr starke Vergrößerung ist in der Ecke oben rechts. Das Gehäuse sieht bei Pin 1 und 2 ein bisschen eigenwillig aus, muss aber nix heißen. Miss doch mal die Spannungen auf Pin 2 und 3 gegen Gnd, wenn du den MCP4551 vom Bus nimmst und seine SCL und SDA Leitung per separatem Pull-up (4k7 o.ä.) auf 3V3 ziehst.
Oben links zeigt das Chipfoto deutliche Hitzeschäden. Da hat der OP vermutlich zu lange mit dem Brateisen dran gesessen, der Chip ist wohl hinüber. Dead Bug macht man mit dünnem Fadeldraht auf Lochraster, damit weniger Wärme in den Chip beim Löten eingetragen wird. Der OP könnte mal einen Diodentest mit dem Multimeter von den SDA/SCL Pins nach GND machen. Da ist laut DB eine Diode drin. Vorsicht: Nach VCC ist wohl keine Diode drin. Da könnten die I²C Pins u.U. auch ESD zum Opfer fallen.
Werd' die Messungen gleich mal machen. Mit den Hitzeschäden bin ich mir nicht sicher: Da klebt nämlich auch reichlich Flussmittel in der Ecke. Kann das selbst unter der Lupe kaum erkennen.
* SDA und SCL sind vom Bus getrennt, der Chip liegt noch an GND und VDD: Pin 2 (SCL) gegen Gnd: 0,4V Pin 3 (SDA) gegen Gnd: 0,0V SCL an 6,8KOhm, die am 3,3V-Pluspol hängen: SCL gegen GND: 0,5V SDA an 6,8KOhm, die am 3,3V-Pluspol hängen: SDA gegen GND: 0,05V Allererste Messung (die mit dem Stern: *) nochmal wiederholt: Pin2 (SCL) gegen GND: 0,21V Pin3 (SDA) gegen GND: 0.0V
Ich glaube der Chip ist nicht verschmort. Bin nochmal mit 'nem Taschentuch d'ran und hab ein neues Makro-Foto gemacht. Jetzt ist die vordere Kante unscharf und die Kante bei Pin1 sieht glatt aus. Auf den Kabeln ist übrigens Kleber, deshalb sind die so dick und unförmig. Nur so konnte ich die parallel anlöten, ohne zu verrutschen.
:
Bearbeitet durch User
Jim M. schrieb: > Der OP könnte mal einen Diodentest mit dem Multimeter von den SDA/SCL > Pins nach GND machen. Da ist laut DB eine Diode drin. Die kann ich im Datenblatt beim besten Willen nicht finden. Richtiges Datenblatt verwendet? Ich benutze dieses : https://www.mikrocontroller.net/part/MCP4551 Was bedeuten die Messergebnisse? Als Slave ist das Bauteil doch passiv, muss also nicht zwingend was senden wollen.
Peter K. schrieb: > Was bedeuten die Messergebnisse? Als Slave ist das Bauteil doch passiv, > muss also nicht zwingend was senden wollen. Kauf Dir bitte einen einfachen Logik-Analysator und schaue, was passiert. Schneller Versand, aus DE z.B.: http://www.ebay.de/itm/USB-Logic-Analyzer-24MHz-8CH-/181767474651?hash=item2a522f8ddb:g:eWMAAOSwal5YJH66 Langsamerer Versand (ca. 6 Wochen aus China): http://www.ebay.de/itm/24MHz-8-Channel-USB-Logic-Analyzer-8-CH-Logic-Analyzer-for-Arduino-MCU-/272306243922?hash=item3f66b78952:g:LLsAAOSwygJXhg-v Ohne stocherst Du im Nebel ... Oszilloskop muss für digitale Signale nicht immer sein.
Dieter F. schrieb: > Peter K. schrieb: >> Was bedeuten die Messergebnisse? Als Slave ist das Bauteil doch passiv, >> muss also nicht zwingend was senden wollen. > Kauf Dir bitte einen einfachen Logik-Analysator und schaue, was > passiert. Was soll der dann zeigen, außer einem blockierten Bus? Wenn sich das Poti-IC auch mit einem I2C-Scanner nicht meldet, wird es wohl defekt sein oder es liegt ein grober Schaltungsfehler vor. Unabhängig davon: Der von Dir verlinkte "Analyzer", was kann der, welche Software gibt es dazu? Ich habe mein Zeug bislang ohne in Gang bekommen, ich kann mit DVM und Scope umgehen - dennoch reizt mich Dein Vorschlag, mal damit zu spielen.
Manfred schrieb: > Ich habe mein Zeug bislang ohne in Gang bekommen, > ich kann mit DVM und Scope umgehen - dennoch reizt mich Dein Vorschlag, > mal damit zu spielen. Heißt Du Peter? Du hast ein "Scope" -im Gegensatz zu Peter - oder? Manfred schrieb: > Unabhängig davon: Der von Dir verlinkte "Analyzer", was kann der, welche > Software gibt es dazu? Kennst Du Google?
Manfred schrieb: > Unabhängig davon: Der von Dir verlinkte "Analyzer", was kann der, welche > Software gibt es dazu? Die Produktbeschreibung sagt, das er mit 24MHz 8 Digitalkanäle parallel erfassen kann. Fertig. Den Rest macht die Software auf einem PC (z.B. Sigrok) http://sigrok.org/wiki/Main_Page > Ich habe mein Zeug bislang ohne in Gang bekommen, > ich kann mit DVM und Scope umgehen - dennoch reizt mich Dein Vorschlag, > mal damit zu spielen. Was nützt der sichere Umgang mit einem Scope, wenn man keins hat. Übrigens wird dir das Scope keinerlei Unterstützung bei Protokollanalyse leisten, sofern da nicht insgeheim ein LA mit drin steckt. Und die 6€ für einen kleinen LA sollten zum Nikolaus vielleicht gerade noch drin sein.
Manfred schrieb: > Was soll der dann zeigen, außer einem blockierten Bus? Wenn sich das > Poti-IC auch mit einem I2C-Scanner nicht meldet, wird es wohl defekt > sein oder es liegt ein grober Schaltungsfehler vor. Wenn der Bus denn blockiert ist, er wird es ja nicht immer sein. Spätestens ohne Slaves sollte etwas sichtbar sein und man kann sich an den Fehler herantasten. Manfred schrieb: > Unabhängig davon: Der von Dir verlinkte "Analyzer", was kann der, welche > Software gibt es dazu? Freie Software: Sigrok. Illegal aber möglich wäre die Nutzung der Original-Software von Saleae. Beschreibung auf den jeweiligen Webseiten, sehr anschaulich die Saleae Webseite. Funktionsumfänge (bezogen auf dieses Problem) ungefähr identisch. Manfred schrieb: > Ich habe mein Zeug bislang ohne in Gang bekommen, Probiers mal! Wenn Du es einmal probiert hast, wirst Du dich fragen, wie man bisher ohne arbeiten konnte.
Dieter F. schrieb: > Manfred schrieb: >> Unabhängig davon: Der von Dir verlinkte "Analyzer", was kann der, welche >> Software gibt es dazu? > Kennst Du Google? Wer oder was ist Google? Du verlinkst hier ein Stück Chinahardware auf der Bet*****-Plattform, was keine ordentliche Beschreibung hat. Nach was soll ich suchen? W.A. schrieb: > Die Produktbeschreibung sagt, das er mit 24MHz 8 Digitalkanäle parallel > erfassen kann. Fertig. Den Rest macht die Software auf einem PC (z.B. > Sigrok) > http://sigrok.org/wiki/Main_Page Danke Dir, zur Software habe ich dort keinen Verweis gesehen. Harald schrieb: > Manfred schrieb: >> Ich habe mein Zeug bislang ohne in Gang bekommen, > Probiers mal! Wenn Du es einmal probiert hast, wirst Du dich fragen, wie > man bisher ohne arbeiten konnte. Deswegen habe ich nachgehakt, auch Dir danke für die Antwort.
Also sind sich alle einig, dass der Chip wahrscheinlich im Eimer ist? Denn auf meine Frage, was die Messergebnisse denn jetzt bedeuten, kam gar keine Antwort. Ich habe noch zwei MCP4551s und könnte einen neuen Versuch starten. Mir gruselt es zwar vor dem Löten mit Lupe und Pinzette, aber werde es natürlich erneut probieren. Zu dem Logic Analyzer: Das klingt wahnsinnig interessant. Doch weiß ich ja nichtmal wie der angeschlossen wird und was ich noch damit machen kann. Ich befürchte, wenn ich den jetzt kaufe benutze ich ihn einmal und nie wieder.
Peter K. schrieb: > Doch weiß ich ja nichtmal wie der angeschlossen wird und was ich noch > damit machen kann. Ganz einfach: Ein Ende USB zum PC, anderes Ende Gnd und bis zu 8 Digitalsignale, die dich interessieren. Dann kannst du deinen µC laufen lassen und dabei minutenlang die Signale aufzeichnen. Die Zeitauflösung der Aufzeichnung beträgt dabei bis zu 42ns und hinterher kannst du dir in Ruhe alles angucken. I2C wird z.B. fertig dekodiert und du siehst dann genau, wie ein Baustein auf Steuerbefehle reagiert, was und wie schnell er antwortet u.s.w.
Bevor du den Chip wieder so wie jetzt an Kabel dran lötest, möchte ich auf Adapterplatinen aufmerksam machen, die es zu kaufen gibt: Diese für MSOP8 (ein SO8-Gehäuse gibt es für diesen Chip scheinbar nicht): http://www.reichelt.de/Laborkarten/RE-914/3/index.html?ACTION=3&LA=2&ARTICLE=167711&GROUPID=7787&artnr=RE+914&SEARCH=%252A Hier passt dein Chip (so er denn ein MSOP8-Gehäuse hat) drauf und du kannst die Kabel außen anlöten, was die Pins vom Chip entlastet. Außerdem sollte es so besser lötbar sein. Dazu vielleicht noch etwas Flussmittel, damit keine Lötbrücken von Pin zu Pin entstehen. Vielleicht der hier: https://www.reichelt.de/Flussmittel-Loetpasten/STANNOL-X32-10I/3/index.html?ACTION=3&LA=2&ARTICLE=96335&GROUPID=4132&artnr=STANNOL+X32-10I&SEARCH=%252A Womöglich haben andere Forenianer aber noch bessere Vorschläge. Und eine Ergänzung: baue bitte einen (Standard 100nF, 47nF bis 220nF aber auch okay) Kondensator nahe an die VCC-GND-Pins zur Abblockung.
Oh toll, die Laborkarte! Wie finde ich sowas bei anderen Händlern? Reichelt will min. 6 Euro Versandkosten und wir haben 'nen Conrad-Shop in der Nähe, zum selber Hinlaufen. Auf deren Homepage finde ich zwar Laborkarten und auch Bauteilfassungen (https://www.conrad.de/de/bauteilefassungen-c987684.html), aber nichts passendes für MSOP8. Dass mit dem Kondensator bitte genauer erklären: Wogegen ist der? Wie schließe ich den an? "Nahe VCC-GND-Pins" verunsichert mich sehr. Meinst Du Pluspol des Kondensators an VCC und Minus an GND, also parallel zu den angeschlossenen Leitungen? Meinst Du zwei Kondensatoren, je einer für VCC und einer für GND, also beide Kondensatoren jeweils in Reihe? Was heißt hier "nahe"? Dass mit dem Logic Analyzer hört sich gar nicht so kompliziert an...
Peter K. schrieb: > Dass mit dem Kondensator bitte genauer erklären: Wogegen ist der? Wie > schließe ich den an? "Nahe VCC-GND-Pins" verunsichert mich sehr. Meinst > Du Pluspol des Kondensators an VCC und Minus an GND, also parallel zu > den angeschlossenen Leitungen? Meinst Du zwei Kondensatoren, je einer > für VCC und einer für GND, also beide Kondensatoren jeweils in Reihe? > Was heißt hier "nahe"? Es hieß: Kondensator Und nicht: Kondensatoren Nahe - Pins? Entfernung! In Millimeter. Nahe === wenige Millimeter Plus Minus? Ein 100nF Kerko hat kein Plus oder Minus. Lesen: Google(abblockkondensator)
> Dass mit dem Kondensator bitte genauer erklären: Wogegen ist der?
Der ist nicht irgendwogegen, sondern der ist dafür da, daß das IC
Funktioniert...
Dein Display und der rPi haben die auch schon eingebaut... nur deine Schaltung hat keinen...
Ahh, danke.... hab den Begriff mal gegoogelt und sofort das hier bekommen (LOL): "Viele Anfänger in Sachen Elektronik bekommen, wenn sie eine selbst entworfene Schaltung im Forum posten, als erstes zu hören: "Alle ICs mit Kondensatoren an den Stromversorgungspins versehen!!!". Die Erklärungen, die dazu geliefert werden, schwanken zwischen <nicht vorhanden>, und langen, ausführlichen, physikalisch korrekten, aber für Laien kaum verständlichen Ausführungen. Dieser Artikel soll nun dazu dienen, die Wirkung eines Abblockkondensators zu beschreiben und zu erklären, sodass in Zukunft vom Forum einfach hierhin verlinkt werden kann, wenn das Thema mal wieder zur Sprache kommt..." Quelle: http://rn-wissen.de/wiki/index.php/Abblockkondensator Ich les' mir das jetzt mal in Ruhe durch...
Peter K. schrieb: > Ich les' mir das jetzt mal in Ruhe durch... Daran tust du gut! Recht oberflächlich, der Artikel, aber für den Anfang sehr gut!
Peter K. schrieb: > Dass mit dem Kondensator bitte genauer erklären: Wogegen ist der? Gegen kurze Spannungseinbrüche auf der eigenen Versorgung auf Grund von kurzfristigem Ladungsbedarf des IC.
Arduino F. schrieb: > Recht oberflächlich, der Artikel, aber für den Anfang sehr gut! Hast Du besseres im Griff?
Peter K. schrieb: > Laborkarten und auch Bauteilfassungen > (https://www.conrad.de/de/bauteilefassungen-c987684.html), aber nichts > passendes für MSOP8. Wenn Du garnicht laufen willst und viel Zeit hast, suche nach "sop8 pcb" und finden z.B. den: https://www.aliexpress.com/item/10x-SOP8-SSOP8-TSSOP8-to-DIP8-Interposer-Moudle-PCB-Board-Adapter-Plate-10PCS-30641/32327739080.html?ws_ab_test=searchweb0_0,searchweb201602_3_10065_10068_10084_10083_10080_10082_10081_10060_10061_10062_10056_10055_10054_10059_10099_10078_10079_10073_10100_10096_10070_10052_423_10050_10051_424,searchweb201603_2&btsid=776c5607-3c97-4a2e-b2a7-36fd199eedcc Meist sind die doppelseitig, so dass man mit einem Typ Adaperplatte zwei verschiedene Gehäuse abdecken kann - habe ich hier ein paar von gebunkert.
Wollte mich mal zurückmelden. Hab den Logic-Analyzer zwar immernoch nicht gekauft, dafür aber den empfohlenen Kondensator. Der wirkt Wunder: i2cdetect findet den Poti jetzt (Adresse 2f) und wird offenbar nicht mehr gestört. Hab gleichzeitig mein i2c-display angeschlossen, dass auch wieder funktioniert. Seltsamerweise änderte sich zwischenzeitlich seine Adresse von 3b nach 3f und wieder zurück. Unter der jeweils gültigen Adresse war er aber sets ansprechbar. Jedenfalls weiß ich noch nicht wie ich den Poti denn jetzt nun eigentlich steuere. Hab noch nie was mit Python gemacht und mir deshalb die Skripte vom LCD-Display angeguckt. Mein Problem ist jetzt, dass das Versenden von Daten mit der i2c-Bibliothek in Bytes erfolgt, das Datenblatt aber Bitmuster vorgibt. Hab die deswegen mal in Hex umgerechnet und in mein Skript geschrieben. Resultate waren I/O-Fehler. Weiß jetzt nicht, ob das an dem Datenformat liegt oder wirklich an Kommunikationsproblemen mit dem Poti. Vielleicht ist das aber auch eher was für ein Python-Forum... Edit: Achja...und ich hab das Beinchen samt Kabel am A0/HVC-Pin abgerissen. Sehr ärgerlich, aber zum Glück kann ich ja trotzdem weitermachen. Ich muss halt nur auf High-Voltage-Commands und Adressänderungen verzichten.
:
Bearbeitet durch User
Inzwischen sind drei Monate vergangen, ich habe mir diese tollen Adapterplatinen zugelegt und auch der Logic-Analyzer ist vor einigen Tagen eingetroffen. Jetzt wollte ich den ausprobieren und das ursprüngliche Problem ist wieder da: Wenn ich den Logicanalyzer mit GND, SDA und SCL verbinde wird mit i2cdetect wieder nichts gefunden. Ohne Logicanalyzer springt die LCD-Adresse immer zwischen 3b und 3f hin- und her. Poti-Adresse ist immer 2f. Mein LCD-Testskript bricht zwischendurch immer mit einem I/O-Fehler ab. Ziehe ich den Poti (mit angelötetem Kondensator) ab, läuft alles super. I2cdetect braucht keine 30 Sekunden und ich kann mit dem Logicanalyzer aufzeichnen. Habe drei dieser Potis: Den alten (mit den Kabeln, siehe alte Fotos), einen neuen auf Platine mit Kondensator und einen neuen auf Platine ohne Kondensator. Wenn ich den Poti tausche sieht's folgendermaßen aus: Alter Poti mit Kondensator gegen neuen mit Kondensator: Kein Unterschied Alter Poti mit Kondensator gegen neuen ohne Kondensator: Wird oft nicht gefunden. Eines ist mir noch aufgefallen: Wenn ich bei der langsamen Suche von i2cdetect gegen die Kabel klopfe, springt die langsame Ausgabe plötzlich. Weiß nicht ob das hilft, wollte ich aber nicht unerwähnt lassen. Klemme ich das Display ab, erkenne ich keine Unterschiede in der Erkennung. WENN der Poti gefunden wird ist die Adresse immer 2f. Gibt's außer dem Kondensator noch einen "Trick", um das Signal irgendwie zu verbessern? Habe ich vielleicht ein Problem mit der Stromversorgung? Ich benutze zwei Stromquellen: Einmal den Raspberry selbst und einmal 5V per USB, die ich mit einem Stepdown auf 3,3V runterwandle, um den Raspberry zu unterstützen. Habe den Stepdown auch mal abgezogen - kein Unterschied beim Fehlverhalten.
i2c mag keine langen Leitungen, so Kabel auf dem Steckbrett führen schnell dazu dass es nicht mehr tut. Versuch mal die Kabel kürzer zu machen und/oder direkt an beide Seiten in den Bus einen kleinen Tiefpass zu bauen (22 Ohm in Reihe und 10 nF nach Masse oder sowas). Lötverbindungen statt Steckbrett und Signalkabel mit Massekabel verdrillen statt wild fliegen lassen hilft auch viel. 100 nF von Masse nach VCC direkt am IC sollte eigentlich jeder Baustein immer haben.
:
Bearbeitet durch User
Peter K. schrieb: > und einmal 5V per > USB, die ich mit einem Stepdown auf 3,3V runterwandle, um den Raspberry > zu unterstützen. Das klingt nicht gut, speist Du die rückwärts ein? Mach doch mal ein Foto vom gesamten Aufbau, einen Schaltplan wirst Du nicht haben, oder? Das mit den Leitungen, wo etwas beim "Gegenklopfen" etwas passiert, klingt ebenfalls nicht gut. Du musst das zunächst einmal Schritt für Schritt vernünftig aufbauen, sonst wird das nichts.
:
Bearbeitet durch User
Harald A. schrieb: > Und dann gibt es da noch das geniale Werkzeug > Logic Analyzer, welches Du dir für unter 10€(!) zulegen kannst. Gerade > bei I2C Entwicklungen eine absolut geniale Sache. Du benötigst z.B. > einen "Saleae Clone" und die freie Software Sigrok. > Logic Analyzer hört sich vielleicht kompliziert an, ist aber sehr > einfach in der Anwendung. Der nimmt auf bis zu 8 Leitungen hochfrequent > die Signale auf (aber nur den Logic Pegel, nicht das analoge Signal), > diese werden dann nach der Aufnahme von der PC Software interpretiert > und z.B. als I2C Signale dargestellt. So kannst Du genau verfolgen, was > gerade passiert. Ja, ein LA ist in vielen Situationen hilfreich. Aber beim I2C Debugging eher weniger... Da muss ein Oszi sein. Grund: Ein LA hat sicherlich andere Schaltschwellen, als die beteiligten I2C Komponenten. Er zeigt nicht das an, was die Partner sehen. Ein LA zeigt immer Rechtecke, auch wenn die Realität er einem Haigebiss ähnlich sieht Bei dem I2C Signalbild im Anhang, zeigt der LA noch ein tolles Signal. Aber man sieht, dass dieser Bus nicht stabil arbeiten wird.
Genau das habe ich auch geschrieben, aber genau diesen Teil hast du im Zitat ausgeschnitten. Warum?
Harald A. schrieb: > Ohne Messmittel ist das alles etwas schwierig. Vielleicht gibt es > irgendjemand in der Umgebung, der zumindest mal per Oszilloskop auf die > Signale schauen kann? Diesem Teil stimme ich zu! Keine Kritik, darum nicht zitiert. Die Gewichtung deines Beitrags war mir zu LA lastig. Ich habe nichts gegen LAs! Die sind prächtig. Aber eben NICHT beim I2C debugging auf physikalischer Ebene. Ist die Kurvenform gut, dann darf der LA ran. Ein weiterer Grund: Mit einem LA kann man nicht erkennen ob der Slave Clockstretching betreibt. Mit einem Oszi kann man das sehen (wenn man denn will).
Alles richtig, stimme zu. Aber ein Scope hat er ja nun mal nicht, offensichtlich auch nicht in der Umgebung. Die 6€ für nen LA sind so gesehen besser als überhaupt nichts. Du musst auch die Chronologie der Beiträge sehen, erst nach den letzten Beiträgen wird deutlich, dass er ein generelles Problem hat.
Harald A. schrieb: > Das klingt nicht gut, speist Du die rückwärts ein? Mach doch mal ein > Foto vom gesamten Aufbau, einen Schaltplan wirst Du nicht haben, oder? Im Grunde ja, ich speise zusätzlichen Strom rückwärts ein. Aufbau/Schaltplan habe ich gerade nicht zur Hand, kann ich aber gerne anfertigen. Ein Oszilloskop habe ich leider nicht zur Hand. Ich verstehe aber das Problem. Sven B. schrieb: > i2c mag keine langen Leitungen, so Kabel auf dem Steckbrett führen > schnell dazu dass es nicht mehr tut. Versuch mal die Kabel kürzer zu > machen und/oder direkt an beide Seiten in den Bus einen kleinen Tiefpass > zu bauen (22 Ohm in Reihe und 10 nF nach Masse oder sowas). > > Lötverbindungen statt Steckbrett und Signalkabel mit Massekabel > verdrillen statt wild fliegen lassen hilft auch viel. > > 100 nF von Masse nach VCC direkt am IC sollte eigentlich jeder Baustein > immer haben. Das hilft mir sehr. Hätte nicht gedacht, dass I2C so empfindlich ist. Vielleicht wären Drahtbrücken statt Kabel besser. Auf jeden Fall weiß ich, wo ich was optimieren kann. Eine gelötete Version wäre auch denkbar, dauert aber natürlich etwas. Was heißt "Signalkabel mit Massekabel verdrillen"? SDA+GND? Wirklich? "Beide Seiten vom Bus"...verstehe ich auch nicht ganz. Ich vermute mal direkt hinter'm Raspi und dann direkt vor'm Poti...doch am Poti ist doch schon ein 100nF-Kondensator. Ich melde mich, sobald ich die Schaltung abfotografiert/aufgezeichnet habe.
Harald A. schrieb: > Aber ein Scope hat er ja nun mal nicht, > offensichtlich auch nicht in der Umgebung. Ja, das ist in diesem Fall sehr schade. Harald A. schrieb: > erst nach den letzten Beiträgen wird deutlich, dass er > ein generelles Problem hat. Da bin ich anderer Ansicht. Für mich ist da schon klar, dass der Fehler Hardware nah zu suchen ist. Was genau? Falschanschluss, Pullupfehler? Was anderes, überraschendes..? KA! Da warte ich auf Aufbau/Schaltplan.
Peter K. schrieb: > Das hilft mir sehr. Hätte nicht gedacht, dass I2C so empfindlich ist. > Vielleicht wären Drahtbrücken statt Kabel besser. Auf jeden Fall weiß > ich, wo ich was optimieren kann. Eine gelötete Version wäre auch > denkbar, dauert aber natürlich etwas. Also eigentlich ist i2c dazu entworfen um Kommunikation zwischen ICs auf demselben PCB zu machen. Die vorgesehene Leitungslänge ist da halt sowas wie 15cm, ohne irgendwelche Stecker oder was auch immer. > Was heißt "Signalkabel mit Massekabel verdrillen"? SDA+GND? Wirklich? Ja, genau. Es fließt ja Strom durch das SDA/SCL-Kabel (ganz wenig aber trotzdem), und der muss auch irgendwo wieder zurück fließen. Am liebsten tut er das (geometrisch) genau auf dem Weg über den er auch hin geflossen ist. > "Beide Seiten vom Bus"...verstehe ich auch nicht ganz. Ich vermute mal > direkt hinter'm Raspi und dann direkt vor'm Poti... Das meinte ich, ja. > doch am Poti ist doch > schon ein 100nF-Kondensator. An der Spannungsversorgung, oder? Mein Vorschlag war den Tiefpass in die Busleitungen zu bauen.
:
Bearbeitet durch User
Sven B. schrieb: > An der Spannungsversorgung, oder? Mein Vorschlag war den Tiefpass in die > Busleitungen zu bauen. Och nööö... Das habe ich noch nie in einer Appnote oder Datenblatt gesehen.... Hast du Quellen für mich?
Arduino F. schrieb: > Sven B. schrieb: >> An der Spannungsversorgung, oder? Mein Vorschlag war den Tiefpass in die >> Busleitungen zu bauen. > Och nööö... > Das habe ich noch nie in einer Appnote oder Datenblatt gesehen.... > > Hast du Quellen für mich? Weil i2c nicht dazu gedacht ist das fliegend über 40cm Kabel zu verdrahten. Wenn man das macht muss man sich halt was überlegen damit es trotzdem tut ;)
:
Bearbeitet durch User
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.