Re: I2C přes wiringpi na RPI

Michal Grunt michal.grunt na gmail.com
Pondělí Duben 1 10:33:15 CEST 2019


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


Další informace o konferenci Hw-list