Например TDA7294

Форум РадиоКот :: Просмотр темы - Повисает компьютер при взаимодействии с МК
Форум РадиоКот
https://radiokot.ru/forum/

Повисает компьютер при взаимодействии с МК
https://radiokot.ru/forum/viewtopic.php?f=24&t=18011
Страница 1 из 2

Автор:  RVL [ Чт июл 23, 2009 00:58:01 ]
Заголовок сообщения:  Повисает компьютер при взаимодействии с МК

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

Спасибо!

Автор:  Alexey1969 [ Чт июл 23, 2009 04:25:02 ]
Заголовок сообщения: 

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

Автор:  asteroid7 [ Чт июл 23, 2009 07:35:47 ]
Заголовок сообщения: 

Программа на РС своя или терминал какой?

Автор:  ploop [ Чт июл 23, 2009 08:11:37 ]
Заголовок сообщения: 

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

А если программа вешает всю систему, то... выкинь эту программу, и систему за одно.

Автор:  BCluster [ Чт июл 23, 2009 10:37:14 ]
Заголовок сообщения: 

Не должно быть такого. Если писали сами - все операции работы с портом запускайте в отдельном треде, ploop истину глаголит)

Автор:  Пухич [ Чт июл 23, 2009 13:36:12 ]
Заголовок сообщения: 

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


Ага. Меня вообще всегда это поражало - запускаешь какую-нибудь хрень в потоке и нормально. Хотя по факту оно хоть в основном, хоть в неосновном потоке висеть должно одинаково. А вообще, по чесноку, зависания в системах с вытесняющей многозадачностью быть не должно никак.

Автор:  ploop [ Чт июл 23, 2009 14:05:34 ]
Заголовок сообщения: 

Цитата:
Ага. Меня вообще всегда это поражало - запускаешь какую-нибудь хрень в потоке и нормально. Хотя по факту оно хоть в основном, хоть в неосновном потоке висеть должно одинаково.

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

Вот если разделить интерфейс и логику (подозреваю, что так и сделано в *nix системах), то это окно хоть убрать с глаз долой можно, пока программа не соизволит "отвиснуть" :)

Автор:  Пухич [ Чт июл 23, 2009 14:16:24 ]
Заголовок сообщения: 

Цитата:
Что такое зависание? Программа работает, но не реагирует на команды пользователя. А не реагирует потому, что окно (или что там еще, не важно) прорисовывается и обрабатывает события (команды) пользователя в том же потоке, что и основная логика. Вот и весь секрет


Э нет, это-то понятно, что если прога думает, то интерфейс висит. Это решается распоточиванием еще с каменного века (как и печать, и сохранение и все остальное). Суть в другом - иногда потоки (или процессы) зависают намертво по одним им известным причинам, причем повисает почти сразу и вся система, хотя казалось бы - отобрал в нужный момент системное время у процесса и все. Ан нет - пишут, что он там вовсю чего-то молотит. Причем в винде даже в командную строку не зайти, в линуксе хоть иногда можно Борна запустить да закиллить гада. Вот и непонятно иногда - как так ОСи пишут, что какие-то ошибки к такому вот приводят. Понятно, что эти гадкие процессы себе могли приоритету запросить немеряно, так ведь не повод......

Автор:  ploop [ Чт июл 23, 2009 14:23:33 ]
Заголовок сообщения: 

Цитата:
Понятно, что эти гадкие процессы себе могли приоритету запросить немеряно, так ведь не повод......

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

А я вот одного не понимаю, для чего нужен потокам приоритет реального времени? Баловался с ним, такое ощущение, что даже прерывания у процессора отключаются, всё время отдаётся этому потоку, короче система становится парализована...

Автор:  Пухич [ Чт июл 23, 2009 14:35:38 ]
Заголовок сообщения: 

ploop писал(а):
Баловался с ним, такое ощущение, что даже прерывания у процессора отключаются, всё время отдаётся этому потоку, короче система становится парализована...


Ага! Вот у нас кто хулюганит! :))

Автор:  BCluster [ Чт июл 23, 2009 14:37:57 ]
Заголовок сообщения: 

Эт драйверный режим. Винда в обычном режиме не дает точности выше 10 мс, если нужно больше - вперед в драйверный режим. Но там надо оч аккуратно)

Автор:  BCluster [ Чт июл 23, 2009 14:44:00 ]
Заголовок сообщения: 

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

Автор:  Пухич [ Чт июл 23, 2009 17:01:43 ]
Заголовок сообщения: 

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


Ну это еще как посмотреть. Учитывая, что потоки там очень просто устроены, проблем нет.

Насчет IPC - это да. 8)
Получше виндовых кое в чем.

Автор:  BCluster [ Чт июл 23, 2009 17:04:10 ]
Заголовок сообщения: 

да в виндах треды тож несложно устроены ) там просто есть свои проблемы)

Автор:  Пухич [ Чт июл 23, 2009 17:20:53 ]
Заголовок сообщения: 

BCluster писал(а):
да в виндах треды тож несложно устроены ) там просто есть свои проблемы)


Меня лично напрягает число параметров и их жуткие названия. Даже дурацкий линукс и то проще в этом плане.

Автор:  ploop [ Чт июл 23, 2009 17:24:36 ]
Заголовок сообщения: 

Это всё хорошо, но у автора, мне кажется, комп конкретно завис, раз не появляется :)))

Автор:  Пухич [ Чт июл 23, 2009 17:44:43 ]
Заголовок сообщения: 

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


Может быть. :)

Зато он с Атмегой общается, а мы - нет. :)

Автор:  RVL [ Сб июл 25, 2009 00:04:29 ]
Заголовок сообщения: 

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

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

Встала другая проблема:
заливаю периодически прошивку (процесс отладки).
После очередного "залива" мк стал плохо принимать с ком-порта.
Передаешь ему одну команду, а он делает по другой.
Долго пытался понять "почему?". Вставил другой мк с той же прошивкой - все работает. Хотя оба мк периодически меняю туда-сюда (до этого проблем не было).
Такое бывает с мегами?

Автор:  BCluster [ Сб июл 25, 2009 11:07:06 ]
Заголовок сообщения: 

мож контакты?)

Автор:  RVL [ Вс июл 26, 2009 00:04:51 ]
Заголовок сообщения: 

BCluster писал(а):
мож контакты?)

ПРимерно 50% команд воспринимается нормально.

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/