переключение контактов Rx, Tx после Serial.begin

Чего следует ожидать при запуске следующей программы на Arduino Uno?

void setup()
{
    Serial.begin(9600);
    DDRD |= 0b11;
}

void loop()
{
    PORTD |= 0b11;
    delay(100);
    Serial.print("ABCD");
    PORTD &= ~0b11;
    delay(100);
    Serial.print("DEFG\n");
}

При использовании Serial.begin() контакты PD0, PD1 могут быть настроены как контакты UART. После этого, если используется DDR, контакты настроены как GPIO или они все еще являются контактами UART Rx, Tx?

, 👍0

Обсуждение

что происходит, когда вы запускаете эскиз?, @jsotola


1 ответ


1

Как всегда, ответ находится в таблице данных:

  • TXD/PCINT17 – порт D, бит 1

TXD, передача данных (вывод данных для USART). Когда передатчик USART включен, этот вывод настраивается как выход независимо от значения DDD1. PCINT17: Источник прерывания изменения контакта 17. Вывод PD1 может служить источником внешнего прерывания.

  • RXD/PCINT16 – порт D, бит 0

RXD, прием данных (контакт ввода данных для USART). Когда приемник USART включен, этот вывод настраивается как вход независимо от значения DDD0. Когда USART принудительно делает этот вывод входным, подтягиванием все равно можно управлять с помощью бита PORTD0. .

Что будет при попытке установить выходной уровень на выводе TX, покажет только эксперимент. Это не определено в таблице данных (потому что кто будет это делать?)

,