Свежие обсуждения
Микроконтроллеры

MSSP(IIC) и USART

1 10 13

Не, вы не путайте. Разговор идёт о ПРОВЕРКЕ стоп-бита, а не о необходимости его наличия. Пусть он будет, но зачем конвертору его проверять?

Грубо говоря, проверка стоп-бита есть попытка сделать вид, что идёт проверка передачи на ошибку, причем на протоколе, практически не имеющем механизмов проверки и/или исправления ошибок.

Уж лучше начните передавать байты с битом паритета, тогда хоть видимость проверки останется

 

GM:
вы не путайте
А я и не путаю. Чуть ранее Вы говорили, об отсутствии стоп-бита, в каких-то системах.
Я же в своих девайсах использую именно проверку. Действительно, данная проверка не обеспечивает правильности принятого байта, но позволяет хоть убедиться, что байт закончился.
Главное же, я не вижу плюсов в отказе от этой проверки.

 

Это как горчичник - ни вреда, ни пользы, а пощиплет славно.

 

GM:
давайте ещё раз вернёмся к тому примеру
Честно говоря, так до конца и не разобрался с Вашим предложением, но основная идея понятна.
Вы предлагаете передавать биты не дожидаясь приёма всего байта.
Во-первых, при этом, естественно, автоматически исключаются любые попытки проверок правильности передачи (ох, и не любите Вы их, проверки, за что-то ). А главное, что, при этом, придётся организовывать второй программный UART. А два программных UART'а, это - неминуемый джитер, не говоря уже о гемморое.

 

chav1961:
Основная идея думаю, понятны.
Угу. В принципе, она другой и не может быть. Главное её отличие от той, которую я сделал, то, что обработчик не разбивается на сценарии. Наверное, при 8-ми параллельных UART'ах, это - лучшее решение.
Единственное, что-то не уловил, Вы, при передаче, все семь единиц передаёте, или "тормозите" после первой?

 

Не два, а четыре. Не понимаю, что вы имеете в виду под словом джиттер, скорее всего не то, что я имею в виду. Срочно переходите на авр, не будет никакого гембеля, заодно избавитесь от нерегламентированных 24 МГц, асинхронного приёма асинхронного сигнала, начнёте передавать свой миди побитно...повысите скорость конвертирования на порядок или понизите частоту проца до 1МГц, а также и потребление уменьшите на порядок, можно будет питать прямо от уарта. Кстати, вы знаете, что такое гембель ?

Я не против проверок, но категорически против безмозглых проверок, когда надуваются только щёки, а дело не делается. Да и пустое это всё для конвертера, делать проверки, принимать решения...Основная задача конвертера - сидеть тихо и незаметно на линии и преобразовывать скорости. Тихо и незаметно в данном случае означает вносить минимум искажений и задержек в конвертируемый сигнал.

Судите сами, представим себе миди-линию (пусть для конкретности длиной 50 м), которая соединяет два миди-устройства. Внезапно налетела мощная помеха и исказила миди-сигнал. Логично предположить, что приёмное миди-устройство должно разобраться с помехой и принять соответствующее решение. Все довольны.

Теперь смотрите, что у вас. Одно миди-устройство заменяется связкой конвертер-компьютер. Точно также налетает помеха, только компьютер не принимает байта вообще, т.к. некий "винтик" решил проверить наличие стоп-бита. Такой подход никуда не годится. "Наши люди по ночам на такси в булочную не ездят..."

 

Gregory: при передаче, все семь единиц передаёте, или "тормозите" после первой?
Gregory, честно говоря, не уловил вопрос. Если имеется в виду, передаю ли я данные по каждому тику, ответ - да, передаю, и они при этом, разумееется, по 8 раз повторяются. Можно было этого не делать, немного сэкономив процессорное время, но тогда количество команд от момента возникновения прерывания по тику до момента появления новых данных на линиях Tx оказывается переменным. Я решил, что это бОльшая неприятность, чем небольшой перерасход времени процессора.

 

GM:
Не два, а четыре
Я считаю, что два, поскольку каждый UART имеет линию TxD и RxD, работающие на одной частоте.

под словом джиттер я понимаю "дрожание" (смещение) фронта/спада импульса относительно того места (имеется ввиду осциллограмма), где он должен находиться. При чём все остальные характеристики остаются без изменений, да и сам фронт/спад, в следующий период (или через несколько периодов) возвращается "на исходную".

вы знаете
Не знаю.
Почему-то вспомнился анекдот, времён "застоя":
- Что дают?
- Сименона.
- А это лучше кремплена?
- Не знаю, не пил.

принять соответствующее решение
Решение должно быть точно таким же. Т.е. конвертер, "облегчает жизнь" приёмникам.

"Наши люди по ночам на такси в булочную не ездят..."
Ну, во-первых, про ночь там речи не было, а, во-вторых, сами же предлагаете переходить на АВРы.
Вы забываете, что у меня всё давно сделано и работает без проблем.

 

chav1961:
не уловил вопрос
У Вас передача осуществляется последовательным сдвигом двух регистров, в которые предварительно записываются информационные и служебные биты. Во втором регистре, свободные места заполняются единицами.
Так вот я и спрашиваю, сдвиг-передача второго регистра осуществляется до конца, или "тормозится" после первой же "единицы"?

 

Теперь понятно. Сдвиг и передача осуществляются бесконечно. Можно было бы сэкономить на сдвигах, но тогда заметно усложняется участок формирования очередного байта для вывода в порт Tx. Реальная экономия оказывается намного меньше ожидаемой.