Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Несколько страниц назад довольно невнятно и совсем незнаючи задавал вопрос про UART. Слегка разобрался. Теперь переформулирую его более конкретно. (+)
Отправлено
mayn 19 июня 2007 г. 02:22
Плата передает на комп непрерывно данные. На компе в некоторый момент включается программа чтения с COM порта. Как она узнает, какой из нулей является стартовым битом? Какие есть возможности синхронизовать чтение компом с началом посылки символа?Я в качестве примера передаю, скажем, байт 0x41 (A, c 5 нулями).
8 байт, нет проверки на четность, 1 стоп бит. При этом у меня цепочка принимаемых компом бит периодична с 6 нулями в периоде (5 нулей в символе + 1 старт бит). Ну, конечно, я и получал цепочку с одним из 6 символов (то есть либо AAAAA..., либо TTTTT... и т.д.), в зависимости от того, какой из нулей будет "опознан" как старт бит.
+ при этом в некоторых случаях будет ошибка стоп бита (0, а не 1), но в некоторых (в данном случае >1) случаях даже ошибки не будет, т.е. определить цепочку AAAAA... как правилиную однозначно не получится.
Замечу, что если программу чтения с COM порта запустить до пересылки данных, то комп принимает то, что надо, что подтверждает правильность и программы чтения с COM порта, и программы в микроконтроллере, которая посылает данные
Составить ответ | Вернуться на конференцию
Ответы
- Да все это хорошо, а как физически реализован обмен (т.е. RS232, RS485 и.т.д), длина линии. Может дело в элементарных помехах или в неверном согласовании? — Mk - 51 (19.06.2007 11:24:58 195.28.39.114, пустое)
- День УАРТов :) Мне позывы сотворить непрерывный поток непонятны - ну ладно, поймал байтовую синхронизацию, а смысловую синхронизацию как поймать? Или в этом потоке постоянно передается одна переменная размером один байт? — Vladimir Ljaschko (19.06.2007 10:59:57 194.158.204.49, пустое)
- Пускай комп передаст break, железяка его поймает, отдохнет чуток, а комп потом поймает синхру. — SM (19.06.2007 10:13:33 80.92.255.53, пустое)
- А организовать паузу в потоке железки можно? пауза длиной больше байта убьет проблему насмерть — pau62 (19.06.2007 09:13:55 88.86.64.165, пустое)
- Ответ: — rezident (19.06.2007 02:33:44 77.43.137.96, 539 байт)
- Хоть данные и непрерывные, но полезно периодически перерывы все-таки делать ;) Короткие - длительностью чуть больше интервала передачи байта. Это снимет все проблемы с синхронизацией... — Гудвин (19.06.2007 02:27:2 195.133.109.197, пустое)