Будет ли работать UART между двумя МК с разными тактовыми частотами?

Тема в разделе "Микроконтроллеры AVR", создана пользователем Suyano, 28 ноя 2019.

  1. Suyano

    Suyano Нерд

    Добрый вечер!

    Что есть:
    1) Atmega328P с кристаллом 16mHz
    2) Atmega328P с кристаллом 8mHz

    Между ними будет связь по UART.

    Вопросы:
    1) Будет ли работать UART, если у устройств разные тактовые частоты, но одинаковая скорость передачи? (115200 БОД).
    2) 8mHz подходит для устройств с напряжением 3.3V. Является ли нормальным, если будет 5 Вольтовое питание с данной частотой? Обычно для 5 Вольт ставят 16mHz.
     
  2. akl

    akl Гуру

    1 - будет, отчего не быть.
    2 - при пониженном питании следует понижать частоту, а не наоборот. то есть 8мгц при 5 вольтах будет хорошо, а вот 16мгц при 3 вольтах - не очень.
     
    Daniil, Tomasina и Suyano нравится это.
  3. Suyano

    Suyano Нерд

    Большое спасибо за помощь!
     
  4. parovoZZ

    parovoZZ Гуру

    Для 5 вольт надо ставить все 20МГц, иначе в 5 вольтах нет никакого смысла. Не понимаю, почему в ардруинах выбрана именно 16МГц.
     
  5. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Чтоб от 3-х батареек работала до полной разрядки. Максимизация "поля".
     
  6. SergeiL

    SergeiL Гуру

    А что с согласованием уровней сигналов?
    Если напряжение у двух плат разное - нужно и уровни сигналов между ними согласовывать.
     
  7. asam

    asam Гик

    Поставить в линии передачи и приема резисторы между контроллерами ом по 220 и будет нормально.
     
  8. Onkel

    Onkel Гуру

    220 oм даст снижение полосы. На 9600 это без разницы, но на высоких частотах может смазать. Лучше преобразователь уровня.
     
  9. asam

    asam Гик

    На мегагерцах - может быть. Но на 115200 все прекрасно будет работать.
     
  10. a1000

    a1000 Гик

    А зачем вообще согласовывать уровни? Мы имеем две Atmega328P. Оба контроллера выдерживают 5 вольт, и уровень 3,3 вольта отлично распознают как логическую единицу.
     
  11. asam

    asam Гик

    Что значит "выдерживают 5 вольт"? Если открыть даташит на Atmega328P то там ясно написано)
    "Voltage on any pin except RESET with respect to ground Min: –0.5 Max: VCC + 0.5"
    То есть если у нас Vcc 3.3V, то подавать больше 3.8 вольт не положено. Другое дело, что там есть защитные диоды на входе, которые лишнее напряжение "сливают" . Но надо ограничивать ток через них иначе диоды легко могут погореть. Вот для этого и нужны токоограничивающие резисторы.