В библиотеке попробовал управление ногами, SPI - все работает как в примерах. А пример работы I2C - вешает шину, последующий запуск утилитки i2cdetect - на шине отсутствие девайсов. По осциллографу видно что, i2cdetect вообще перестает ногами шины шевелить. Может кто с таким сталкивался?
Код (Text): char buf[20]; int main() { int i,k; char tmp[100]; if (!bcm2835_init()) { printf("bcm2835_init failed. Are you running as root??\n"); return 1; } if (!bcm2835_i2c_begin()) { printf("bcm2835_i2c_begin failed. Are you running as root??\n"); return 1; } bcm2835_i2c_setSlaveAddress(0x68); bcm2835_i2c_set_baudrate(1000000); //data = bcm2835_i2c_read(buf, 1); bcm2835_i2c_end(); bcm2835_close(); return(0); } Даже при закоментированном чтении после старта этого кода последующие вызовы утилитки i2cdetect не шевелят ногами шину.
Вы код без заголовков библиотек сюда скопировали? Откуда брали данный пример? Вроде все должно работать. А какой результат исполнения программы?
Скопировал без заголовка. Примеры кода работы i2c есть на сайте библиотеки. Сcылку я давал выше. Через python получается писать и читать в часы реального времени - DS1307. При попытке чтения через bcm2835 - на осциллографе картинка как и на python. Но регистры не читаются. И i2cdetect тоже после этого не работает. Думается что выход из режима i2c не очень правильный.