Meine kleine Projektseite

Geht nicht gibt es nicht !!!

Suche

Grautier Suche
Datenblatt Suche

Netzwerke

Creative Commons

Creative Commons License
Dieser Inhalt ist unter einer CC-Lizenz lizenziert.

Counter

Besucher:
Aufrufe:
Durchschnit:
Heute:
Online:

Sponsor

led24.de

Verwaltung des Blogs

I2C über VGA, HDMI, DVI (Linux)

Samstag, 13. April 2013



Wen man am Rechner I²C braucht und grade keine Adapter hat oder Bit-bang wegen der Rechnerlast nicht nutzen möchte kann man seinen Displayport dafür benutzen, die DDC Leitungen führen ein I²C Signal welches man nutzen kann, denkbar wehre es auch bei Laptops sich den I2C Bus am LCD-Pannel abzunehmen oder am Akku-Pack, da die Meisten Laptops/PCs einen Port haben den man nicht braucht ist das die leichteste Methode, funktionieren sollte das mit allen Grafikkarten die DDC unterstützen und der Treiber das bereitstellt, der vorteil ist das das echtes I²C ist und nicht irgendwas Adaptiertes mit Timing Problemen.

Pins VGA:
5 Masse für DDC
9 +5V von der Grafikkarte max. 100mA z.b. für Levelschifter oder Galv. Trennung
12 SDA - DDC
15 SCL - DDC

Pins HDMI:
17 SCL - DDC
18 SDA - DDC
16 Masse für DDC
19 +5 V max. 55 mA

Pins DVI:
6 SCL - DDC
7 SDA - DDC
14 +5 V max. 55mA
14 Masse für DDC

Pullup's werden nicht gebraucht diese sind immer auf der Grafikkarte vorhanden.

!!! Nie im EEPROM eines eventuell angeschlossenen Monitors schreiben, dieses kann diesen komplett zerstören, das gilt auch für alle System internen I2C Geräte. !!!

System vorbereiten:
Als erstes brauchen wir noch etwas Software diese ist bei allen gängigen Distr. vorhanden.

I2C-Tools - zum Lesen / Schreiben und suchen von angeschlossenen Geräten.
LM-Sensors - Bringt die Kernelmodule für I2C ins System.

Instalieren.
  1.  
  2. sudo apt-get install i2c-tools lm-sensors
  3.  

Kernel Module laden und dauerhaft ins System einbinden.
  1.  
  2. sudo modprobe i2c-dev
  3. sudo echo "i2c-dev" >> /etc/modules
  4.  

Jetzt wird es etwas kompliziert wir müssen rausfinden welcher I2C-Bus der am Port ist, dieses macht man mit "i2cdetect -l" da sollte sowas wie die folgende ausgaben kommen.
  1.  
  2. theborg@theborg-desktop:~$ i2cdetect -l
  3. i2c-0   smbus           SMBus PIIX4 adapter at 0b00             SMBus adapter
  4. i2c-1   smbus           SMBus PIIX4 adapter at 0b10             SMBus adapter
  5. i2c-2   i2c             cx88[0]                                 I2C adapter
  6. i2c-3   i2c             NVIDIA i2c adapter 0 at 2:00.0          I2C adapter
  7. i2c-4   i2c             NVIDIA i2c adapter 1 at 2:00.0          I2C adapter
  8. i2c-5   i2c             NVIDIA i2c adapter 2 at 2:00.0          I2C adapter
  9.  

oder
  1.  
  2. theborg@theborg-AOA150:~$ i2cdetect -l
  3. i2c-0   unknown         i915 gmbus ssc                          N/A
  4. i2c-1   unknown         i915 gmbus vga                          N/A
  5. i2c-2   unknown         i915 gmbus panel                        N/A
  6. i2c-3   unknown         i915 gmbus dpc                          N/A
  7. i2c-4   unknown         i915 gmbus dpb                          N/A
  8. i2c-5   unknown         i915 gmbus dpd                          N/A
  9.  

Bei dem zweiten Beispiel ist es sehr eindeutig, i2c-1 ist der VGA Port, i2c-2 wehre das LCD-Pannel und i2c-4 der Akku.
Bei dem ersten haben wir die Grafikkarte mit drei einzelnen Bus-Linien, da wir noch nichts angeschlossen haben sollten nur die Monitore zu finden sein, also schauen wir uns mal an was wir finden, dieses machen wir mit "i2cdetect -y ".
  1.  
  2. theborg@theborg-desktop:~$ i2cdetect -y 3
  3.      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
  4. 00:          -- -- -- -- -- -- -- -- -- -- -- -- --
  5. 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  6. 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  7. 30: -- -- -- -- -- -- -- 37 -- -- -- -- -- -- -- --
  8. 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  9. 50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  10. 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  11. 70: -- -- -- -- -- -- -- --  
  12.  

  1.  
  2. theborg@theborg-desktop:~$ i2cdetect -y 4
  3.      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
  4. 00:          -- -- -- -- -- -- -- -- -- -- -- -- --
  5. 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  6. 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  7. 30: -- -- -- -- -- -- -- 37 -- -- -- -- -- -- -- --
  8. 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  9. 50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- --
  10. 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  11. 70: -- -- -- -- -- -- -- --  
  12.  

  1.  
  2. theborg@theborg-desktop:~$ i2cdetect -y 5
  3.      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
  4. 00:          -- -- -- -- -- -- -- -- -- 0c -- -- --
  5. 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  6. 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 2e --
  7. 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  8. 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  9. 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  10. 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  11. 70: 70 -- -- -- -- -- -- --
  12.  

Wir sehen jetzt das da einiges drauf ist 2-3 EEPROMs pro Monitor sind normal also haben wir schon mal i2c-3 und i2c-5 für die Monitore gefunden (bei mir zwei), am einfachsten ist es jetzt sich eine freie Adresse zu suchen und was an den I2C-Bus zu hängen, danach scannen wir den BUS nochmal und sehen dann wo das neue Gerät auftaucht.

Wenn alles geklappt hat kann man jetzt i2cdump, i2cget, i2cset nutzen um auf die Geräte zuzugreifen.

Ein Bash Beispiel für einen PCF8591 AD/DA Wandler findet ihr unter http://www.grautier.com/wiki/doku.php?id=i_c-adc-erweiterungsplatine-sw,
und für einen TNC75 Temperatursensor unter http://www.grautier.com/wiki/doku.php?id=i_c-temperatur-sw.

Bilder-Quellen (Copyright abweichend von der des Blogs):
http://commons.wikimedia.org/wiki/File:DE15_Connector_Pinout.svg
http://commons.wikimedia.org/wiki/File:HDMI_Connector_Pinout.svg
http://commons.wikimedia.org/wiki/File:DVI_german.svg
Geschrieben von K.J in FAQ's um 20:40 | Kommentare (0) | Trackbacks (0)
Zuletzt bearbeitet am 27.05.2013 08:13
316 Klicks

Defekte Downloads

Sonntag, 7. April 2013

Leider hat sich, beim Updaten im DL-Plugin einiges verändert.

Ich lade grade die Daten neu Hoch, dieses dauert aber sicher noch 1-2 Tage.

Solltet ihr was vermissen oder etwas Defekt sein bitte über das Kontaktformular bei mir melden, ich schicke euch die Files dann Per Mail zu.

MFG K.Jacobs
Geschrieben von K.J in News um 12:22 | Kommentare (0) | Trackbacks (0)
Zuletzt bearbeitet am 07.04.2013 12:54
95 Klicks

Stromsparen am Switch mit IP1705C/LF/CH Chipset

Dienstag, 2. April 2013



Kleiner Stromsparmodus Umbau, wen ihr z.b. einen Switch mit IP175C/LF/CH) Chip nutzt und der nur das Internet verteilt, oder ihr mit 10Mbit auskommt könnt ihr mit einer Simplen Lötbrücke diesen auf 10Mbit und Powersave stellen(Nicht benutzte Ports werden automatisch Abgeschaltet).

Das Spart Pro belegten Port ca. 80mA.
Geschrieben von K.J in Stromspartips um 21:30 | Kommentare (0) | Trackbacks (0)
Zuletzt bearbeitet am 02.04.2013 21:37
128 Klicks

Makefile für GPASM/GPLINK - UPDATE V1.2.0

Sonntag, 31. März 2013

Da momentan meine IDE zum PICs Progen auf QT4 umgestellt wird und damit erstmal unbenutzbar wurde ;-( bin ich grade zwangsweise auf Kate angewiesen MPLABX mag ich nicht wirklich viel zu viel unnötiger Quatsch, dafür habe ich ein kleines Makefile gebastelt um von Kate aus die HEX Datei erstellen zu können, und um das Drive zu Programmieren.

  1.  
  2. VERSION   = 1.2.0
  3. NAME      = RS485-Raumsensor
  4. CC        = /usr/bin/gpasm
  5. LD        = /usr/bin/gplink
  6. BD        = /usr/local/bin/piklab-prog
  7. CFLAGS    = -c -w0
  8. LDFLAGS   = -c -ainhx32 -m -o
  9. PFLAGS    = --quiet
  10. PPFLAGS   = icd2
  11. PPPFLAGS  = usb
  12. PTSPFLAGS = false
  13. PDFLAGS   = 16F876A
  14. FWD       = /home/theborg/ICD2/
  15.  
  16. OBJ     = $(NAME).o
  17. ASM     = $(NAME).asm
  18. HEX     = $(NAME).hex
  19.  
  20. all:    # Clean + Compiliren + Löschen + Programmieren + run
  21.         rm -rf $(HEX) $(OBJ) $(NAME).cof $(NAME).lst $(NAME).cod $(NAME).map
  22.         $(CC) $(CFLAGS) $(ASM)
  23.         $(LD) $(LDFLAGS) $(HEX) $(OBJ)
  24.         $(BD) $(PFLAGS) -d $(PDFLAGS) -p $(PPFLAGS) -t $(PPPFLAGS) --target-self-powered $(PTSPFLAGS) --firmware-dir $(FWD) -f -c erase
  25.         $(BD) $(PFLAGS) -d $(PDFLAGS) -p $(PPFLAGS) -t $(PPPFLAGS) --target-self-powered $(PTSPFLAGS) --firmware-dir $(FWD) -f -c blank_check
  26.         $(BD) $(PFLAGS) -d $(PDFLAGS) -p $(PPFLAGS) -t $(PPPFLAGS) --target-self-powered $(PTSPFLAGS) --firmware-dir $(FWD) -f -c program $(HEX)
  27.         $(BD) $(PFLAGS) -d $(PDFLAGS) -p $(PPFLAGS) -t $(PPPFLAGS) --firmware-dir $(FWD) -f -c run
  28.  
  29. make:   # Programm erstellen
  30.         $(CC) $(CFLAGS) $(ASM)
  31.         $(LD) $(LDFLAGS) $(HEX) $(OBJ)
  32.  
  33. clean:
  34.         rm -rf $(HEX) $(OBJ) $(NAME).cof $(NAME).lst $(NAME).cod $(NAME).map $(NAME)-readout.hex
  35.  
  36. prog:   # Programmieren
  37.         $(BD) $(PFLAGS) -d $(PDFLAGS) -p $(PPFLAGS) -t $(PPPFLAGS) --target-self-powered $(PTSPFLAGS)--firmware-dir $(FWD) -f -c program $(HEX)
  38.  
  39. run:    # Traget Starten
  40.         $(BD) $(PFLAGS) -d $(PDFLAGS) -p $(PPFLAGS) -t $(PPPFLAGS) --firmware-dir $(FWD) -f -c run
  41.  
  42. erase:  # pic Löschen
  43.         $(BD) $(PFLAGS) -d $(PDFLAGS) -p $(PPFLAGS) -t $(PPPFLAGS) --target-self-powered $(PTSPFLAGS)--firmware-dir $(FWD) -f -c erase
  44.         $(BD) $(PFLAGS) -d $(PDFLAGS) -p $(PPFLAGS) -t $(PPPFLAGS) --target-self-powered $(PTSPFLAGS)--firmware-dir $(FWD) -f -c blank_check
  45.  
  46. stop:   # Traget Stoppen
  47.         $(BD) $(PFLAGS) -d $(PDFLAGS) -p $(PPFLAGS) -t $(PPPFLAGS) --firmware-dir $(FWD) -c stop
  48.  
  49. read:   # Traget Auslesen
  50.         $(BD) $(PFLAGS) -d $(PDFLAGS) -p $(PPFLAGS) -t $(PPPFLAGS) --target-self-powered $(PTSPFLAGS) --firmware-dir $(FWD) -f -c read $(NAME)-readout.hex
  51.  


UPDATE 1.1.0 - ADD RUN + STOP
UPDATE 1.2.0 - ADD Firmware Dir + read
Geschrieben von K.J in FAQ's um 23:31 | Kommentare (0) | Trackbacks (0)
Zuletzt bearbeitet am 02.04.2013 21:41
1061 Klicks

I²C zu ADC Adapter mit PCF8591T

Donnerstag, 21. März 2013



Simpler I2C -> 8bit ADC-Adapter mit dem PCF8591 Betriebsspannung 3-5,5V

Eagle-Schaltung+Board

Geschrieben von K.J in Elektronik um 09:42 | Kommentare (0) | Trackbacks (0)
Zuletzt bearbeitet am 21.03.2013 22:43
125 Klicks

Astro Anker3E

Montag, 4. Februar 2013





Hi hab meinen Anker Astro3e bekommen, hab es mir nicht nehmen lassen ihn auseinander zu schrauben.

Die Qualität ist TOP er ist mit 4 Zellen, je 2 Parallel und die zweier Packs in Reihe, allerdings ergibt sich rechnerisch dann eine effektive Kapazität von 5Ah was aber auch schon Top ist der Hersteller rechnet die Kapazität der Akkus so wie alle anderen auch.

Vorhanden ist ein Port für Android und einer für Apple Geräte je Port sind 1,5A Möglich, mein SGS+ und N7 laden am Apple Port zu langsam was wahrscheinlich an der Beschaltung liegt, am Android Port muss die Ladeschaltung im Kabel sein z.b das N7 Ladekabel hat den 100OHM widerstand im Kabel, was Positiv Auffällt ist der 0,5Ohm Shunt am Android Port der als Strommessung Funktioniert und bei Überstrom den Port abschaltet.

Die Verarbeitung ist auch Top, ein kleines Manko gibt es aber die Ausgänge können je 1,5A aber es gibt keine Fastload Beschaltung (d.h. Handys wie das S2/S3 laden nur mit max. 500mA-700mA wenn man kein Kabel mit Ladeschaltung hat.
Geschrieben von K.J in Testberichte um 22:21 | Kommentare (2) | Trackbacks (0)
Zuletzt bearbeitet am 31.03.2013 23:35
313 Klicks