| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > [avr] Протокол передачи данных |
| Автор: ProgramerForever 27.3.2010, 11:15 | ||
| Доброго времени суток. Пишу диплом: делаю осциллогрфическую приставку к ПК. Уже сделал один луч, написал программку для отображения. Данные передаются по USART. Но хотелось бы использовать больше каналов АЦП. (Для Atmega8L в DIP корпусе - 6 каналов. В TQFP корпусе - 8 каналов ). Возник вопрос: "Как передать данные для N каналов?" Думаю делать так:
Но вот при малой длинне последовательности (2 символа, например), вероятность ошибки равна (1/((N+Длина_последовательности)*(255^2))). При скорости передачи 115000 - это ошибка каждые несколько секунд. Правда при 4 символах ошибка произойдёт только раз в несколько суток. Но, всё равно, неохота передавать лишние символы. Может есть другое решение? |
| Автор: Mazzi 27.3.2010, 13:58 |
| Другого нет. Во избежание получения недостоверной информации используют протоколы, которые содержат дополнительные служебные данные. |
| Автор: ManiaK 30.3.2010, 00:06 |
Чтобы было проще найти инфу по этим служебных данным, назову название механизма: "избыточное кодирование", Копайте, ProgramerForever, тема простая и в инете освещена достаточно |
| Автор: cardinal 30.3.2010, 09:27 |
checksum добавь например... И вообще лучше делать запрос, получать ответ, запрос ответ... (по крайней мере с помощью терминала отладить можно будет) |
| Автор: ProgramerForever 30.3.2010, 11:28 |
МК естественно с ПК будет общаться, но для каждого преобразования делать запрос На скорости 57600 выходит 7200 8битных посылок. Ну, а если 2 канала (и +4 байта для разграничения), то получается по 1200 символов в секунду, т.е. максимальная частота входного сигнала - 600 Гц. Что очень мало. Сегодня или завтра поговорю с преподавателем, может быть буду делать на другом контроллере. |