FTDI zum Bitklimpern von GPIO und I2C

Alles andere hier herein
Antworten
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

FTDI zum Bitklimpern von GPIO und I2C

Beitrag von yeti »

----------8<-----{20161003-1749-GMT}----->8----------

Ich hab da was beim Aufräumen auf der Platte wieder gefunden:
tbb (Tiny Bit Bang) heißt das Ding, das mit dem FTDI nicht nur GPIOs allgemein sondern auch I2C bitrüttelt... \o/
Es gammelt schon lange auf der Platte herum und harrt noch immer geduldig der mal geplant gewesenen Testläufe. :-\
Nu ist's wenigstes hier fixiert... auch wenn es ich es vielleicht bald wieder in meiner Stehrümpelchen-Ecke auf der Platte vergesse... ;-)

----------8<-----{20161003-2112-GMT}----->8----------

Hit Shappens!

...ich krieg's unter Debian-8.6/AMD64 nicht gebacken. Ich denke, die kompiliert beiliegende FTDI-Library ("libftd2xx.a") erwartet 'ne ältere Libc... :-/
...außerdem lag auch nur eine bei, also vermutlich immer für die falsche Prozessorbitbreite... oder wie das auch immer heißt.

http://www.ftdichip.com/Drivers/D2XX.htm und http://www.ftdichip.com/Drivers/D2XX/Li ... -linux.txt halfen mir leider auch nicht weiter; mit der von dort genuckelten Lib grinste mich frech der selbe Fehler an.

FvvF! (Fallich völsche verpeilte Fehlinterpretation!)

Es lag dann doch an dem Fehlen von "-lpthread" im "Makefile".
Wie kommt denn sowas?

...und nebenbei codete er die VERSION als Float in seine C-Fragmente, was natürlich knallte als ich meine Verfummelungen durch "VERSION=\"0.06-himalaya-1\"" quasi unterschreiben wollte...

Alles beherrschbar...

Code: Alles auswählen

$ ./tbbi2c
Hardware Connection:
        I2C_SCL: Connect RI of ft232r, D7 of ft245r
        I2C_SDA: Connect DCD of ft232r, D6 of ft245r
        (Pull-up resisters required externally)

Usage:  tbbi2c -s i2c_slave_addr [-t access_type] [address] [write_data]

        access_type:
                01: 0 byte address - 1 byte data (default)
                02: 0 byte address - 2 byte data
                11: 1 byte address - 1 byte data
                12: 1 byte address - 2 byte data
                21: 2 byte address - 1 byte data
                22: 2 byte address - 2 byte data

Example1: read LM75(0b1001000) temperature
        tbbi2c -s 0x48
Example2: read a byte from 24LC64(0b1010000) on the address 0x0030
        tbbi2c -s 0x50 -t 21 0x0030
Example3: write a byte 0xf5 to 24LC64(0b1010000) on the address 0x0030
        tbbi2c -s 0x50 -t 21 0x0030 0xf5
        (tbbi2c -s50 -t21 30 f5 for short)
Das schaut ja fast schon vertrauenserweckend aus... aber ich hab mein Am-Rechner-Pensum für die letzten 48h schon kraß überzogen und der Test mit echter Hardware muß noch warten... die Augen brauchen auch mal Pause...

----------8<-----{20161004-1103-GMT}----->8----------

"tbb" ist zum Klimpern des FTDIngens als GPIO... ich hab einen Solchen angedrahtet, nur am Saft sozusagen, die folgende Ausgabe scheint plausibel für "alle Eingänge offen":

Code: Alles auswählen

$ sudo ./tbb -r
0xFF
"DCD" geGNDet:

Code: Alles auswählen

$ sudo ./tbb -r
0xBF
"RI" geGNDet:

Code: Alles auswählen

$ sudo ./tbb -r
0x7F
<Dr.Frankenstein-Stimme> Bild ES LEEEEEEEEEBT!!! Bild </Dr.Frankenstein-Stimme>

Jetzt mal I2C antesten... ich hoffe, der DS1307 mag auch ohne Quarz antworten...

...näää... der mocht mich nich... weder mit, noch ohne Quarz... muß ich wohl mal unter 'ner Lupe beäugen, ob man mir nicht evtl aus Versehn 'n 1302 geliefert hat...

...aber ein EEPROM ausm Hive gezogen:

Code: Alles auswählen

$ sudo ./tbbi2c -s 0x50 -t21 0x0000
0x00
$ sudo ./tbbi2c -s 0x50 -t21 0x0100
0x29
...das schaut doch nach was aus... \o/

Code: Alles auswählen

$ sudo time ./tbbi2cprog -s 0x50 -t 2 -d 0x100
          0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00000000 00 b4 c4 04 6f 7f 10 00 d4 33 08 7a 6b 02 14 7a 
00000010 ec 0e 5a 05 5b 02 08 00 53 05 04 00 dd 05 00 00 
00000020 0a 06 00 00 29 06 00 00 48 06 00 00 67 06 04 00 
00000030 75 06 08 00 9f 06 08 00 b6 06 00 00 d0 06 00 00 
00000040 f0 06 04 00 62 07 00 00 69 07 00 00 70 07 04 00 
00000050 82 07 28 00 b4 07 00 00 bc 07 00 00 c2 07 00 00 
00000060 c7 07 04 00 1c 08 04 00 26 08 04 00 3d 08 08 00 
00000070 5b 08 04 00 6e 08 04 00 78 08 00 00 80 08 00 00 
00000080 88 08 00 00 97 08 00 00 a6 08 04 00 b0 08 08 00 
00000090 a3 09 00 00 ab 09 00 00 b3 09 00 00 bb 09 00 00 
000000a0 c5 09 00 00 cf 09 04 00 e3 09 04 00 f7 09 04 00 
000000b0 0b 0a 04 00 25 0a 04 00 3f 0a 04 00 53 0a 04 00 
000000c0 69 0a 04 00 85 0a 04 00 a2 0a 04 00 ae 0a 04 00 
000000d0 b9 0a 04 00 c4 0a 04 00 cd 0a 0c 00 6d 0b 08 00 
000000e0 88 0b 04 00 92 0b 04 00 9c 0b 00 00 a4 0b 08 00 
000000f0 ba 0b 00 00 c5 0b 04 00 f4 0b 04 00 17 0c 00 00 
00000100 
1.04user 1.61system 0:12.54elapsed 21%CPU (0avgtext+0avgdata 1868maxresident)k
0inputs+0outputs (0major+145minor)pagefaults 0swaps
...schnell geht anders... und die Bitklimperei ist auch bösiglich CPU-lastig: 21% von 64bittigen 2.4GHz-chen sind schon kraß für diese Aufgabe... aber für unter 2€ ein für's Brotbrett taugliches USB<->I2C-Helferlein zur Hand haben, mag irgendwann durchaus mal den Tag retten!

Das Kleingedruckte:
Ich hab in Sachen USB<->I2C noch was auf ATtiny45-Basis in der Warteschlange... die ATtinys sind schon geblitzdingst, PCBs liegen auch bereit, aber ich warte noch auf die letzte Zutat: Auf einen Anfall von Lötlaune.


Edit @ 20170407-0646-GMT — Lötlaune war da... siehe i2c-tiny-usb

----------8<-----{Thematische Nachbarn}----->8----------

i2c-tiny-usb

----------8<-----{Happy End?}----->8----------
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Antworten