Собрали плату на камне Atmega8, которая собирает данные о температуре, напряжении и пр.
Принцип работы - шлем в порт данные, они приходят на udr камня, возникает прерывание и обработчик прерывания смотрит, какая команда пришла на udr и в соответствии с этим вызывает соотв. функцию...
все работало нормально, пока плата подключалась к COM-порту...инициализация была stty -F /dev/ttyS0 9600
но как только мы купили переходник CP2102 и подключили его к USB, а к нему нашу плату , то возникла интересная ситуация
Инициализация stty -F /dev/ttyUSB0 9600 raw
посылаем данные echo -n $'\xКОМАНДА(02 например)' > /dev/ttyUSB0
слушаем cat /dev/ttyUSB0 в соседнем терминале - принимаем ответы ОК и температуру и пр.
НО, единственное отличие - раз в 2.20 секунд приходит в терминал прослушки порта такая последовательность
UN
UN
UN
Забыл сказать, что UN - ответ камня Atmega8a на команду, которую он не понимает... так вот - каким образом эти данные мне приходят, ведь я в порт ничего не посылаю..возможно порт USB сам генерит какие то запросы? Подскажите пожалуйста, кто что думает по этому поводу!!
Заранее всем Спасибо!!
Разница между COM и USB
- Реклама
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Разница между COM и USB
Не генерит. точно. Возможно, это из-за помех - возникает импульс в линии и контроллер воспринимает это как старт передачи. Вы когда принимаете данные, анализируете состояние битов отвечающих за ошибки приема? Такие как отсутствие стоп-бита, неверный контроль четности, состояние линии "разрыв". Правда, при полном отключении контроля четности одиночный импульс может вызвать вполне корректный прием порции данных $00 или $FF.
