<html><body>i2c ve wiringpi je poškozené, to víme, narazili jsme na to před lety když jsme dělali roboty pro studenty.<br><br>Posílali jsme patche které to opravují autorovi, ale jeho odpověď byla, že to wiringpi je educational project, <br>ž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<br>opravy megovat nebude. Tak jsme si vytvořili vlastní knihovny, se kterými už problémy nejsou.<br><br>Za mě tedy doporučuji nepoužívat wiringpi i2c a jít přímo na hardware, když to ten linux má velmi pěkně <br>a jednoduše implementované, viz kód z adafruit níže. Na adafruitu je kódu který využívá wiringpi i2c knihoven<br>jako šafránu (a většinou jsou to ty knihovny od lidí "mě to funguje").<br><br>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 <br>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:<br><br>https://sites.google.com/a/vutbr.cz/bprp/prednasky/2017/mcp23017.h?attredirects=0&d=1<br>https://sites.google.com/a/vutbr.cz/bprp/prednasky/2017/ad799x.h?attredirects=0&d=1<br>https://sites.google.com/a/vutbr.cz/bprp/prednasky/2017/km2.h?attredirects=0&d=1<br><br>S pozdravem,<br><br>  Franta Burian<br><br><aside>
---------- Původní e-mail ----------<br>
Od: Michal Grunt <michal.grunt@gmail.com><br>
Komu: HW-news <hw-list@list.hw.cz><br>
Datum: 1. 4. 2019 10:35:09<br>
Předmět: Re: I2C přes wiringpi na RPI
</aside><br><blockquote data-email="michal.grunt@gmail.com">Mrkněte jak má dělanou detekci MCP23017 Adafruit. Třeba Vám to pomůže.<br>Je to pár řádku od řádku 737:<br>https://github.com/adafruit/Adafruit-Retrogame/blob/master/retrogame.c<br><br>Ve zkratce je to nějak takto:<br>int 2cfd[8]; // /dev/i2c-1 MCP23017 file descriptors<br>for(i=0; i<8; i++) { // 8 possible MCP23017 indices<br>   if((i2cfd[i] = open("/dev/i2c-1", O_RDWR | O_NONBLOCK)) > 0) {<br>   ioctl(i2cfd[i], I2C_SLAVE, 0x20 + i);<br>   }<br>}<br><br>Čert ví co všechno dělají ty knihovny...<br><br>so 30. 3. 2019 v 2:43 odesílatel <cizek.milan@seznam.cz> napsal:<br>><br>> Ahoj,<br>> chci se zeptat, jestli jste někdo neřešil na RPIčku komunikaci s více I2C<br>> zařízeními (v mém případě 2xADC převodník).<br>><br>> Mám problém s tím, že když odpojím druhý převodník, je stále jakoby<br>> detekován. (v i2cdetect není), ale wiringpi ho asi nějak vidí, resp.<br>> inicializace nevrací -1.<br>> Tady je výňatek...<br>><br>> int fd1 = wiringPiI2CSetup(0x48);<br>>   printf("%d!\n", fd1);<br>>   if (fd1 == -1) {<br>>     printf("MCP3221 not found!\n");<br>>     return EXIT_FAILURE;<br>>   }<br>><br>> int fd2 = wiringPiI2CSetup(0x68);<br>> printf("%d!\n", fd2);<br>>   if (fd2 == -1) {<br>>     printf("MCP3424 not found!\n");<br>>     return EXIT_FAILURE;<br>>   }<br>><br>> První volání vrátí 4. (adc připojen)<br>> Druhé volání vrátí 5. (adc odpojen). Je to nějaký busy stav.<br>> Hledal jsem, jestli není nutné i2c nějak uvolnit (close,fclose...), ale nic<br>> moc jsem nenašel.<br>> Čekal bych, že v případě odpojení senzoru dostanu -1, ale možná jsem to jen<br>> blbě pochopil?<br>><br>> "The return value is the standard Linux filehandle, or -1 if any error - in<br>> which case, you can consult errno as usual."<br>><br>> Milan<br>><br>> _______________________________________________<br>> HW-list mailing list  -  sponsored by www.HW.cz<br>> Hw-list@list.hw.cz<br>> http://list.hw.cz/mailman/listinfo/hw-list<br>_______________________________________________<br>HW-list mailing list  -  sponsored by www.HW.cz<br>Hw-list@list.hw.cz<br>http://list.hw.cz/mailman/listinfo/hw-list<br></blockquote></body></html>