Всем доброе время суток! Может кто разбирался и подскажет в чём проблема при попытке считать данные с MCP3208 на Raspberry PI2. Исходные коды брал абсолютно разные, и все писали, что рабочие, но как то у меня не сложилось. 1-й источник http://blog.vyazikov.ru/raspberry-pi-i-acp-12-bit/ но тут не пошло сразу компилирование командой Код (Bash): g++ -Wall -o OutBin mcp3201.cpp , но компилятор выдал ошибку о переменной nrd, потыркавшись не нашёл как устранить и скомпилировал как делал до этого Код (Bash): g++ -o mcp3201 mcp3201.cpp -lrt . Компиляция прошла удачно, но после запуска ничего кроме Код (Bash): 0 (0) на экране не увидел, хоть закрутись резистор. Может кто подскажет почему Код (Bash): g++ -Wall -o OutBin mcp3201.cpp не компилирует, Код (Bash): g++ -o mcp3201 mcp3201.cpp -lrt компилирует, но кроме нулевых значений ничего нету? 2-й источник http://raspberryalphaomega.org.uk/2013/06/24/using-the-bcm2835-c-library-for-spi/ выдавал ошибку Код (Bash): invalid conversion from ‘uint8_t* {aka unsigned char*}’ to ‘char*’ [-fpermissive] и не в какую не хотел исправляться. 3-й и т.д. https://github.com/rheikvaneyck/AnalogAtPi (как бы рабочий код) https://groups.google.com/forum/#!topic/bcm2835/dWnPEpV-zbI (коды не совсем рабочие)выдают ошибку сегментирования после успешной компиляции и запуска. Прошу помочь и направить на путь истинный, а то уже и не знаю что делать и как быть, а получить данные с АЦП очень надо. Библиотеки WiringPI и BCM2835 стоят и SPI активирован. За ранее благодарю всех, кто откликнется!
По первому примеру кода - попробуйте так Код (C++): gcc -Wall -o OutBin mcp3201.cpp , с++ накладывает больше ограничений А зачем вы используете ключ линкера -lrt (т.е. подключаете Realtime library)?
библиотеку -lrt пишу на автомате, просто надо будет после запуска доработать код с сохранением метки времени
С проблемой инициации в 3-ем источники разобрался! ошибка сегментирования при запуске исправляется легко, обязательный запуск из под root!!!
из под root сделай usermod -aG <ddd> <user>, где <ddd> - "хозяин" устройства, а <user> - кому хотите дать доступ. пример: ls -al /dev crw-rw---- 1 root tty 4, 1 Jun 18 05:54 tty1 - это для tty и: usermod -a -G tty vasya теперь Васе(пользователю vasya) всегда (и после перезапуска тоже) можно запускать программы которые используют /dev/tty1 и другие tty аналогично у меня работают i2c, video и т.д.