MCP2221 Baustein ansprechen
-
- Beiträge: 168
- Registriert: Sa 8. Okt 2016, 08:38
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Polska
Re: MCP2221 Baustein ansprechen
Darf ich mal fragen ob mit VGA, Video Graphics Array gemeint ist?
Falls ja wie misst man was darüber?
Falls ja wie misst man was darüber?
Jeder der sagt, ich könnte programmieren, der hat noch weniger Ahnung vom programmieren als ich!!!
-
- Beiträge: 6162
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: MCP2221 Baustein ansprechen
Ja, dort wo man einen VGA-Bildschirm einsteckt.Darf ich mal fragen ob mit VGA, Video Graphics Array gemeint ist?
Das kann natütlich auch eine GeForce für 1000€ sein.
Über den I²C-Bus, an dem ich einen ADS1115 angeschlossen habe.Falls ja wie misst man was darüber?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MCP2221 Baustein ansprechen
Ein grosser Wermuttropfen hat es trotzdem, es misst schätzungsweise etwa über 10x langsamer, als über den VGA.
man kann die Geschwindigkeit von I²C anpassen. Normalerweise läuft sie zum Beispiel beim PI und scheinbar auch bei meinem Laptop mit 100 kherz(Wenn ich mich nicht täusche). Vielleicht kann der Baustein nicht mehr oder man muss die Geschwindigkeit einstellen.
Über den I²C Bus der Grafikkarte werden z.b. einige Infos über den LCD preis gegeben. Also die EDID Infos.
So wie ich jetzt gehört habe. Kann mir aber nicht vorstellen, dass die auf 400 KHerz getaktet ist.
Hast du Pullup Widerstände? Etwas zwischen 1 K-Ohm und 10 K-Ohm. Scheinbar ist 4,7 K-Ohm Standard. Ich brauche jetzt keinen.
Ich habe mal etwas gespielt mit meinem I²C Adapter, eine tolle Sache: Ich konnte damit ein LCD 2004 mit Text versorgen über eine 30 Meter lange Leitung sowie ein Arduino uno. beide waren Slave. Der Master war in diesen Aufbau mein Laptop. Für einfache schnelle Test eine Prima Sache.
Edit01: Nachtrag: Ich verwende die Infos vom Pi für mein Laptop über I²C z.b. musst du bestimmte Kernel-Module für I²C laden ich meine das war I2C-DEV oder so ähnlich. Aber hättest du das nicht, würde es auch nicht laufen.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 6162
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: MCP2221 Baustein ansprechen
Hast du Pullup Widerstände? Etwas zwischen 1 K-Ohm und 10 K-Ohm. Scheinbar ist 4,7 K-Ohm Standard.
Habe ich auch eingebaut 2 Stück 10K.
Das weis ich, nur die Frage ist, wie ?man kann die Geschwindigkeit von I²C anpassen.
Auf dem Atmega, dort kann ich 100K, 200K oder 400K einstellen.
Ich denke, man muss etwas mit fpIOCtl machen, nur die Frage wie ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MCP2221 Baustein ansprechen
Habe ich auch eingebaut 2 Stück 10K.
Ändere mal den Wert, auf 4,7 K-Ohm
Das weis ich, nur die Frage ist, wie ?
Das ist jetzt zwar für python aber vielleicht hilft es weiter.
https://www.raspberrypi.org/forums/view ... 44&t=34734
Das hier sieht besser aus.
http://www.mindsensors.com/blog/how-to/ ... spberry-pi
Ich habe "Raspberry PI I²c geschwindigkeit einstellen" mit Google gesucht.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 6162
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: MCP2221 Baustein ansprechen
Ändere mal den Wert, auf 4,7 K-Ohm
Wie erwartet immer noch gleich.
Das ist jetzt zwar für python aber vielleicht hilft es weiter.
https://www.raspberrypi.org/forums/view ... 44&t=34734
Das einzige was ich sah, das der Takt auf 100'000 eingestellt ist.
Bei mit ist kein baudrate sondern ferquency vorhanden und dort stand es drinnen.
Code: Alles auswählen
/sys/module/i2c_mcp2221/parameters/frequency
Aber dies wäre nur ein 4facher Unterschied, gegenüber des VGA.
Auch mit dem Umweg über einem Arduino, welcher auf 400KHz eingestellt, läuft es etwa gleich schnell wie über den VGA.
Könnte es evtl. auch ein Timing des USB-Portes sein ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 6162
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: MCP2221 Baustein ansprechen
Ich habe noch folgendes probiert:
Bei der Device 2 (HDMI), werden die Werte sehr schnell gelistet.
Aber bei der Device 3 (MCP2221) schläft einem das Gesicht ein.
So nebenbei sieht man, das an der 48 und 49 meine ADS1115 hängen.
Code: Alles auswählen
tux-To-be-filled-by-O-E-M tux # i2cdetect -y 3
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 49 -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
tux-To-be-filled-by-O-E-M tux # i2cdetect -y 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- 37 -- -- 3a -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Bei der Device 2 (HDMI), werden die Werte sehr schnell gelistet.
Aber bei der Device 3 (MCP2221) schläft einem das Gesicht ein.
So nebenbei sieht man, das an der 48 und 49 meine ADS1115 hängen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MCP2221 Baustein ansprechen
Aber bei der Device 3 (MCP2221) schläft einem das Gesicht ein.
So nebenbei sieht man, das an der 48 und 49 meine ADS1115 hängen.
Ich könnte es mal nachbauen mit meinem Adapter. Was genau list du ein?
Ich würde ein LDR einlesen und jede Sekunde raushauen.
Es könnte natürlich was mit USB zu tun haben. Kann ich mir aber nicht vorstellen.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 6162
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: MCP2221 Baustein ansprechen
Ich könnte es mal nachbauen mit meinem Adapter. Was genau list du ein?
Ich lese in einer Schleife möglichst viele Daten ein, bis man den Stop-Button drückt.
Die Lesung eines Messwertes wird in einer Funktion getätigt.
Die Funktion ist auf zwei Messvarianten ausgelegt, entweder über den Arduino-Umweg oder I²C-Direkt.
Code: Alles auswählen
function TMess.Meas(Kanal: integer): single;
var
s: string;
ch: char;
e, i: integer;
serbuf: record
Mess, Poti: Int16;
end;
SendChar: char;
buf: packed array [0..3] of byte;
config: word;
const
zuf: integer = 0;
begin
with MessPara do begin
if MessDelay <> 0 then begin
Sleep(MessDelay);
end;
end;
case Schnittstelle of
i2c: begin
{$IFDEF Linux}
if Kanal = SondeKanal then begin
fpIOCtl(deviceHandle, I2C_SLAVE, pointer(i2C_Addr_Sonde));
Config := ($4000 + 0 * $1000) or $80C3;
end;
if Kanal = PotiKanal then begin
fpIOCtl(deviceHandle, I2C_SLAVE, pointer(i2C_Addr_Poti));
end;
buf[0] := 1;
buf[1] := Config shr 8;
buf[2] := Config mod $100;
buf[2]:= %11100011; // Achtung low/high vetauscht !
buf[1]:= %11000001; // 6.144V
fpwrite(deviceHandle, buf, 3);
buf[0] := 0;
buf[1] := 0;
buf[2] := 0;
fpwrite(deviceHandle, buf, 1);
fpread(deviceHandle, buf, 2);
Result := buf[0] * $100 + buf[1];
{$ENDIF}
end;
com: begin
buf[0] := %11100011;
buf[1] := %11000011;
buf[2] := %11100011;
buf[3] := %11000011;
ser.SendBuffer(@buf, 4);
ser.RecvBufferEx(@serbuf, 4, 1000);
if Kanal = SondeKanal then begin
Result := serbuf.Mess;
end;
if Kanal = PotiKanal then begin
Result := serbuf.Poti;
end;
end;
end;
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MCP2221 Baustein ansprechen
Habe mal im Internet gesucht und diesen Beitrag gefunden:
http://www.mikrocontroller.net/topic/406603
scheint so als ob die Frage geklärt ist: USB ist schuld.
Ich stelle es mir im Prinzip so vor(im Moment): Du hast dein I2C Device, welches über den Baustein bereit gestellt wird auf der anderen Seite hast du USB.
Nun musst du ja die Signale von I²C praktisch Codieren nach USB und andersherum. Das könnte den Geschwindigkeitsverlust erklären.
Wenn es bei deinem Projekt auf Speed angekommt würde ich vielleicht ehre zu SPI greifen. SPI ist/soll deutlich schneller sein als I²C.
Oder du betreibst es weiter über dein VGA Port. Das scheint ja gut zu gehen. Baust dir dafür eine Platine so das du mehrer I²C Bausteine anschließend kannst sicherst die ab(wenn nötig) und das Problem ist gelöst oder wie du schon gemacht hast: Ein Arduino da zwischen.
Der den Geschwindigkeitsverlust Praktisch ausgleicht. Ist zwar nicht schön, aber wohl die Einzigste Lösung im Moment.
http://www.mikrocontroller.net/topic/406603
scheint so als ob die Frage geklärt ist: USB ist schuld.
Ich stelle es mir im Prinzip so vor(im Moment): Du hast dein I2C Device, welches über den Baustein bereit gestellt wird auf der anderen Seite hast du USB.
Nun musst du ja die Signale von I²C praktisch Codieren nach USB und andersherum. Das könnte den Geschwindigkeitsverlust erklären.
Wenn es bei deinem Projekt auf Speed angekommt würde ich vielleicht ehre zu SPI greifen. SPI ist/soll deutlich schneller sein als I²C.
Oder du betreibst es weiter über dein VGA Port. Das scheint ja gut zu gehen. Baust dir dafür eine Platine so das du mehrer I²C Bausteine anschließend kannst sicherst die ab(wenn nötig) und das Problem ist gelöst oder wie du schon gemacht hast: Ein Arduino da zwischen.
Der den Geschwindigkeitsverlust Praktisch ausgleicht. Ist zwar nicht schön, aber wohl die Einzigste Lösung im Moment.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 6162
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: MCP2221 Baustein ansprechen
Hast du den Autor des Thread gesehen, das war ich.
So wie es scheint, ist es momentan eine Sackgasse.
Ich haette gedacht, das es mit dem mcp am effizientesten ist, aber man kann sich taeuschen.
So wie es scheint, ist es momentan eine Sackgasse.
Ich haette gedacht, das es mit dem mcp am effizientesten ist, aber man kann sich taeuschen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MCP2221 Baustein ansprechen
Hast du den Autor des Thread gesehen, das war ich.
So wie es scheint, ist es momentan eine Sackgasse.
Ja, ich wollte aber wegen Doppelposting nicht sagen... Das wird im allgemeinen nicht gerne gesehen in Foren.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 6162
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: MCP2221 Baustein ansprechen
Habe mal im Internet gesucht und diesen Beitrag gefunden:
http://www.mikrocontroller.net/topic/406603
Ich habe dort noch ein bisschen weiter gefragt, wer weis vielleicht kann ich den USB auch einfacher ausreizen.
Die Kommunikation zwischen Arduino und PC läuft auch mit vollem Speed, obwohl dies nur ein COM-Port mit begrenzter Baudrate ist.
Ja, ich wollte aber wegen Doppelposting nicht sagen... Das wird im allgemeinen nicht gerne gesehen in Foren.
Ja es gibt leider Hoster, die haben dies gar nicht gerne, und sperren einem wen so einer Kleinigkeit.
Das grösste Problem, wen man keine Doppelpost machen darf.
Man stellt eine Frage, der Thread ist dann wie erwartet an oberster Stelle. In der Zwischenzeit gucken ein paar User den Thread an.
Wen man aber im Post noch etwas ergänzen will, und dies auch macht, sehen die anderen User das nicht mehr, weil am Post immer das Erstellung-Datum und nicht das Änderung-Datum ist.
Also ist somit der logische weg eine neun Post zu schreiben, um die anderen User zu orientieren.
Mit Doppelpost, wo nur steht "keiner eine Idee", da habe ich auch meine Mühe.
Zum Glück sind die meisten Foren heutzutage recht tolerant.
Ich wäre es auch als Admin.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MCP2221 Baustein ansprechen
Zum Glück sind die meisten Foren heutzutage recht tolerant.
Ich wäre es auch als Admin.
Hier wird das glaube ich auch nicht so eng gesehen... Aber schöner wäre es, du hättest es im Ersten Beitrag eingetragen am Ende.
Vielleicht war es auch nur Zufall, dass ich gerade Gesucht hatte und per Zufall diesen Beitrag gefunden habe.
Egal.
Scheint also am USB zu liegen. Aber brauchst du wirklich diese Hohe Geschwindigkeit für dein Projekt?
In der Regel dürfte doch Messungen pro 1 oder 2 Sekunden vollkommen ausreichen oder nicht?
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 6162
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: MCP2221 Baustein ansprechen
In der Regel dürfte doch Messungen pro 1 oder 2 Sekunden vollkommen ausreichen oder nicht?
Tut es nicht, da würde ein komplette Messung mehrer Stunde dauern.
Wir stellen in der Firma Messonden für Tankinhaltmmesung her. Diese habe ein Reedkette im 1cm Abstand, und die Reeds werden mit einem Schwimmer gesteuert.
Zum testen der Sonden, legen wird dies quer auf einen Testplatz. Dort wird der Schwimmer mit einem Schlitten bewegt. Gleichzeitig wird die Sonde ausgemessen.
Und dies gibt dann eine Messkurve. Dazu werden etwa 300 Messungen/Sekund gebraucht. Je mehr Messungen um so genauer das Ergebnis.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot