Присоединяйтесь!
Авторизация
gpio   

GPIO для чайников (дополнение)

01 January 1970 - Автор RomanNV5

Некоторые пояснения.

В связи с кривостью платформы данного сайта, не позволяющей удобно редактировать свои статьи, я решил написать это объявление- дополнение отдельно.

В связи с тем, что библиотека bcm2835 периодически обновляется, то в неё вносятся изменения, которые могут повлиять на работоспособность ранее написанных примеров.

Так, на сегодняшний день доступна библиотека версии 1.16.

Если вы установили себе библиотеку более новой версии, чем 1.8 (установка которой описана в первой статье "GPIO для чайников"), то у вас может возникнуть проблема с компиляцией написанных программ.

Например при компиляции может вылезти сообщение:

/usr/local/lib/libbcm2835.a(bcm2835.o): In function `bcm2835_delayMicroseconds':

/home/pi/bcm2835-1.15/src/bcm2835.c:350: undefined reference to `clock_gettime'

/home/pi/bcm2835-1.15/src/bcm2835.c:360: undefined reference to `clock_gettime'

collect2: ld returned 1 exit status

Чтобы обойти эту проблемму, достаточно при компиляции добавить опцию -l rt

Т.е., если раньше мы компилировали нашу программу button командой:

gcc -o button button.c -l bcm2835

то теперь нужно писать так:

gcc -o button button.c -lbcm2835 -lrt

Просто автор библиотеки в более новых версиях модифицировал функцию bcm2835_delayMicroseconds, которая теперь учитывает скорость выполнения команд процессором и ей требуется обращение к real-time функциям.

Если вы владелец Raspberry PI Version2:

Для ревизии платы Raspberry PI v2 необходимо изменять определения портов GPIO.

Например, если мы для ревизии v1 писали определение для порта Р1_03 так:

#define PIN RPI_GPIO_P1_03

то для ревизии v2 эта строка должна выглядеть вот так:

#define PIN RPI_V2_GPIO_P1_03

Т.е. для определения любых портов ревизии v2 нужно добавлять в запись "_V2" между "RPI" и "_GPIO"

В прочем, это необходимо только тогда, когда вы используете в своих проектах порты с номерами: Р1-03, Р1-05 и Р1-13.

Для других портов это не имеет никакого значения, какое определение вы используете, т.к. остальные порты GPIO совпадают в обеих ревизиях.

Зато в ревизии v2 вывели дополнительно 4 новых порта на разъём Р5. Этих портов нет в ревизии v1 вобще. Обладатели же ревизии v2 могут использовать эти порты абсолютно так же, как и прочие. Номера этих портов: Р5-03, Р5-04, Р5-05 и Р5-06.

Соответственно псевдонимами этих портов будут:

RPI_V2_GPIO_P5_03

RPI_V2_GPIO_P5_04  

RPI_V2_GPIO_P5_05  

RPI_V2_GPIO_P5_06
01 January 1970
RomanNV5
автор статьи

Комментариев: 8

  1. ASA8

    04 January 2013 - Ответить

    Дописали бы сразу про платы второй версии

  2. RomanNV5

    11 January 2013 - Ответить

    fixed

  3. vladimirov99510

    15 January 2013 - Ответить

    Пример с кнопкой и диодом - супер! Одно лишь плохо - ЦИКЛ опроса кнопки! По-хорошему кнопку надо вешать на прерывание. По даташиту на BCM2835 там вроде насколько я понял с irq49 по irq52 зарезервировано под GPIO pin 0-4. А пример с захватом и обработкой прерывания на линукс - будет вообще потрясен. Там тем более не так уж и сложно это.

  4. RomanNV5

    18 January 2013 - Ответить

    Как решить вопрос с циклом опроса кнопки, я рассказал в продолжении к 5-й части. А с прерыванием в RPI просто так не поработаешь как в МК, тут к нему доступ можно получить только через ядро системы.

  5. Polder12

    24 January 2013 - Ответить

    Как узнать ревизию Rpi ?

  6. RomanNV5

    24 January 2013 - Ответить

    введите в терминале cat /proc/cpuinfo и смотрите hardware revision code если код будет 2, или 3, то это ревизия 1 если код будет 4,5, или 6, то это ревизия 2

    • Vitorrio10

      28 May 2013 - ответить

      Про ревизии хорошо было бы написать уже в первой части. Также у меня ревизия 7 написано - к какой в итоге относить?

  7. deerh11

    12 February 2013 - Ответить

    Добрый вечер! Помогите разобраться, пожалуйста: после компиляции gcc -o GPIO-test GPIO-test.c -lrt -lbcm2835 пишет ошибку: undefined reference to 'bcm2835_delay' collect2: error: ld returbed 1 exit status Я новичок, проверка показала, что ревизия платы = 1

  8. messad_el

    25 April 2014 - Ответить

    У меня прхожий вопрос, только я в принципе понял в каком направлении думать и тут вроде описан способ как пофиксить но для консоли, а я ленивый qtcreator'щик как мне быть. у меня вообще программа другая, но проблема та же.

Отправить комментарий

Авторизуйтесь для отправки комментария

Присоединяйтесь
Новые сообщения
  • Raspberry pi 4 не включается
    27 June, 2020
    @antonabsatarov#6188 что ты имеешь введу под "правильным" форматированием флешки? Все же исправно работало, а в один момент...…
  • Raspberry pi 4 не включается
    27 June, 2020
    @x6vital#6185 я сам столкнулся со схожей проблемой. Решил правильным форматированием флэшки (криво устанавливалась ОС), а...…
  • Как запустить X без монитора?
    22 June, 2020
    Как вы поняли, что они не запускаются? …
  • Как запустить X без монитора?
    22 June, 2020
    Добрый день, поставил на малину расбери ос с рабочим столом, если она загружается без монитора то не стартуют приложения...…
  • Raspberry pi 4 не включается
    19 June, 2020
    @mojo#6171 дело в том что она вообще неадекватно себя как то ведёт. Просто в один момент перестала включаться. Пробую...…
  • Troyka Cap
    19 June, 2020
    Всем спасибо вопрос больше не актуален …
  • Troyka Cap
    19 June, 2020
    @mojo#6178 спасибо скорее всего я уже нашёл ответ: Подключение Платформа устанавливается сверху на одноплатник Raspberry...…
  • rap os без Х + twinkle + service чо происходит
    18 June, 2020
    Добрый день, подскажите пожалуйста, установил настроил twinkle на малину(rasp os linux 10), запускаю через терминал twinkle...…
  • Troyka Cap
    18 June, 2020
    @mojo#6178 держу в курсе) я гулять пошёл и по этому от меня связи не будет до след дня надеюсь что Вы сможете помочь …
  • Troyka Cap
    18 June, 2020
    @mojo#6178 да и как могут быть проблемы с пинами Pi если вентелятор работает от тройка кэп просто от других пинов вопрос...…
  • Troyka Cap
    18 June, 2020
    @mojo#6175 дело не в разбери пинах так как я пробовал ставить вентилятор на саму разбери и он работал и на тройке он...…
  • Troyka Cap
    18 June, 2020
    нет. проблема врядли в токе. Там 1 светодиод, ему вполне хватит питания от RasPi …
  • Troyka Cap
    18 June, 2020
    @mojo#6176 просто в видео у амперки где обзор на тройку обзор там доп блок питания может просто не хватает тока? …
  • Troyka Cap
    18 June, 2020
    В самом Cap'е врядли могут быть проблемы. Там почти нет ничего такого, что может не работать. …
  • Troyka Cap
    18 June, 2020
    На схеме есть соответствие пинам Cap'а пинам на Raspberry Pi Попробуй модуль со светодиодом подключить напрямую к RasPi...…
  • Troyka Cap
    18 June, 2020
    > @Artem90056#6167 какие подробности я не сказал? Никаких. Я в принципе не понимаю, как ПИН может не работать....…
  • Troyka Cap
    18 June, 2020
    @mojo#6170 возможно что я не втыкаю в тройку кэп доп зарядник и мне не хватает мощности? …
  • Troyka Cap
    18 June, 2020
    @mojo#6170 http://wiki.amperka.ru/продукты:raspberry-troyka-cap пролистни чуть ниже проект маячок дана схема и код …
  • Raspberry pi 4 не включается
    18 June, 2020
    так и должно быть. Без SD карты горят все светодиоды Скорее всего не тот образ записал на карту …
  • Troyka Cap
    18 June, 2020
    Скидывай код и схему к какому пину Troyka Cap и что ты подключаешь …
  • Troyka Cap
    18 June, 2020
    @sv-lary#6166 не работают пины на troyka cap беру пример кода с амперки делаю всё по схеме но результата нет …
  • Troyka Cap
    18 June, 2020
    @sv-lary#6166 скажи что тебе ещё сказать? …
  • Troyka Cap
    18 June, 2020
    @sv-lary#6166 какие подробности я не сказал? я то знаю почему пины не работают да? …
  • Troyka Cap
    18 June, 2020
    > @Artem90056#6165 Troyka Cap не хочет работать И? А можно - хоть какие-то подробности? Или Вы предполагаете, что...…
  • Troyka Cap
    18 June, 2020
    Добрый день, подскажите пожалуйста в чём проблема. У меня заказана Troyka Cap с amperka.ru и Raspberry Pi 4b . Проблема в...…