ardino mega и функция управления портами DDR и PORT
- Войдите на сайт для отправки комментариев
Вс, 11/12/2011 - 22:43
День добрый.
Приобрел мегу и начал потихоньку разбираться читая чужие программы.
В одной из них увидел возможность управлять портами, но в примере используется arduino uno,
а я хочу использовать отличные от уно цифровые выходы.чтоб не занимать pwm.
Не нашел какие именя портов соответствуют выходам на 22 ноге и выше .
Был бы благодарен если поможет кто.
Вот кусок когда с которого я хочу взять пример.
void setup()
{
DDRD=B11111111; // пины порта D и B обозначаем выходными
DDRB=B111111;
}
Насколько я понима, ардуино тут ужене при чем. Берем даташит на микроконтроллер и там у нас все расписано.
Вроде как код Ваш делает digitalWrite(X,1) где X это все пины PD и PB? Или так задается pinMode?
B11111111 насколько я понял означает BIT, то есть прямое задание битов в байте, который отдается DDR
void setup()
{
DDRD=B11111111; // пины порта D и B обозначаем выходными
DDRB=B111111;
}
DDRx - это Data Direction Register. x здесь заменяется именем соответствующего порта (A,B,C,D,... - в зависимости от модели МК). Устанавливая определенные биты порта в 1, вы программируете соответствующие выводы МК как выходные, а сбрасывая в 0 - как входные. Кое-что об основах можно почитать здесь.
Если вы не собираетесь опускаться ниже уровня абстрагирования, принятого в Arduino IDE, то лучше использовать функцию pinMode().
Ну, а собсно по вопросу распиновки - тута, например.
step962, большое спасибо.
если я правильно понял то в моем случае выводы с 22 по 29 это порт A?
Судя по приведенной ссылке - да. Но я бы поискал еще пару источников информации об этом:
"Arduino mega pinout" - в Google (а еще лучше не Pinout, а PinMapping) и
"Arduino mega распиновка" - в Yandex.
Например, эта страница.
И сравнил бы распиновку с приведенной по указанной мной ссылке.
На всякий случай.