Прерывания в МК., Нужно ли их бояться? |
Здравствуйте, гость ( Вход | Регистрация )
Прерывания в МК., Нужно ли их бояться? |
18.6.2010, 19:59
Сообщение
#1
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
Собственно все.
Прошу высказываться. Особенно хотелось бы заслушать уважаемого Harbinger-а. Про автоматы, работающие по прерываниям. ПМСМ, это наиболее правильная методика. |
|
|
18.6.2010, 20:27
Сообщение
#2
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
|
|
|
19.6.2010, 0:18
Сообщение
#3
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
Которое слово ? Есть общее ОЗУ и флеш, и несколько наборов регистров, в т.ч. (столько же) PC и SP. Все заморочки с параллельной работой (такие, как одновременный доступ к одной ячейке) решаются легко, в виду того, что все ОЗУ на том же кристалле и размер его измеряется в килобайтах, в лучшем случае, а не в гигабайтах. В конце концов для этого можно ограниченный блок выделить, а не использовать все ОЗУ. В общем, идея ясна. К каждому порту свой интеллект. И мэйл бокс в придачу. Но мир-то идет по иному пути... Всякие там контроллеры прерываний. В Вашем любимом AVR - даже векторный. Уже и DMA поставили. Считаю важным обсудить параллельную работу различных алгоритмов на принципиально последовательном девайсе. |
|
|
19.6.2010, 12:39
Сообщение
#4
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
Про автоматы, работающие по прерываниям. А она вынужденная.ПМСМ, это наиболее правильная методика. Просто на практике имею дело не с МК самими по себе, а обвешанными всевозможной периферией. Приёмопередатчики, модемы и т.п. Они живут своей жизнью, сообщая о своём состоянии изредка. |
|
|
19.6.2010, 16:36
Сообщение
#5
|
|
ДИКТАТОР Группа: Мод Сообщений: 23809 Регистрация: 20.11.2009 Из: Житомир Пользователь №: 3 |
Нет. Но _вместо_ прерываний предпочел бы иметь несколько ядер(алу) и работать по опросу. Как насчет иметь неколько камней отдельно? И каждый обслуживает свою критичную область, если она критична, конечно. То есть уже можно не ждать, а доставить пару мелочей 50-центовых по потребности... |
|
|
Гость_MrYuran_* |
20.6.2010, 10:42
Сообщение
#6
|
Гости |
Которое слово ? Есть общее ОЗУ и флеш, и несколько наборов регистров, в т.ч. (столько же) PC и SP. Все заморочки с параллельной работой (такие, как одновременный доступ к одной ячейке) решаются легко, в виду того, что все ОЗУ на том же кристалле и размер его измеряется в килобайтах, в лучшем случае, а не в гигабайтах. В конце концов для этого можно ограниченный блок выделить, а не использовать все ОЗУ. Дык, есть же - Proreller Чудо о восьми головах 7.99 в розницу, 7.59 - от 20шт. фришиппинг от 100$ Цитата Features: * Model Number: P8X32A-Q44 * Processors (cogs): Eight * Architecture: 32-bits * System Clock Speed: DC to 80 MHz * Global RAM/ROM: 64 K bytes; 32 K RAM / 32 K ROM - маловато будет :( * Cog RAM: 512 x 32 bits each - а вот это куул * I/O Pins: 32 (simultaneously addressable by all eight cogs) * Current Source/Sink per I/O: 40 mA * Clock Modes: (a) External crystal 4 -8 MHz (16 x PLL) (b) Internal oscillator ~12 MHz or ~20 kHz © Direct drive * Package Type: 44-pin QFP На замену атмеловским мегам - вполне. Вот если бы расширяли в сторону увеличения всего, кроме цены, было бы очень ничего. Я вот что-то не понимаю сути темы. Совсем отказаться от прерываний нельзя. Да и зачем? Чем они так помешали? |
|
|
20.6.2010, 23:20
Сообщение
#7
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
Прерывания, как и организация многозадачности на одном ядре жрет очень много времени (и вычислительного ресурса, если часто) на переключение контекстов. В режиме опроса задержки минимальны, а так же можно орагнизовать точные временные процессы. Вы тут не совсем правы. Если подходить традиционно, ОС, семафоры и прочая, то таки да. Но есть и иные подходы... Без всех этих не нужных никому затрат. |
|
|
20.6.2010, 23:23
Сообщение
#8
|
|
ДИКТАТОР Группа: Мод Сообщений: 23809 Регистрация: 20.11.2009 Из: Житомир Пользователь №: 3 |
Прерывания, как и организация многозадачности на одном ядре жрет очень много времени (и вычислительного ресурса, если часто) на переключение контекстов. В режиме опроса задержки минимальны, а так же можно орагнизовать точные временные процессы. Смотря по задаче, у кого какая. Харбиндеру вон потребление надо минимизировать, и это понятно. А пожарники хоть тоже события ждут иногда больше, чем срок службы прибора - но на опросах все же работают...Из соображений надежности, что ли - там еще постоянно самотестирование, нормально ли опрашивается оно все... |
|
|
20.6.2010, 23:47
Сообщение
#9
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
Смотря по задаче, у кого какая. Харбиндеру вон потребление надо минимизировать, и это понятно. А пожарники хоть тоже события ждут иногда больше, чем срок службы прибора - но на опросах все же работают...Из соображений надежности, что ли - там еще постоянно самотестирование, нормально ли опрашивается оно все... Прерывания, в основном, используются, когда надо минимизировать скорость реакции на событие. К примеру. Прием телеграммы от управляющей машины. Пропустить нельзя. Ни одного бита. А в то же время, управление процессами, возложенными на МК никто не отменяет. Здесь без прерываний от приемника USART практически никак... |
|
|
21.6.2010, 12:44
Сообщение
#10
|
|
ДИКТАТОР Группа: Мод Сообщений: 23809 Регистрация: 20.11.2009 Из: Житомир Пользователь №: 3 |
Прерывания, в основном, используются, когда надо минимизировать скорость реакции на событие. К примеру. Прием телеграммы от управляющей машины. Пропустить нельзя. Ни одного бита. А в то же время, управление процессами, возложенными на МК никто не отменяет. Здесь без прерываний от приемника USART практически никак... Примерно так. Копия из очень старого журнала Извините за оффтоп... |
|
|
Гость_MrYuran_* |
21.6.2010, 13:19
Сообщение
#11
|
Гости |
Примерно так. Копия из очень старого журнала Извините за оффтоп... Не знаю, какие там проблемы с ресурсами и издержками, у меня среднестатистическая программа большую часть времени мается бездельем в основном цикле. При том что задач много, разнообразных, некоторые реалтайм, даже несколько раз в секунду надо сосчитать логарифм. И вот как раз распараллеливание алгоритма с помощью прерываний вместо тупого ожидания, когда же там зарядится ёмкость или пройдёт импульс, существенно освободило процессор и уменьшило задержки и время отклика. Ибо по прерываниям выполняются неотложные действия, а между ними неторопливо разгребается рутина. Или я вообще суть темы не понял? Вообще, чтобы рассуждать об издержках, допустимых, излишних или малых, надо иметь хотя бы условия задачи. Без этого все рассуждения просто ни о чём. Какая мне разница, сколько времени уйдёт на сохранение контекста, если процессор успевает отработать событие? И опять же, вопрос: где издержки больше - на прерывание раз в секунду от УАРТа или на опрос его флагов с частотой 100кГц? |
|
|
Гость_MrYuran_* |
21.6.2010, 14:26
Сообщение
#12
|
Гости |
|
|
|
21.6.2010, 16:28
Сообщение
#13
|
|
ДИКТАТОР Группа: Мод Сообщений: 23809 Регистрация: 20.11.2009 Из: Житомир Пользователь №: 3 |
|
|
|
21.6.2010, 18:06
Сообщение
#14
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
Согласен. на этой оптимистичной ноте можно и... Хорошо, давайте задачу. Вот типовая, поэтому несколько искусственная. Имеется источник питания, управляемый ШИМ каналом. ЖКИ индикатор в две строки, где пользователь может задать выходное напряжение, ток защиты, тип защиты и еще ряд параметров. Так же он может посмотреть выходное напряжение, ток нагрузки и может чего еще. Для этого есть кнопки. Их количество каждый определяет для себя сам. Тут же имеется связь с PC или PLC по RS485 полудуплекс. |
|
|
21.6.2010, 20:44
Сообщение
#15
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
Элементарно. Берем первую попашуюся картинку http://sharaga.org/index.php?act=attach&am...ost&id=1179 и видим...процессоров, минимум, два. В данном конкретном случае я бы осмелился воткнуть три (или даже четыре). Ибо. 1 - пфц, 2 - мост, (3 - выпрямитель), 4 - юзерский интерфейс, в т.ч. с PC + бизнес-логика (ака характеристика источника, типо наклон U vs I, как для сварочника). Первые три - рубят жестко, без каких-либо прерываний, увязаны через кан и мэйл-боксы путем опроса, четвертый - весь на прерываниях, ибо мало за что отвечает и никуда не спешит. А вот в этой конструкции все с точностью до наоборот. Прерывания там, где надо спешить. Причем, где надо особо спешить, программы обслуживания написаны на ASM с применением DSP ядра. В остальном Вы правы - два процессора. Хотя в простейших случаях можно обойтись и одним... |
|
|
21.6.2010, 21:08
Сообщение
#16
|
|
ДИКТАТОР Группа: Мод Сообщений: 23809 Регистрация: 20.11.2009 Из: Житомир Пользователь №: 3 |
Элементарно. Берем первую попашуюся картинку http://sharaga.org/index.php?act=attach&am...ost&id=1179 и видим...процессоров, минимум, два. В данном конкретном случае я бы осмелился воткнуть три (или даже четыре). Ибо. 1 - пфц, 2 - мост, (3 - выпрямитель), 4 - юзерский интерфейс, в т.ч. с PC + бизнес-логика (ака характеристика источника, типо наклон U vs I, как для сварочника). Первые три - рубят жестко, без каких-либо прерываний, увязаны через кан и мэйл-боксы путем опроса, четвертый - весь на прерываниях, ибо мало за что отвечает и никуда не спешит. Во! А я говорил, а Вы - многоядерный да многоядерный... Хорошо, давайте задачу. Вот типовая, поэтому несколько искусственная. Имеется источник питания, управляемый ШИМ каналом. ЖКИ индикатор в две строки, где пользователь может задать выходное напряжение, ток защиты, тип защиты и еще ряд параметров. Так же он может посмотреть выходное напряжение, ток нагрузки и может чего еще. Для этого есть кнопки. Их количество каждый определяет для себя сам. Тут же имеется связь с PC или PLC по RS485 полудуплекс. На шим развес, на защиты - развес, остальное - процессором. разве что параметры задать , лишь бы не путался в ногах при работе на полной скорости... Не, то есть статью я сохранил, буду изучать и разбираться конечно... |
|
|
21.6.2010, 21:19
Сообщение
#17
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
Не, то есть статью я сохранил, буду изучать и разбираться конечно... Это только завлекаловка. Там еще исходники имеются, схемы и плата, а так же два аппноута. Если хотите - сброшу отдельно. На шим развес, на защиты - развес, остальное - процессором. разве что параметры задать , лишь бы не путался в ногах при работе на полной скорости... В настоящий момент так и поступлено для многофазной системы. Но при таком подходе полная скорость не нужна... МК в данном случае - регистратор. Мы же решаем гипотетическую задачу, где МК или их группа - это все. |
|
|
21.6.2010, 21:48
Сообщение
#18
|
|
ДИКТАТОР Группа: Мод Сообщений: 23809 Регистрация: 20.11.2009 Из: Житомир Пользователь №: 3 |
Это только завлекаловка. Там еще исходники имеются, схемы и плата, а так же два аппноута. Если хотите - сброшу отдельно. Да Цитата МК в данном случае - регистратор. Мы же решаем гипотетическую задачу, где МК или их группа - это все. Да, пока что упирается в то, что и так все работает. Сделать на одной микросхеме весь блок - не более чем забавно. При хорошей трассировке на 2 слоя и так маломощной части не видать за радиаторами... |
|
|
21.6.2010, 21:57
Сообщение
#19
|
|
ДИКТАТОР Группа: Мод Сообщений: 23809 Регистрация: 20.11.2009 Из: Житомир Пользователь №: 3 |
|
|
|
21.6.2010, 22:29
Сообщение
#20
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
Да WinRAR38_081007_21_49.rar ( 4,65 мегабайт ) Кол-во скачиваний: 15 Да, пока что упирается в то, что и так все работает. Сделать на одной микросхеме весь блок - не более чем забавно. При хорошей трассировке на 2 слоя и так маломощной части не видать за радиаторами... Я с этим согласен. Более того, пока использую МК только в режиме регистратора. Но это только пример, как надо использовать прерывания. И поскольку нам всем ближе SMPS, то и пример оттуда. Ну да, ну да. Только если есть десятикратный запас по производительности. Я Вам говорю. Бросайте Вы эти ATMEG-и. И все будет... |
|
|
Текстовая версия | Сейчас: 29.3.2024, 7:30 |