Чтение нескольких выводов через регистры на Arduino Due
Я хотел бы одновременно считывать несколько выводов в Arduino Due через регистры, такие как PINB, PINC, PIND Arduino Uno. Я знаю, что контакты будут разбросаны по нескольким регистрам, но я полагаю, что так будет быстрее, поскольку наверняка будет несколько контактов в одном регистре, а не вызывать digitalRead 40 раз.
Arduino поделилась документацией о том, какие цифровые/аналоговые контакты соответствуют портам реального чипа Сэма, мне просто нужен этот фрагмент кода, который считывается через регистры.
Так что, если кто-нибудь может дать мне эквиваленты этих, я был бы очень признателен:
- DDRx — регистр направления данных порта C — чтение/запись
- PORTx — регистр данных порта C — чтение/запись
- PINx — регистр входных контактов порта C — только для чтения
@Jack, 👍0
Обсуждение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
- Arduino Due vs Mega 2560
- Точность часов времени Arduino
- Регистры ввода-вывода SAM3X8E (Arduino Due)
- Построение графика на Python с использованием Tkinter Canvas
- Ручная установка Arduino Due
- analogRead всегда 1023 на Arduino Due
- Как выбрать пару SDA/SCL на Arduino Due?
- Как упаковать 16-битное целое число, чтобы отправить его с помощью serial.write?
я просто написал x, потому что их три, например DDRB, DDRC, DDRD. исходя из этого должен быть порт А, но я думаю, что они не используют их, @Jack