Эквивалент UCSR0B для ESP2866

Я пытаюсь преобразовать программу Arduino Uno для использования с ESP2866. Я успешно конвертировал большую часть программы, но есть несколько строк, которые я не могу понять. Например,

  UCSR0B = 0b10011101;
  UCSR0B = 0b10011100;

Эти строки приводят к следующей ошибке:

Compilation error: 'UCSR0B' was not declared in this scope

Насколько я понимаю, эти строки изменяют параметры в одном из последовательных регистров Uno. Можно ли проделать аналогичные действия с ESP? Я пытался исследовать это, но нашел очень мало информации в Интернете. Я использую Arduino IDE v2.2.1. Спасибо!

, 👍0

Обсуждение

При переносе программного обеспечения с одной цели на другую, особенно если оно имеет прямой доступ к оборудованию, **всегда** необходимо читать и понимать документацию обеих целей. Прежде чем опубликовать здесь вопрос, вам необходимо выполнить домашнее задание, чего вы, судя по всему, не сделали., @the busybee


1 ответ


1

UCSR0B — это регистр управления и состояния UART на ATMEGA328, процессоре, используемом во многих моделях Arduino. Это выдержка из таблицы данных ATMEGA328, показывающая, что делают биты:

Установка значения 0b10011101 включает RXCIE, RXEN,TXEN, UCSZ2 и TXB, а установка значения 0b10011100 устанавливает все биты, кроме TXB. Установка UCSZ2 включает 9-битный режим, а установка или очистка TXB устанавливает или очищает девятый бит для передаваемых данных.

Быстрый взгляд на конфигурацию UART ESP8266 показывает, что UART поддерживает максимум 8 бит, поэтому, если вашему приложению определенно требуется 9 бит, вы не сможете сделать это на ESP8266.

typedef enum {
    UART_DATA_5_BITS = 0x0,    /*!< word length: 5bits*/
    UART_DATA_6_BITS = 0x1,    /*!< word length: 6bits*/
    UART_DATA_7_BITS = 0x2,    /*!< word length: 7bits*/
    UART_DATA_8_BITS = 0x3,    /*!< word length: 8bits*/
} uart_word_length_t;
,