Есть ли окончательное руководство по Arduino DUE?
Я ищу справочный документ или систему документации, которая конкретно относится как минимум:
- Трафаретная печать PIN имя/номер
- SAM3X8E PIN
- Регистрационный номер
- Номер канала
- Название порта
В моем случае я хочу изменить характеристики ШИМ контактов 2 и 3 (как указано на физической плате). Различные сообщения на форуме обсуждают настройку регистров, сопоставление выводов регистров, но, похоже, ничего не происходит.
На печатном Arduino контакты от 2 до 13 перечислены как ШИМ-контакты, всего 12. На этой странице контакты 2 и 3 сопоставляются с PB25 и PC28 соответственно на чипе SAM3X8E. Предположительно, это означает, что вывод 2 находится на порту "B", а 3-на порту "C". Ссылаясь на эту страницу, пример кода проходит через "все 8" ШИМ-портов и контактов, что в соответствии со схемой именования регистров PIO_ASBR_Pxx
предполагает, что контакты с номерами от 16 до 19 находятся на порту B, а от 21 до 24-на порту C. Позже порты PWM снова повторяются с помощью PWM->PWM_CH_NUM[i]
, где i
работает от 0 до PWMCH_NUM_NUMBER - 1
, что предлагается как 8 в общей сложности.
Затем "Вывод 2" на плате, по-видимому, сопоставляется с именованным выводом на чипе Atmel PB25, где-то между 21 и 24 именем регистра и между 0 и 7 индексом канала. Конечно, есть место, которое пытается гармонизировать все эти разрозненные соглашения об именах.
Дополнительная информация:
Например, ШИМ/цифровой вывод 2 отображается на PB25 на чипе в соответствии со схемой, предоставленной Majenko. PB25 не входит в состав ШИМ - контактов в соответствии с техническими данными микросхемы. Как мне это понять?
При ссылке на имя PIO_ASBR_19
это 20-й бит в регистре PIO_ASBR, но как этот бит сопоставляется с отображением порта/pin? Затем, хотя в таблице данных обсуждается регистр "PIO_ASBR", поскольку он может относиться не более чем к 32 контактам, в таблице данных не раскрывается, как отобразить лишние контакты.
@J Collins, 👍1
Обсуждение1 ответ
Полная распиновка доступна на arduino.cc в магазине и в разделе "Начало работы".
Например, ШИМ/цифровой вывод 2 сопоставляется с PB25 на чипе. PB25 не входит в состав ШИМ - контактов в соответствии с техническими данными микросхемы. Как мне это понять?
Ядро Arduino использует таймеры для выполнения ШИМ на контактах без встроенной поддержки ШИМ.
В исходном коде analogWrite вы можете увидеть разделы для выводов DAC, PWM и TIMER PWM.
Информация о контактах для ядра Arduino находится в variant.cpp.
- Регистры ввода-вывода SAM3X8E (Arduino Due)
- Arduino Due vs Mega 2560
- Точность часов времени Arduino
- Построение графика на Python с использованием Tkinter Canvas
- Миграция проекта Arduino Uno R3 в Wemos D1 R2 — проблемы с распиновкой
- Построение графика данных датчика Arduino в реальном времени на Processing, MatLab или Python
- Ручная установка Arduino Due
- Проблемы с подключением I2C на ESP8266 — 12F, какие контакты использовать?
Имя -> pin -> отображение порта/бита можно получить из [схемы](https://www.arduino.cc/en/uploads/Main/arduino-Due-schematic.pdf). ШИМ-отображения канала - > pin можно получить из таблицы данных SAM3X8E., @Majenko
в магазине Arduino: https://content.arduino.cc/assets/Pinout-Due_latest.pdf, @Juraj
Простите мою простоту, но похоже, что обе ссылки, схема и распиновка, просто связывают имена контактов, напечатанных на экране, с обозначением P[A|B|C|D][dd]. Когда я просматриваю (огромную) таблицу микросхем, я не могу найти большинство определений регистров, необходимых для сопоставления с обозначением контакта. Не могли бы вы помочь мне истолковать этот документ?, @J Collins
PC7-это порт C бит 7. Тут особо нечего толковать. Для специальных периферийных устройств, таких как PWM, вы просто смотрите их в таблице мультиплексирования портов (раздел 9.3)., @Majenko
@Juraj Я вижу, что есть много информации, но она все еще не может определить 1) Какой идентификатор ШИМ (i=0..7) Соответствует Pin 2, какой бит pin находится в любом регистре (16..19, 21..24)., @J Collins
@Majenko: Вывод 2 - это PB25, который не помогает идентифицировать его идентификатор ШИМ или позицию в регистре., @J Collins
Я вижу там контакты с надписями PWML1, PWMH0 . Это идентификатор ШИМ?, @Juraj
Вывод 2-PB25. Это бит 25 в регистрах порта B. В матричной таблице
PB25
имеет альтернативную функциюTIOA0
., @Majenko@Juraj Возможно, это так, это определенно не соответствует 12 контактам, напечатанным на плате, и я вижу, что контакты 2 и 3 не являются членами этого набора., @J Collins
Я думаю, что ваша путаница может быть вызвана тем фактом, что существует два способа генерации ШИМ: использование модуля "Быстрый ШИМ" и использование таймера., @Majenko
@Majenko вы заметите из моей второй ссылки с примером кода, что PB25 не является одним из регистров, адресуемых при включении высокоскоростного ШИМ. Они 16..19 на порту B и 21..24 на порту C, которые по отображению контактов, которые я связал, являются D47..44 и D9..6 соответственно, опять же отличаются от данных, предоставленных Juraj., @J Collins
Кроме того, вы можете быть правы, Arduino кажется мне немного беспорядочным, когда дело доходит до чего-то слегка продвинутого. Тогда я мог бы задать более простой вопрос: как я могу получить более высокую частоту переключения ШИМ на контактах 2 и 3?, @J Collins
Я всегда придерживался мнения, что Due, в общем, является одной из худших плат Arduino, когда-либо созданных. Я бы никогда ни за что не рекомендовал его., @Majenko