Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > [avr] Протокол передачи данных


Автор: ProgramerForever 27.3.2010, 11:15
Доброго времени суток.
Пишу диплом: делаю осциллогрфическую приставку к ПК.

Уже сделал один луч, написал программку для отображения. Данные передаются по USART.

Но хотелось бы использовать больше каналов АЦП. (Для Atmega8L в DIP корпусе - 6 каналов. В TQFP корпусе - 8 каналов ).
Возник вопрос: "Как передать данные для N каналов?"
Думаю делать так:
Код

Передать данные с 1го канала;
Передать данные со 2го канала;
...
Передать данные с Nго канала;

Передать контрольную последовательность (например "NewFrame")

Но вот при малой длинне последовательности (2 символа, например), вероятность ошибки равна (1/((N+Длина_последовательности)*(255^2))). При скорости передачи 115000 - это ошибка каждые несколько секунд.
Правда при 4 символах ошибка произойдёт только раз в несколько суток.
Но, всё равно, неохота передавать лишние символы.
Может есть другое решение?

Автор: Mazzi 27.3.2010, 13:58
Другого нет. Во избежание получения недостоверной информации используют протоколы, которые содержат дополнительные служебные данные.

Автор: ManiaK 30.3.2010, 00:06
Цитата(Mazzi @  27.3.2010,  13:58 Найти цитируемый пост)
которые содержат дополнительные служебные данные.

Чтобы было проще найти инфу по этим служебных данным, назову название механизма: "избыточное кодирование", Копайте, ProgramerForever, тема простая и в инете освещена достаточно smile 

Автор: cardinal 30.3.2010, 09:27
Цитата(Mazzi @  27.3.2010,  11:58 Найти цитируемый пост)
которые содержат дополнительные служебные данные. 

checksum добавь например...

И вообще лучше делать запрос, получать ответ, запрос ответ... (по крайней мере с помощью терминала отладить можно будет)

Автор: ProgramerForever 30.3.2010, 11:28
Цитата(cardinal @  30.3.2010,  13:27 Найти цитируемый пост)
И вообще лучше делать запрос, получать ответ, запрос ответ...

МК естественно с ПК будет общаться, но для каждого преобразования делать запрос  smile - не хватит скорости. (хотя, если не гнаться за частотой дискретизации, это тоже идея)
На скорости 57600 выходит 7200 8битных посылок. Ну, а если 2 канала (и +4 байта для разграничения), то получается по 1200 символов в секунду, т.е. максимальная частота входного сигнала - 600 Гц. Что очень мало.
Сегодня или завтра поговорю с преподавателем, может быть буду делать на другом контроллере.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)