Доступ к физическим контактам Arduino Due из Arduino IDE
Можно ли получить доступ к физическому контакту 93, контакту PC11 на ATSAM3X8E в Arduino Due из Arduino IDE?
Я программирую Barebone ATSAM3X8E, и он, похоже, не выделяется Arduino Due или ATSAM3X8E для каких-либо других целей, кроме порта ПК.
@Brethlosze, 👍1
Обсуждение1 ответ
Изменение/Создание варианта
Если бы вы хотели сделать это в стиле Arduino, это потребовало бы редактирования Arduino Due variant.cpp или скопируйте свой собственный вариант, скажем, из копии Due, и отредактируйте массив extern const PinDescription g_APinDescription []
, чтобы включить запись, соответствующую PC11.
Пример изменений
В качестве эксперимента я внес следующие изменения в файлы в пакетах/arduino/hardware/sam/1.6.12/variants/arduino_due_x
в каталоге arduino15.
В variant.cpp, запись в массиве g_APinDescription-это вставка индексного номера 79 между существующими двумя записями (показано для контекста):
{ PIOB, PIO_PB23B_SPI0_NPCS3,ID_PIOB,PIO_PERIPH_B,PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // NPCS3
// Строка добавления здесь VVVV (это строка для PC12, скопированная с PIO_PC12, измененная на PIO_PC11
{ PIOC, PIO_PC11, ID_PIOC, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, //
// 79 .. 84 - маски "Все контакты"
// 79 - TWI0 все контакты
{ PIOA, PIO_PA17A_TWD0|PIO_PA18A_TWCK0, ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT, (PIN_ATTR_DIGITAL|PIN_ATTR_COMBO), NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER },
Это копия записи для PC12, с PIO_PC12,
измененной на PIO_PC11
.
В variant.h PINS_COUNT
изменяется на 80u
, потому что мы вставили контакт:
#define PINS_COUNT (80u)
а позже в файле вывод, связанный с CAN, увеличивается на единицу еще и потому, что все они пронумерованы после точки вставки:
/*
* Complementary CAN pins
*/
static const uint8_t CAN1RX = 89;
static const uint8_t CAN1TX = 90;
// CAN0
#define PINS_CAN0 (91u)
// CAN1
#define PINS_CAN1 (92u)
Я запрограммировал скетч blinks PC11 с помощью digitalWrite(79, state);
и осторожно поместил логический зонд на необработанный вывод на плате Due, и он "мигает" просто отлично. Это все, что я проверил.
Прямое управление
С другой стороны, вы можете управлять выводом в своем коде вручную, делая то, что обычно делают digitalWrite или
digitalRead
. Другими словами, вы можете прочитать описание чего-то вроде digitalWrite здесь и заменить все ссылки, которые он получил бы от g_APinDescription
, жестко закодированными значениями.
Если у меня будет шанс, я попробую изменить этот вариант здесь. Похоже, что новый контакт должен быть вставлен перед индексом PINS_COUNT
, который должен быть увеличен на единицу. И тогда "PINS_COUNT" и несколько других именованных значений для контактов должны будут измениться, чтобы отразить все их индексы, увеличивающиеся на единицу., @timemage
Я сделал шесть изменений линии, указанных, по какой-то причине физический вывод 93, PC11, в нашем скетче на 79, он остается на 3,3 В. Буду продолжать пытаться, @Brethlosze
Вы не забыли pinMode(79, OUTPUT);
?, @timemage
ДА... как и все остальные контакты. Для справки, это 93 - й физический контакт в ATSAM3X8E, он расположен рядом с разъемом A0, на плате Arduino Due., @Brethlosze
Из этого и из обновления я понял, что вы беспокоитесь, что мы говорим не об одном и том же контакте, но я почти уверен, что это так. Вот [контакт, который я устанавливаю](https://imgur.com/a/nUdFbaO) зондировать., @timemage
Верно... Возможно, я упускаю какой-то шаг. Я буду продолжать проверять., @Brethlosze
- Безопасно ли припаивать скользящий переключатель к неиспользуемым выводам GPIO?
- Может ли режим pin повредить Arduino с подключенной электроникой?
- NodeMCU - Vin контакт как выход 5V?
- Использовать все контакты как цифровые входы/выходы
- Что такое ICSP pin (разъём)?
- Сколько датчиков может поддерживать один модуль Arduino?
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Какой тип разъема использует система GROVE?
вы можете настроить свою собственную плату для Arduino IDE https://arduinoprosto.ru/q/54484/adding-a-custom-board-to-the-arduino-ide/60660#60660, @Juraj