IPB

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V  < 1 2 3 4 >  
Ответить в данную темуНачать новую тему
> Прерывания в МК., Нужно ли их бояться?
Stanislav_GS
сообщение 1.7.2010, 23:58
Сообщение #41


Активный участник
***

Группа: Пользователи
Сообщений: 2220
Регистрация: 26.5.2010
Из: Московская обл.
Пользователь №: 165



Цитата(Огурцов @ 2.7.2010, 0:52) *
Ок. Дано: atmega о шестнадцати мегагерцах. Требуется: в цикле 62.5кГц произвести некоторые расчеты (для управления ШД вычислить текущее значение счетчиков двух таймеров - зависимость sin/cos с учетом предыдущего значения и экспоненциального изменения тока в обмотках с известной индуктивностью, сопротивлением и напряжением), получать команды и отправлять статус на 500 кбод, обрабатывать два концевика и индекс с защитой от дребезга. Хотя бы. Поучите ?
Поясните, зачем здесь ващще чего-нибудь опрашивать (или прерывать)?  pardon.gif
Считайте себе на здоровье и отправляйте. wink.gif

Если серьёзно - поставьте задачу как-нибудь так, чтобы её можно было понять по-человечески.Она относится, как я понял, к классу реал-тайи задач.
Перейти в начало страницы
 
+Цитировать сообщение
Прохожий
сообщение 2.7.2010, 0:01
Сообщение #42


сундук
***

Группа: Пользователи
Сообщений: 4043
Регистрация: 21.11.2009
Из: Ростов-на Дону
Пользователь №: 15



Цитата(Огурцов @ 2.7.2010, 1:52) *
Ок. Дано: atmega о шестнадцати мегагерцах. Требуется: в цикле 62.5кГц произвести некоторые расчеты (для управления ШД вычислить текущее значение счетчиков двух таймеров - зависимость sin/cos с учетом предыдущего значения и экспоненциального изменения тока в обмотках с известной индуктивностью, сопротивлением и напряжением), получать команды и отправлять статус на 500 кбод, обрабатывать два концевика и индекс с защитой от дребезга. Хотя бы. Поучите ?

Во всем этом деле мне не нравится ATMega.
И задачу необходимо переформулировать.
Так, как она исходила от заказчика.
Потому, как цикл с частотой 62.5 кГц лично мне кажется излишним.
Учить никого не собираюсь, люди здесь все, в основном, взрослые...
Перейти в начало страницы
 
+Цитировать сообщение
Stanislav_GS
сообщение 2.7.2010, 0:05
Сообщение #43


Активный участник
***

Группа: Пользователи
Сообщений: 2220
Регистрация: 26.5.2010
Из: Московская обл.
Пользователь №: 165



Цитата(Прохожий @ 2.7.2010, 1:01) *
Во всем этом деле мне не нравится ATMega.
И задачу необходимо переформулировать.
Нуда.
256 тактов на цикл обслуживания - чересчур крутой запрос.
Впору подумать о DSP, или, на худой конец, об относительно шустром АРМе.
Перейти в начало страницы
 
+Цитировать сообщение
Прохожий
сообщение 2.7.2010, 0:06
Сообщение #44


сундук
***

Группа: Пользователи
Сообщений: 4043
Регистрация: 21.11.2009
Из: Ростов-на Дону
Пользователь №: 15



Цитата(Огурцов @ 2.7.2010, 1:58) *
Давайте-ка для начала растактовочку на обработку прерываний, их в нашей задачке три четыре - таймер, отправка, прием и "нефиг больше отправлять".

В принципе, обойтись без прерываний здесь можно.
Я сам занимался подобным в свое время.
У старых PIC-ов прерываний не было вообще.
В настоящий момент все это лучше делать на более мощном и дешевом МК, снабженным всем необходимым.
Перейти в начало страницы
 
+Цитировать сообщение
Stanislav_GS
сообщение 2.7.2010, 0:08
Сообщение #45


Активный участник
***

Группа: Пользователи
Сообщений: 2220
Регистрация: 26.5.2010
Из: Московская обл.
Пользователь №: 165



Цитата(Огурцов @ 2.7.2010, 0:58) *
Давайте-ка для начала растактовочку на обработку прерываний, их в нашей задачке три четыре - таймер, отправка, прием и "нефиг больше отправлять".
Что есть "растактовочка"?
Может, даташит сперва освоить?
Перейти в начало страницы
 
+Цитировать сообщение
Stanislav_GS
сообщение 2.7.2010, 0:09
Сообщение #46


Активный участник
***

Группа: Пользователи
Сообщений: 2220
Регистрация: 26.5.2010
Из: Московская обл.
Пользователь №: 165



Цитата(Прохожий @ 2.7.2010, 1:06) *
В настоящий момент все это лучше делать на более мощном и дешевом МК, снабженным всем необходимым.
smile.gif
Щаз АРМы, вроде, подешевле ПИКов и АВРок толкают. smile.gif
Перейти в начало страницы
 
+Цитировать сообщение
Stanislav_GS
сообщение 2.7.2010, 0:15
Сообщение #47


Активный участник
***

Группа: Пользователи
Сообщений: 2220
Регистрация: 26.5.2010
Из: Московская обл.
Пользователь №: 165



Цитата(Огурцов @ 2.7.2010, 1:08) *
Опрашивать нужно хотя бы для того, чтобы со всей дури не въехать фрезером в станину. Прерывать (это какбэ по-вашему подходу) будут события UARTа и таймера. Таймер молотит с частотой 62.5кГц, меньше нельзя, ибо микрошаг, в виду большого их количества в единицу времени, требует короткого цикла управления током обмоток.
Все равно ничего не понятно. :(
Давайте попробуем определиться сперва, что есть причина, и что должно быть её следствием?
Перейти в начало страницы
 
+Цитировать сообщение
Stanislav_GS
сообщение 2.7.2010, 0:17
Сообщение #48


Активный участник
***

Группа: Пользователи
Сообщений: 2220
Регистрация: 26.5.2010
Из: Московская обл.
Пользователь №: 165



Цитата(Огурцов @ 2.7.2010, 1:11) *
Вот давайте не будем увиливать. Обосрав мое решение тут же требуете себе шустрого АРМа. В газенваген (с)
Думаю, что у Вас пока что нет решения.
А есть только представления о нём.
В противном случае, поясните, как Вы определяете период цикла 62,5мкс? Ждёте флажка таймера? wink.gif
Перейти в начало страницы
 
+Цитировать сообщение
Stanislav_GS
сообщение 2.7.2010, 0:19
Сообщение #49


Активный участник
***

Группа: Пользователи
Сообщений: 2220
Регистрация: 26.5.2010
Из: Московская обл.
Пользователь №: 165



Цитата(Огурцов @ 2.7.2010, 1:16) *
Количество тактов на вход/выход в/из прерывание и сохранение/восстановление контекста, в данном случае.
Какого контекста, в данном случае?

Вы вообще понимаете, что есть "контекст", и зачем его непременно нужно сохранять?

Цитата(Огурцов @ 2.7.2010, 1:16) *
...Даташит чего ? AVR ? А может вам сначала его освоить ? Ибо я и без даташита скажу, (ни)сколько прерываний вы успеете обработать за 256 тактов.
Ну, так скажите, зачем выпендриваться.
Даташиты на атмеги я позабыл уже - давно с ними не работал.

Сообщение отредактировал Stanislav_GS - 2.7.2010, 0:22
Перейти в начало страницы
 
+Цитировать сообщение
Прохожий
сообщение 2.7.2010, 0:19
Сообщение #50


сундук
***

Группа: Пользователи
Сообщений: 4043
Регистрация: 21.11.2009
Из: Ростов-на Дону
Пользователь №: 15



Цитата(Stanislav_GS @ 2.7.2010, 2:09) *
smile.gif
Щаз АРМы, вроде, подешевле ПИКов и АВРок толкают. smile.gif

PIC-ов так просто не протолкнешь.
Я было решил сделать проект на STM32F103, но быстро одумался.
В результате PIC24FJ128GA108.
Несмотря на все свои 72 МГц, STM32F103 находится на одном уровне с 16 МГц PIC-ом с 16 "разрядным" мотором.
Перейти в начало страницы
 
+Цитировать сообщение
Stanislav_GS
сообщение 2.7.2010, 0:20
Сообщение #51


Активный участник
***

Группа: Пользователи
Сообщений: 2220
Регистрация: 26.5.2010
Из: Московская обл.
Пользователь №: 165



Цитата(Огурцов @ 2.7.2010, 1:19) *
Тогда освойте сначала даташит (с)
Вьюноша, не хамите.
Бо здесь не электроникс. wink.gif
Перейти в начало страницы
 
+Цитировать сообщение
Stanislav_GS
сообщение 2.7.2010, 0:27
Сообщение #52


Активный участник
***

Группа: Пользователи
Сообщений: 2220
Регистрация: 26.5.2010
Из: Московская обл.
Пользователь №: 165



Цитата(Огурцов @ 2.7.2010, 1:24) *
А нахрена мне таймер? Пишу еще раз, по слогам: рас-так-тов-ка (с)
Такты, сталыть, считаете?
Чессно говоря, я сперва так и подумал. Но написать не решился. smile.gif


Цитата(Огурцов @ 2.7.2010, 1:24) *
А это лишь симметричный ответ. Но предупреждаю, в запасе есть еще и ассиметричный ;
Лана, проехали.
Мордобой на шараге - это уж чересчур.
На элхе для этого либерасты имеются. smile.gif
Перейти в начало страницы
 
+Цитировать сообщение
Stanislav_GS
сообщение 2.7.2010, 0:38
Сообщение #53


Активный участник
***

Группа: Пользователи
Сообщений: 2220
Регистрация: 26.5.2010
Из: Московская обл.
Пользователь №: 165



Цитата(Прохожий @ 2.7.2010, 1:19) *
Я было решил сделать проект на STM32F103, но быстро одумался.
В результате PIC24FJ128GA108.
Проект определяет железо.
Понимайте как хотите. smile.gif


Цитата(Прохожий @ 2.7.2010, 1:19) *
...Несмотря на все свои 72 МГц, STM32F103 находится на одном уровне с 16 МГц PIC-ом с 16 "разрядным" мотором.
Давно не имел делов с "универсальными" МК, но поверить, что 10-долларовый современный АРМ проиграет в чём-то 10-долларовому ПИКу, не могу. :(

Цитата(Огурцов @ 2.7.2010, 1:31) *
Тогда арма может и хватит
Значит, задача Ваша относится к разряду "простейших", как я и написал в первом своём посте.
Поверьте, я не думаю о ней уничижительно. Но здесь как раз тот случай "утюга", где есть цепь циклически повторяемой последовательности, и, возможно, только одно по-настоящему внешнее событие (запрос UART).
Часто так неполучаецца.
Мне, например, при реализации DSP-шных задач требуется поддерживать множественные потоки входных и выходных данных, протоколы КАН и УАРТ, управляющие воздействия. Без прервыаний и ПДП была бы просто жопа - никакое ядро несправицца. 
Перейти в начало страницы
 
+Цитировать сообщение
Stanislav_GS
сообщение 2.7.2010, 1:07
Сообщение #54


Активный участник
***

Группа: Пользователи
Сообщений: 2220
Регистрация: 26.5.2010
Из: Московская обл.
Пользователь №: 165



2 Огурцов.
Повторюсь, но Ваша задача относится к классу жёстко детерминированных. То есть таких, для которых существуют "хорошие" алгоритмы, реализуемые без частой проверки условий (иногда их удаётся слабать вообще без команд условного перехода - ветвления!).
Но это - редкость.
Мне самому приходилось делать такие вещи. Но прерывания (от АЦП) всё-таки использовались, несмотря неа некоторае накладные расходы.
Без них алгоритм был бы трудно реализуем.
Про "контекст".
Зарезервируйте несколько регистров под обработчики прерываний, и будет вам щастя. wink.gif

Цитата(Огурцов @ 2.7.2010, 1:56) *
Она была бы простейшая, если б меги выпускались на 160МГц. Тогда я бы сделал абсолютно тупо, именно так, как вы и хотели.
Оно и есть тупо, так как захотели Вы, или, более точно, как того требует Ваша задача.

Цитата(Огурцов @ 2.7.2010, 1:56) *
Да чего там, ни одного. У нас же буфер в приемнике, и входящий байт вполне может подождать.
В том-то и дело.
Один в Вашей задаче можно и подождать.
А если не один, тогда как?

Цитата(Огурцов @ 2.7.2010, 1:56) *
...Вы сути так и не уловили...
Абижають, начальник.  biggrin.gif
Цитата(Огурцов @ 2.7.2010, 1:56) *
...Я говорил про необходимость минимизации затрат на прерывания.
Ещё раз: такая необходимость существует только в Вашем воображении.
Современные микроконтроллеры эту необходимость учитывают. И компенсируют  аппаратной поддержкой и тактовой частотой.
А чем Вам АРМ не нравицца? Уверен, что найду дешевле, чем ваша мега. wink.gif


Цитата(Огурцов @ 2.7.2010, 1:56) *
...Очень хорошо, когда их нет совсем - появляется возможность построения настоящей, даже идеальной реал-тайм системы, с мгновенным откликом .
Чушь.
Реал-тайм системы с "мгновенным откликом" без прерываний вообще немыслимы.
Только про утюги ненадо...

Цитата(Огурцов @ 2.7.2010, 1:56) *
...Специально для вас повторюсь:



"Sigma выпустила многоядерный мультимедийный процессор для потребительской электроники" Центральное процессорное ядро системы работает на частоте 667 МГц (производительность 1330 DMIPS). Второй процессор обрабатывает прерывания реального времени и высвобождает центральный процессор от задач обмена по сети и вывода графической информации. Третье ядро управляет функциями защиты данных. ->
Выделил для Вас. smile.gif

ЗЫ. Вы хотя бы в общих чертах представляете, зачем этот многоядерный процессор вообще нужен?
Перейти в начало страницы
 
+Цитировать сообщение
Прохожий
сообщение 2.7.2010, 1:09
Сообщение #55


сундук
***

Группа: Пользователи
Сообщений: 4043
Регистрация: 21.11.2009
Из: Ростов-на Дону
Пользователь №: 15



Цитата(Огурцов @ 2.7.2010, 2:27) *
А что с ним не так ? Я как раз на его брата, STM32F107 запал.

Да, я уже понял...
Вкратце причин было несколько.
1. Недоступность нормальных средств разработки. GNU средства не в счет.
2. Реальная производительность не намного выше, а то и ниже, чем у PIC24.
3. Большое число огрехов именно в исполнении ARM-ов фирмой ST.
4. Еще много чего по-мелочи...
Перейти в начало страницы
 
+Цитировать сообщение
Stanislav_GS
сообщение 2.7.2010, 1:17
Сообщение #56


Активный участник
***

Группа: Пользователи
Сообщений: 2220
Регистрация: 26.5.2010
Из: Московская обл.
Пользователь №: 165



Цитата(Прохожий @ 2.7.2010, 2:09) *
Вкратце причин было несколько.
Я своих на NXP подсадил.
Начальство, правда, противилось: спрыгнуть с PowerPC на ARM - некошерно, типа.
Потом зделали экземпляр, померяли письками...
АРМ оказался быстрее, при том, что в 3 раза дешевле. При энергопотреблении в 4-5 раз меньше!
Начинали с LPC3180, а щаз будем выпускать продукцию на изрядно обезглюченном LPC3250.
Нам нужна плывучка, и MMU - довольно тяжёлая ОС реального времени и математические расчёты, не считая поддержки интерфейсов.
Уникально мало жрёт, а в партии 1000+ штук цену обещали 7-8 долл.

Сам больше DSP занимаюсь - ADSP-BF5xx и ADSP-2146x.
Там без DMA и прерывний - никуда. Разве что утюг...

ЗЫ. Была ошибка в наименованиях - исправил.

Сообщение отредактировал Stanislav_GS - 2.7.2010, 1:30
Перейти в начало страницы
 
+Цитировать сообщение
Stanislav_GS
сообщение 2.7.2010, 3:01
Сообщение #57


Активный участник
***

Группа: Пользователи
Сообщений: 2220
Регистрация: 26.5.2010
Из: Московская обл.
Пользователь №: 165



Цитата(Огурцов @ 2.7.2010, 2:50) *
Как бы вам объяснить. 500кбод, если использовать прерывания, сложат avr как карточный домик. В отличие от опроса с частотой 62.5кГц.
Чушь собачья.
Частота прихода байтов по UART при скорости в 500 кбод составит 45 455 посылок в секунду. По времени это ровно 22 микросекунды.
Допустим, нам по УАРТу приходит сообщение длиной в 3 байта. Довольно редко, но приходит.
Интересно было бы узнать, как вы собираетесь его обрабатывать в цикле 62,5 мкс. lol.gif

Цитата(Огурцов @ 2.7.2010, 2:50) *
Нет, и еще раз нет. Иначе бы не изобретали многоядерники. Поймите, что площадь ядра во много раз меньше общей площади кристалла (какбэ памяти, в основном), поэтому увеличение количества ядер на себестоимость не влияет. А вот частоту особо не разгонишь - мешают технологии и потребление.
Молодой человек, вы совершенно не понимаете, для чего делают многоядерники.
Когда оторвётесь от уровня утюгов, тогда и поговорим.


Цитата(Огурцов @ 2.7.2010, 2:50) *
...Слабо.
Вьюноша, вы слишком самонадеяны.

Цитата(Огурцов @ 2.7.2010, 2:50) *
...Нужны 3 канала PWM c дедтаймом (для BLDC), CAN, ADC, DAC, компараторы, датчик температуры, маленький корпус с большим шагом пинов. В идеале - замена atmega32m1
Та-ак, интересно.
Сталыть, Вы собираетесь управиться с этим хозяйством в цикле из 256 тактов на атмеге 32м1, верно? lol.gif good.gif
АРМ, способный к подобным подвигам, конечно, есть, но подожду с ответом. wink.gif

Цитата(Огурцов @ 2.7.2010, 2:50) *
Не знаю, про что это.
Про Ваши прожэкты.


Цитата(Огурцов @ 2.7.2010, 2:50) *
...Именно что - основное ядро освобождено от прерываний. А если еще немного подумать, то критичные прерывания так же можно оформить отдельным потоком с выделенным ядром на каждое.
Ещё раз - бред.
Вы утверждали, что прерывания не нужны вообще.
Носом ткнуть, или сами найдёте?
Преимущества и недостатки многоядерных систем, уж извините, на Вашем уровне обсуждать я не способен.
Перейти в начало страницы
 
+Цитировать сообщение
orthodox
сообщение 2.7.2010, 3:02
Сообщение #58


ДИКТАТОР
Иконка группы

Группа: Мод
Сообщений: 23809
Регистрация: 20.11.2009
Из: Житомир
Пользователь №: 3



Господа профессионалы, не могли бы учитывать наличие на форуме начинающих?
Понял почти все, но с трудом... smile.gif
техника более менее понятна, а вопрос накала страстей остался непонятым... ну, ладно, эмоции к теме не относятся...
у меня, еще предначинающего, вопрос - в каких процессорах сколько тактов идет на вход и выход из прерывания,
со всей обслугой, но не считая собственно обработчика... ?
И второй - постоянная это величина или зависит от того, считал ли процессор в основном цикле или находился где-то
в третьей по счету вложенной подпрограмме...
И третий, последний: не получается ли так, что когда глубоко залез в подпрограммы, то для прерывания ресурсов не останется?
ну, к примеру, на ЯВУ , наверное, не всегда можно учесть это?
Перейти в начало страницы
 
+Цитировать сообщение
Stanislav_GS
сообщение 2.7.2010, 3:30
Сообщение #59


Активный участник
***

Группа: Пользователи
Сообщений: 2220
Регистрация: 26.5.2010
Из: Московская обл.
Пользователь №: 165



Цитата(orthodox @ 2.7.2010, 4:02) *
у меня, еще предначинающего, вопрос - в каких процессорах сколько тактов идет на вход и выход из прерывания,
со всей обслугой, но не считая собственно обработчика... ?
У разных процов по разному.
Общее для всех - при поступлении запроса на разрешённое прерывание, сохраняется содержимое программного счётчика для возврата в основную программу. Затем осуществляется переход на адрес обработчика. При выходе из прерывания содержимое программного счётчика восстанавливается.
Вся обслуга делается уже мануально. У некоторых процов можно переключить банки регистров (самый быстрый способ), для иных - использовать выделенные регистры (тоже быстро), в остальных - сохранять какие-то регистры в стеке.
Атмега имеет накладных расходов: 4 такта на вход в прерывание, и 4 такта на выход, если склероз не изменяет.
Время реакции зависит от текущей выполняемой операции и состояния процессора.

Цитата(orthodox @ 2.7.2010, 4:02) *
...И третий, последний: не получается ли так, что когда глубоко залез в подпрограммы, то для прерывания ресурсов не останется?
Если прерывания разрешены, глубина нахождения в подпрограмме не влияет на вызов прерывания (за редким исключением, типа ADSP-21xx, имеющих АППАРАТНЫЕ стеки небольшой глубины, но ах..но шустрые).
У процессора Блэкфин тоже есть микро-аппаратный стек в виде регистра возврата, куда переписывается программный счётчик. Это несколько экономит время реакции на прерывания, но у современных процов с большими мегагерцами оно, в основном, определяется глубиной программного конвейера (при входе в обработчик и выходе из него, его чистят и заполняют потом по новой). Мегагерцы, всё же, берут своё.
У ххх86 проца, равно как и атмеги, содержимое PC кладётся в память (стек).

Цитата(orthodox @ 2.7.2010, 4:02) *
...ну, к примеру, на ЯВУ , наверное, не всегда можно учесть это?
ЯВУ здесь не при чём.
Организация управления процессами (в т.ч., и прерываниями) лежит целиком на программистах (особенно твердолобых, и не признающих ОС). smile.gif
ЯВУ только предоставляют удобные средства для его воплощения.
Но я всё же предпочитаю не использовать стандартные "обёртки", а делать обработчики прерываний на нижнем уровне (ассемблер).
Именно ради времени выполнения.
Использование РТОС избавляет от рутины и уменьшает вероятность ошибок. В ней уже всё какбы сделано за тебя, однако, есть при этом и накладные расходы, иногда неприемлемые.
Перейти в начало страницы
 
+Цитировать сообщение
Гость_MrYuran_*
сообщение 2.7.2010, 6:43
Сообщение #60





Гости






Цитата(Прохожий @ 2.7.2010, 3:09) *
1. Недоступность нормальных средств разработки. GNU средства не в счет.

Как раз-таки GNU средства - единственно нормальные.
И абсолютно универсальные.
AVR, MSP, ARM - практически один и тот же инструмент, разница в нюансах (зависит от платформы)
Плюс, широчайший выбор бесплатных и очень качественных IDE.
В отличие от того же ИАРа, на который стороннюю IDE можно только за уши пришить, и то кое-как, или MSVS, к которой мой коллега всё-таки прицепил GСС, но тоже через одно место.
Перейти в начало страницы
 
+Цитировать сообщение

4 страниц V  < 1 2 3 4 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 29.3.2024, 7:21