USART в 2560-Мега - как работает?

poty

★★★★★★✩
19 Фев 2020
2,988
895
@avan, экономим время - занимаем память. Добавление к чипу на 8кБ дополнительной памяти на 256байт нецелесообразно, а основную память использовать для этого - добро пожаловать в DMA, которого здесь нет, так как линейка эта - низкого уровня. Вот и получается, что думать нужно прежде, чем покупать, а не узнавать что-то новое только после того, как что-то не потакает Вашим вкусам.
С другой стороны - 1 байта вполне хватает для приёма и обработки, пусть и с некоторой загрузкой процессора. И этот байт принимается автоматически.
 
Изменено:
  • Лойс +1
Реакции: vortigont

vortigont

★★★★★✩✩
24 Апр 2020
910
489
Saint-Petersburg, Russia
Точно также можно было предусмотреть количество принимаемых байт в пачке. И автомат потом принимал бы это количество байт, складывал в многобайтовый буфер (массив) и после этого вывешивал прерывание.
вы только что описали как работает драйвер.
Сам по себе юарт ничего ни в какие массивы складывать не может, максимум что может быть на уровне железа - это сдвиговый регистр и фифо буфер если камушек чуть посерьезнее. Всем остальным нужно управлять программно. Выгребать и перекладывать данные, следить за состоянием линии. Ведь кроме данных еще могут быть разные ошибки - согласования скорости, четности, которые нужно обрабатывать, еще нужно (опионально) управлять потоком, и пр.

А пока юзарт принимал бы АВТОМАТИЧЕСКИ свои 256 байт (да хоть бы и 16) - процессор успеет сделать что-то осмысленное и существенное даже при большой скорости приёма.
Знаете почему там 1 байтовый буфер? Потомучто процессор 8 битный - это позволяет написать очень короткий обработчик прерывания. Получил прерывание - махом забрал байт в общий регистр или перекинул в память и вышел. А при большем фифо обработчик должен собрать в стеке цикл, учитывать длинну, адрес назначения, смещение и побайтово перекладывать данные. Т.е. разменять память/динну кода на количество прерываний. Он просто не создан для интенсивного обмена данными по сериалу. А вы хотите дуть в атмелку 250кбит и в фоне куда-то складывать данные ) В ней памяти 8к, как думаете почему в ней нет фифо буфера размером в 0,5кб ) На скорости в 250 кбит данные объемом со всю доступную память контроллера можно закачать меньше чем за 0.3 секунды. Так ли важно если при этом юарт сгенерит в 10 раз меньше прерываний? Вам все равно нужно обрабатывать данные "на лету", т.к. складывать их тупо некуда.
Если вам нужно молотить сотни килобит непрерывным потоком, то берите соотвествующий инструмент.
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,281
945
58
Марий-Эл
Сейчас производителей устройств ДМХ много, и каждый умней другого, все фигачат на импортных микросхемах.
Причем внутренней ПРИНЦИПИАЛЬНОЙ схемы микросхемы мах485 НЕТ даже в её "даташите" - только условная, из чего непонятно, куда они цепляют нулевой провод линии связи
Не хотел обижать, но упёртость уже достала.
Каша в голове отличная.
Есть протокол !!!!
Он описан в стандарте !!!! И насрать какую микросхему поставил производитель !!!!
Соблюдает допустимые параметры, значит микросхема сделана правильно.
А куда пихается нулевая линия связи нужно смотреть в стандарте DMX. И на коротких дистанциях он и не нужен.
Если посмотреть осциллографом, то противофазный, относительно нулевого провода.
Тебе Русским языком сказали. Сигнал синфазный !!!!
Нулевой провод не нужен !!!!
 
6 Янв 2020
122
-4
что думать нужно прежде, чем покупать,
Совет без-смысленный.
Думай- не думай - бесполезно. НУЖНО ЗНАТЬ.
А всего знать сразу невозможно, жизни не хватит.
Поэтому знания распределяются между разными людьми, и хорошо, если они ими обмениваются.
Если бы я тупо стал всё подряд читать - один "даташит" на 450 страниц, потом другой - на 700, потом еще 145 тысяч подобных,
причем все на иностранном языке, то до того, чтобы потрогать паяльник, я просто бы не дожил.
И вкусов нет никаких просто стремление к здравому смыслу.
Ну, собственно, за неимением графини... воспользуемся размером кухарки...


Знаете почему там 1 байтовый буфер?
Да, конечно, вы во всём правы - что тут поделаешь, как сделали проц, так и сделали.
чего их защищать? Просто я бы так проц не делал. Всегда стремился к совершенству.
Просто после пик12 мне эта мега 2560 представлялась офигенным грузовиком, а тут выяснилось, что он фанерный и вообще без кузова....
Но пока всё-таки сложилось впечатление, что мой мешок картошки он довезёт

Тебе Русским языком сказали
Сэр! ознакомьтесь с документом
и не пылите. Ругаться я здесь ни с кем не намерен.
Кому удобно быть теоретиком - это его выбор.
Мне нужно, чтобы всё работало на практике, а не в сферическом вакууме с идеальными производителями.
С нулевым проводом работало, пусть и на 96,8% - в машинном зале на 100 м.
Без оного выпендривается даже на столе.

Всем спасибо.
 
  • Ну такое -1
Реакции: Stamp

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,281
945
58
Марий-Эл
Сэр! ознакомьтесь с документом
Сэр. Если бы читали этот документ, то не выёживались, а так как читать не любите, значит прочитали по диагонали.
Нулевой провод - это защитное заземление и к самому сигналу никакого отношения не имеет. И его то же нужно уметь подключать.
Я три месяца перелопачивал схемы, перерыл гору литературы.
Теперь мой драйвер работает без проблем на 500 метров в цехе. И не надо мне втуливать за схемотехнику.
Если бы я тупо стал всё подряд читать - один "даташит" на 450 страниц, потом другой - на 700, потом еще 145 тысяч подобных,
В отличие от тебя я люблю читать и мне не в падлу перечитывать даташиты.
Их не нужно читать от корки до корки. Просто нужно в общем разбираться в микроконтроллерах, И читать только конкретно то, что нужно в данный момент.
Я тут где то скидывал ссылку на Яндекс диск в разделе про STM, найди и удивись. Всё, что на русском языке - прочитано. Многое из того, с чем работал переведено.
И не надо мне сказочки рассказывать про теоретиков.
 

te238s

★★✩✩✩✩✩
14 Ноя 2021
375
94
При скорости 9600 Бод и частоте МК 16МГц получаем:
13300 тактов ЦП на 1 байт приёма или передачи
На прерывание 12 тактов плюс переместить данные куда-то пусть ещё 8 тактов итого 20.
20 делим на 13300....занятость ЦП 0.15%
При скорости 250 кБод занятость...3.9%
Если как раз не хватает именно этих 3.9% производительности,значит МК выбран неверно.
 
  • Лойс +1
Реакции: avan
6 Янв 2020
122
-4
Если как раз не хватает именно этих 3.9%
если весь приём пакетов извне у 2560 будет занимать не более 4-5 % времени, пусть даже и размазанного по 100% общего цикла,
то сравнение его с дохлой лошадью, мягко говоря, не в тему... Это вообще мустанг
 
  • Лойс +1
Реакции: te238s