SPI ошибка сегментирования

Тема в разделе "Raspberry Pi", создана пользователем art_nostrik, 17 июн 2016.

  1. art_nostrik

    art_nostrik Нуб

    Всем доброе время суток!
    Может кто разбирался и подскажет в чём проблема при попытке считать данные с 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 активирован.

    За ранее благодарю всех, кто откликнется!
     
  2. ZAZ-965

    ZAZ-965 Гуру

    По первому примеру кода - попробуйте так
    Код (C++):
    gcc -Wall -o OutBin mcp3201.cpp
    , с++ накладывает больше ограничений
    А зачем вы используете ключ линкера -lrt (т.е. подключаете Realtime library)?
     
  3. art_nostrik

    art_nostrik Нуб

    библиотеку -lrt пишу на автомате, просто надо будет после запуска доработать код с сохранением метки времени
     
  4. art_nostrik

    art_nostrik Нуб

    С проблемой инициации в 3-ем источники разобрался! ошибка сегментирования при запуске исправляется легко, обязательный запуск из под root!!!
     
  5. Igor68

    Igor68 Гуру

    из под 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 и т.д.
     
    Последнее редактирование: 18 июн 2016