Чтение нескольких выводов через регистры на Arduino Due

Я хотел бы одновременно считывать несколько выводов в Arduino Due через регистры, такие как PINB, PINC, PIND Arduino Uno. Я знаю, что контакты будут разбросаны по нескольким регистрам, но я полагаю, что так будет быстрее, поскольку наверняка будет несколько контактов в одном регистре, а не вызывать digitalRead 40 раз.

Arduino поделилась документацией о том, какие цифровые/аналоговые контакты соответствуют портам реального чипа Сэма, мне просто нужен этот фрагмент кода, который считывается через регистры.

Так что, если кто-нибудь может дать мне эквиваленты этих, я был бы очень признателен:

  • DDRx — регистр направления данных порта C — чтение/запись
  • PORTx — регистр данных порта C — чтение/запись
  • PINx — регистр входных контактов порта C — только для чтения

, 👍0

Обсуждение

я просто написал x, потому что их три, например DDRB, DDRC, DDRD. исходя из этого должен быть порт А, но я думаю, что они не используют их, @Jack


1 ответ


1

Вы найдете хорошее введение в использование регистров портов здесь. В нем также упоминаются некоторые минусы и плюсы использования манипулирования портами.

,

эта документация применима только к платам arduino, использующим чипы ATmega8 и ATmega168, и не относится к плате, в которой используется чип SAM3x ARM., @Jack

Ты прав. Я недостаточно внимательно прочитал ваш заголовок. Но, видимо, этот вопрос уже задавался (и на него уже был дан ответ): https://arduinoprosto.ru/q/9117/sam3x8e-arduino-due-pin-io-registers, @Andreas

Вау, я такого не видел, мне это пригодится в будущих проектах. К сожалению, они говорят только о записи на пины, а не о чтении булавок. Не нашел упоминания о чтении булавок. Хотя, возможно, я нашел подсказку в ответе на этот [вопрос](https://arduinoprosto.ru/q/35457/the-fastest-way-to-read-out-a-digital-pin-state-in-an-arduino-due?noredirect=1&;lq=1), я думаю, мне придется начать оттуда, @Jack