Повисает компьютер при взаимодействии с МК

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
RVL
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт окт 14, 2008 23:47:09

Сообщение RVL »

Всем доброго времени суток.
Возникла у меня проблема:
Есть ATmega16L. Подключена через MAX232CPE к COM-порту компьютера.
Компьютер управляет портами МК (через ключи подключена нагрузка) отправляя ком-порт соответствующие команды.
Собственно, все работает хорошо, но иногда, после очередной команды, повисает компьютер (наглухо - только вкл/выкл). Что может быть???
Кстати, МК подключен к компу через USB2COM переходник.

Спасибо!
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 622
Зарегистрирован: Чт мар 05, 2009 05:31:16
Откуда: г. Кемерово

Сообщение Alexey1969 »

Сам по себе порт комп завесить не может, а вот программа которая работает с портом, может. В опрос порта , надо добавить тайм аут, на случай потери части байтов. Возможно, при потере части байт, программа продолжает их ждать.
Контактная информация:
Реклама
Опытный кот
Аватара пользователя
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Сообщение asteroid7 »

Программа на РС своя или терминал какой?
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Правильно сказали - повисать должна программа во время работы с портом. Но если работа сделана правильно, т.е. ожидание, передача данных и т.д реализовано в отдельных потоках - зависаний не будет.

А если программа вешает всю систему, то... выкинь эту программу, и систему за одно.
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев

Сообщение BCluster »

Не должно быть такого. Если писали сами - все операции работы с портом запускайте в отдельном треде, ploop истину глаголит)
Контактная информация:
Реклама
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

ploop писал(а):Правильно сказали - повисать должна программа во время работы с портом. Но если работа сделана правильно, т.е. ожидание, передача данных и т.д реализовано в отдельных потоках - зависаний не будет.
А если программа вешает всю систему, то... выкинь эту программу, и систему за одно.
Ага. Меня вообще всегда это поражало - запускаешь какую-нибудь хрень в потоке и нормально. Хотя по факту оно хоть в основном, хоть в неосновном потоке висеть должно одинаково. А вообще, по чесноку, зависания в системах с вытесняющей многозадачностью быть не должно никак.
Знание - сила!
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Ага. Меня вообще всегда это поражало - запускаешь какую-нибудь хрень в потоке и нормально. Хотя по факту оно хоть в основном, хоть в неосновном потоке висеть должно одинаково.
Это как так?
Что такое зависание? Программа работает, но не реагирует на команды пользователя. А не реагирует потому, что окно (или что там еще, не важно) прорисовывается и обрабатывает события (команды) пользователя в том же потоке, что и основная логика. Вот и весь секрет :)

Вот если разделить интерфейс и логику (подозреваю, что так и сделано в *nix системах), то это окно хоть убрать с глаз долой можно, пока программа не соизволит "отвиснуть" :)
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

Что такое зависание? Программа работает, но не реагирует на команды пользователя. А не реагирует потому, что окно (или что там еще, не важно) прорисовывается и обрабатывает события (команды) пользователя в том же потоке, что и основная логика. Вот и весь секрет
Э нет, это-то понятно, что если прога думает, то интерфейс висит. Это решается распоточиванием еще с каменного века (как и печать, и сохранение и все остальное). Суть в другом - иногда потоки (или процессы) зависают намертво по одним им известным причинам, причем повисает почти сразу и вся система, хотя казалось бы - отобрал в нужный момент системное время у процесса и все. Ан нет - пишут, что он там вовсю чего-то молотит. Причем в винде даже в командную строку не зайти, в линуксе хоть иногда можно Борна запустить да закиллить гада. Вот и непонятно иногда - как так ОСи пишут, что какие-то ошибки к такому вот приводят. Понятно, что эти гадкие процессы себе могли приоритету запросить немеряно, так ведь не повод......
Знание - сила!
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Понятно, что эти гадкие процессы себе могли приоритету запросить немеряно, так ведь не повод......
Ну, значит ошибка. Любой косяк внутри (недогляд программиста, например, ошибка в работе с указателями или... да много чего придумать можно) может привести к повреждению памяти внутри процесса, он и запросит приоритет повыше и тут же зациклится... Но это догадки конечно.

А я вот одного не понимаю, для чего нужен потокам приоритет реального времени? Баловался с ним, такое ощущение, что даже прерывания у процессора отключаются, всё время отдаётся этому потоку, короче система становится парализована...
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

ploop писал(а):Баловался с ним, такое ощущение, что даже прерывания у процессора отключаются, всё время отдаётся этому потоку, короче система становится парализована...
Ага! Вот у нас кто хулюганит! :))
Знание - сила!
Собутыльник Кота
Аватара пользователя
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев

Сообщение BCluster »

Эт драйверный режим. Винда в обычном режиме не дает точности выше 10 мс, если нужно больше - вперед в драйверный режим. Но там надо оч аккуратно)
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев

Сообщение BCluster »

А насчет *nix. Там треды применяются намного реже чем в винде, считается что там проще запустить еще десяток-другой процессов, ибо хорошо развита система межпроцессного взаимодействия
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

BCluster писал(а):А насчет *nix. Там треды применяются намного реже чем в винде, считается что там проще запустить еще десяток-другой процессов, ибо хорошо развита система межпроцессного взаимодействия
Ну это еще как посмотреть. Учитывая, что потоки там очень просто устроены, проблем нет.

Насчет IPC - это да. 8)
Получше виндовых кое в чем.
Знание - сила!
Собутыльник Кота
Аватара пользователя
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев

Сообщение BCluster »

да в виндах треды тож несложно устроены ) там просто есть свои проблемы)
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

BCluster писал(а):да в виндах треды тож несложно устроены ) там просто есть свои проблемы)
Меня лично напрягает число параметров и их жуткие названия. Даже дурацкий линукс и то проще в этом плане.
Знание - сила!
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Это всё хорошо, но у автора, мне кажется, комп конкретно завис, раз не появляется :)))
Модератор
Аватара пользователя
Сообщения: 4673
Зарегистрирован: Вс июн 01, 2008 00:17:35
Откуда: Я всего лишь плод вашего воображения...

Сообщение Пухич »

ploop писал(а):Это всё хорошо, но у автора, мне кажется, комп конкретно завис, раз не появляется :)))
Может быть. :)

Зато он с Атмегой общается, а мы - нет. :)
Знание - сила!
RVL
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт окт 14, 2008 23:47:09

Сообщение RVL »

Нет. Автор не завис. Автор чинил свой комп (не связано с мегами).

Насчет зависаний вроде разобрался: действительно где-то ждало считывание из порта, когда там ничего не было.

Встала другая проблема:
заливаю периодически прошивку (процесс отладки).
После очередного "залива" мк стал плохо принимать с ком-порта.
Передаешь ему одну команду, а он делает по другой.
Долго пытался понять "почему?". Вставил другой мк с той же прошивкой - все работает. Хотя оба мк периодически меняю туда-сюда (до этого проблем не было).
Такое бывает с мегами?
Собутыльник Кота
Аватара пользователя
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев

Сообщение BCluster »

мож контакты?)
Контактная информация:
RVL
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт окт 14, 2008 23:47:09

Сообщение RVL »

BCluster писал(а):мож контакты?)
ПРимерно 50% команд воспринимается нормально.
Ответить

Вернуться в «Интеграция с ПК»