Re: I2C přes wiringpi na RPI

František Burian BuFran na seznam.cz
Pondělí Duben 1 12:01:24 CEST 2019


i2c ve wiringpi je poškozené, to víme, narazili jsme na to před lety když 
jsme dělali roboty pro studenty.

Posílali jsme patche které to opravují autorovi, ale jeho odpověď byla, že 
to wiringpi je educational project, 
že o tom ví že tam jsou chyby a je úkolem studentů aby ty chyby našli a 
opravili si je sami. Že žádné naše
opravy megovat nebude. Tak jsme si vytvořili vlastní knihovny, se kterými už
problémy nejsou.

Za mě tedy doporučuji nepoužívat wiringpi i2c a jít přímo na hardware, když 
to ten linux má velmi pěkně 
a jednoduše implementované, viz kód z adafruit níže. Na adafruitu je kódu 
který využívá wiringpi i2c knihoven
jako šafránu (a většinou jsou to ty knihovny od lidí "mě to funguje").

My jsme studentům dali naši knihovnu i2c: https://sites.google.com/a/vutbr.
cz/bprp/prednasky/2017/i2c.h?attredirects=0&d=1 
která jen komunikuje s i2c a nemá problém, pokud chcete můžete ji použít (je
free). Příklad použití je třeba tady:

https://sites.google.com/a/vutbr.cz/bprp/prednasky/2017/mcp23017.h?
attredirects=0&d=1
https://sites.google.com/a/vutbr.cz/bprp/prednasky/2017/ad799x.h?
attredirects=0&d=1
https://sites.google.com/a/vutbr.cz/bprp/prednasky/2017/km2.h?attredirects=0
&d=1

S pozdravem,

  Franta Burian

---------- Původní e-mail ----------
Od: Michal Grunt <michal.grunt na gmail.com>
Komu: HW-news <hw-list na list.hw.cz>
Datum: 1. 4. 2019 10:35:09
Předmět: Re: I2C přes wiringpi na RPI 
"Mrkněte jak má dělanou detekci MCP23017 Adafruit. Třeba Vám to pomůže.
Je to pár řádku od řádku 737:
https://github.com/adafruit/Adafruit-Retrogame/blob/master/retrogame.c

Ve zkratce je to nějak takto:
int 2cfd[8]; // /dev/i2c-1 MCP23017 file descriptors
for(i=0; i<8; i++) { // 8 possible MCP23017 indices
if((i2cfd[i] = open("/dev/i2c-1", O_RDWR | O_NONBLOCK)) > 0) {
ioctl(i2cfd[i], I2C_SLAVE, 0x20 + i);
}
}

Čert ví co všechno dělají ty knihovny...

so 30. 3. 2019 v 2:43 odesílatel <cizek.milan na seznam.cz> napsal:
>
> Ahoj,
> chci se zeptat, jestli jste někdo neřešil na RPIčku komunikaci s více I2C
> zařízeními (v mém případě 2xADC převodník).
>
> Mám problém s tím, že když odpojím druhý převodník, je stále jakoby
> detekován. (v i2cdetect není), ale wiringpi ho asi nějak vidí, resp.
> inicializace nevrací -1.
> Tady je výňatek...
>
> int fd1 = wiringPiI2CSetup(0x48);
> printf("%d!\n", fd1);
> if (fd1 == -1) {
> printf("MCP3221 not found!\n");
> return EXIT_FAILURE;
> }
>
> int fd2 = wiringPiI2CSetup(0x68);
> printf("%d!\n", fd2);
> if (fd2 == -1) {
> printf("MCP3424 not found!\n");
> return EXIT_FAILURE;
> }
>
> První volání vrátí 4. (adc připojen)
> Druhé volání vrátí 5. (adc odpojen). Je to nějaký busy stav.
> Hledal jsem, jestli není nutné i2c nějak uvolnit (close,fclose...), ale 
nic
> moc jsem nenašel.
> Čekal bych, že v případě odpojení senzoru dostanu -1, ale možná jsem to 
jen
> blbě pochopil?
>
> "The return value is the standard Linux filehandle, or -1 if any error - 
in
> which case, you can consult errno as usual."
>
> Milan
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
_______________________________________________
HW-list mailing list - sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list
"
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20190401/bd19ec77/attachment.html>


Další informace o konferenci Hw-list