реклама на сайте
подробности

 
 
> Нужны ли вложенные прерывания?
Altemir
сообщение Jul 31 2009, 21:45
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686



Уважаемые, подскажите, пожалуйста.

Проц LPC2214. Есть задача по прерыванию таймера сразу же производить чтение по I2C с девайса. Алгоритм работы по I2C сделан тоже на прерываниях. Необходима синхронность чтения данных с таймером. Следует ли в данном случае использовать вложенные прерывания или можно каким-то образом обойти? Переделать работу с I2C без прерываний? Объём записывемых/считываемых данных из девайса не более 20Байт.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IgorMarx
сообщение Aug 1 2009, 12:44
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 5-10-05
Из: Зеленоград
Пользователь №: 9 268



Ответ таков: если вы не планируете выйти из обработчика таймера, пока не закончите обмен по шине I2C, то вам действительно будут нужны вложенные прерывания, но как раз не для I2C, а для остальной периферии. Что касается I2C, то я бы прерывания делать не стал без явной необходимости - архитектурно программный модуль I2C получается проще, надёжнее и портабельнее (т.е. этот модуль можно удобно использовать для других проектов), когда регистры опрашиваются в цикле. Но это при условии, что ядру в этот момент совсем делать нечего.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Aug 1 2009, 23:56
Сообщение #3


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(IgorMarx @ Aug 1 2009, 16:44) *
Что касается I2C, то я бы прерывания делать не стал без явной необходимости - архитектурно программный модуль I2C получается проще, надёжнее и портабельнее (т.е. этот модуль можно удобно использовать для других проектов), когда регистры опрашиваются в цикле. Но это при условии, что ядру в этот момент совсем делать нечего.
Ерунду Вы пишете полную...
Если Вашему процу делать нечего настолько что Вы готовы сидеть в цикле и опрашивать - Вы выбрали не тот проц...
I2C это самый типичный пример для interrupt driven transfer...
Go to the top of the page
 
+Quote Post
IgorMarx
сообщение Aug 7 2009, 17:03
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 5-10-05
Из: Зеленоград
Пользователь №: 9 268



Цитата(singlskv @ Aug 2 2009, 03:56) *
Ерунду Вы пишете полную...
Если Вашему процу делать нечего настолько что Вы готовы сидеть в цикле и опрашивать - Вы выбрали не тот проц...
I2C это самый типичный пример для interrupt driven transfer...


Я 100% знал, что кто-нибудь придерётся и написал - "без явной необходимости".

Цитата(Altemir @ Aug 3 2009, 15:00) *
синхронизация времени должна была проходить ВНУТРИ прерывания, чтобы ни одна из процедур основного кода не получила расходящиеся значения времени.


А теперь вопрос - чем ещё заниматься в прерывании кроме как ждать битов статуса, если вот так вот задача поставлена, а? Повторяю - для остальной периферии возможно потребуются вложенные прерывания.

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

Сообщение отредактировал IgorMarx - Aug 7 2009, 17:12
Go to the top of the page
 
+Quote Post
singlskv
сообщение Aug 7 2009, 23:15
Сообщение #5


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(IgorMarx @ Aug 7 2009, 21:03) *
А теперь вопрос - чем ещё заниматься в прерывании кроме как ждать битов статуса, если вот так вот задача поставлена, а?
Вы вобще в курсе что I2C полностью статическая шина ? Если что будем сидеть в прерывании до конца ?
Поллинг в прерывании это вобще новое слово в программировании... то есть конечно допустим для некоторых интерфейсов(например
SPI в режиме мастера), но для I2C это просто бред...
И не удивительно что при таком подходе "вдруг" становятся нужными вложенные прерывания...
Цитата
Повторяю - для остальной периферии возможно потребуются вложенные прерывания.
smile.gif


Цитата(Dog Pawlowa @ Aug 7 2009, 23:19) *
Вы выбрали ..хм... не тот род занятий.
Спасибо конечно за помощь в выборе рода занятий,
но вот согласитесь ли Вы со мной поспорить на конкретном примере(то есть поспорить на конкретной реализации) ?
Цитата
I2C это самый типичный пример для включения в основной цикл.
Задачки разные бывают...
Сможете гарантировать передачу 6-8 байт за 1мс при скорости i2c ~100кбит
и обслуживании обмена в основном цикле ?(обмен между 2 процами)
При том что основной цикл считает плавучку с неадекватными временами реакции...



Цитата(IgorMarx @ Aug 8 2009, 00:22) *
А кто против прерываний? Да ради бога. Всё от задачи зависит. Просто приведу вам пример из свой практики, когда это не нужно. И процу действительно нечем заняться. Flashloader. Надеюсь, там знакомая. Я написал flashloader. В RAM загружается код, который шьёт flash и плюс EEPROM по шине 2IC. Попробуйте теперь меня убедить, зачем мне это делать не в цикле и что я не тот камень выбрал.

Я это не придумал, это реальный код, и вы бы поступили так же (почитали доку framework, где прерывания, мягко говоря, не предусмотрены) - сделали цикл. Если у кого-то не встречалась ситуация, когда этого делать не нужно, - может, просто опыта недостаточно?
Это все очень "своевременные" замечания, но топик таки называется "Вложенные прерывания" ....
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Aug 8 2009, 05:45
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(singlskv @ Aug 8 2009, 02:15) *
Спасибо конечно за помощь в выборе рода занятий,
но вот согласитесь ли Вы со мной поспорить на конкретном примере(то есть поспорить на конкретной реализации) ?
Задачки разные бывают...
Сможете гарантировать ...

Не за что.

Ну вот мы и пришли - Ваши задачи против моих задач. И что? Позовем третьего с другими задачами?
Просто не обобщайте, и будет консенсус. По крайней мере я соглашусь smile.gif

А возвращаясь с теме вложенности. Поразительно, 20-15 лет назад на 8080/8086 вложенность и приоритетность прерываний были естественным свойством системы. Убогость контроллеров, к счастью, уходящих сейчас, сделали это чем-то необычным.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 8 2009, 06:12
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Dog Pawlowa @ Aug 8 2009, 08:45) *
Поразительно, 20-15 лет назад на 8080/8086 вложенность и приоритетность прерываний были естественным свойством системы. Убогость контроллеров, к счастью, уходящих сейчас, сделали это чем-то необычным.

Не так - убогость средств программирования, убогость операционных систем, и в первую очередь убогость программистов делало 20 лет назад вложенность "полезной". Хрен в под тем-же DOS организуешь "многозадачность" и выживешь при дисковых операциях без вложенных прерываний. Лично пользовал в прошлом широко. Однако при сколь-нибудь нормальном подходе к делу, вложенность, как минммум, бесполелезна в абсолютно подавляющем числе случаев. Причины "возрождения" поддержки вложенности на данном этапе развития контроллеростроения очень простые - пусть будет до кучи - ресурсы есть. А уровень программирования, опять, зачастую на уровне плинтуса. Массовость, однако.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Step_ARM
сообщение Aug 10 2009, 04:02
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 11-07-08
Пользователь №: 38 870



Цитата(zltigo @ Aug 8 2009, 10:12) *
А уровень программирования, опять, зачастую на уровне плинтуса. Массовость, однако.

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

Но Ваша фраза об уровне меня заинтересовала. Как можно оценить уровень программирования?
Массовость??? Откуда она взялась???? У нас так много ВУЗов, которые готовят специалистов по программированию (в частности МК)????
Большинство из тех , кто здесь бывает и не бывает сами осваивали эту область.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 10 2009, 04:10
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Step_ARM @ Aug 10 2009, 07:02) *
Кто как хочет, тот так и двигает левой рукой(вариант -- правой)?

Понятно. Подход "радиогубителя" - слепил что-то и "у меня работает".
Цитата
Но Ваша фраза об уровне меня заинтересовала. Как можно оценить уровень программирования?

Спросить оценки у других.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Step_ARM
сообщение Aug 10 2009, 05:04
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 11-07-08
Пользователь №: 38 870



Цитата(zltigo @ Aug 10 2009, 08:10) *
Понятно. Подход "радиогубителя" - слепил что-то и "у меня работает".

Спросить оценки у других.

Хлоп, штампик поставил... Точно старый усталый программер.
Как всегда -- я Д"Артаньян , а Вы все ...
Я-то хотел той фразой сказать ,что путей решения очень много.

А если я хочу оценить кого-то при приеме на работу?
Я не настолько велик, чтобы кому-то давать оценку, а таких "гигантов " как Вы рядом нет. Как быть? Критерии все же нужны...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 13 2009, 05:52
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Step_ARM @ Aug 10 2009, 07:04) *
А если я хочу оценить кого-то при приеме на работу?
Я не настолько велик, чтобы кому-то давать оценку, а таких "гигантов " как Вы рядом нет. Как быть? Критерии все же нужны...

Так пусть это будут любые, НО ВАШИ критерии, а не какие-то "чужие", пусть и рекламируемые, как умные.


Цитата(Step_ARM @ Aug 13 2009, 07:00) *
Однако это не помешало ему заключить неплохой контракт за границей именно как прграммеру.

Заграница, она такая smile.gif, а программирование давно уже участь домохозяек. Знакомая учительница жимии, предпенсионого возраста, повторно выщла замуж за иландского пенсионера, работы, соответственно, там не нашла. На курсах безработных освоила новую специальность "программиста" - работает. Погагаю, что с Российской колокольни, порядка 20 тысяч евро в год это уже "неплохой контракт". Практически аналогичная история в Штатах. Подбросить могу и примеры из жизни прогаммистов на Бейсике а Англии.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Step_ARM
сообщение Aug 13 2009, 06:50
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 11-07-08
Пользователь №: 38 870



Цитата(zltigo @ Aug 13 2009, 09:52) *
Так пусть это будут любые, НО ВАШИ критерии, а не какие-то "чужие", пусть и рекламируемые, как умные.



Заграница, она такая smile.gif, а программирование давно уже участь домохозяек. Знакомая учительница жимии, предпенсионого возраста, повторно выщла замуж за иландского пенсионера, работы, соответственно, там не нашла. На курсах безработных освоила новую специальность "программиста" - работает. Погагаю, что с Российской колокольни, порядка 20 тысяч евро в год это уже "неплохой контракт". Практически аналогичная история в Штатах. Подбросить могу и примеры из жизни прогаммистов на Бейсике а Англии.

Наверное Вы правы... Но... Есть тут у меня человек один. Пишет для всего, что угодно. Как-то даже ключ для протокола обмена с блоком управления двигателем взломал за пару часов. А вот элементарный сигма-дельта АЦП на компараторе месяц ковырял пока нормально измерил. Как так? По моим критериям не есть хорошо, но ведь ключикто как-то получил...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Altemir   Нужны ли вложенные прерывания?   Jul 31 2009, 21:45
- - aaarrr   ИМХО, шина I2C вообще не предполагает работу с жес...   Jul 31 2009, 22:05
|- - Altemir   Цитата(aaarrr @ Aug 1 2009, 02:05) ИМХО, ...   Jul 31 2009, 22:27
|- - defunct   Цитата(Altemir @ Aug 1 2009, 01:27) Шина ...   Jul 31 2009, 23:55
|- - Altemir   Цитата(defunct @ Aug 1 2009, 03:55) Так о...   Aug 1 2009, 09:36
|- - smac   Цитата(Altemir @ Aug 1 2009, 13:36) Собст...   Aug 1 2009, 14:38
|- - Altemir   Цитата(smac @ Aug 1 2009, 18:38) Я бы при...   Aug 1 2009, 15:45
|- - defunct   Цитата(Altemir @ Aug 1 2009, 18:45) Да, т...   Aug 1 2009, 23:25
|||- - IgorMarx   Цитата(singlskv @ Aug 8 2009, 03:15) но в...   Aug 8 2009, 04:38
|||- - SasaVitebsk   Цитата(zltigo @ Aug 8 2009, 09:12) Не так...   Aug 8 2009, 20:12
||||- - singlskv   Цитата(SasaVitebsk @ Aug 9 2009, 00:12) А...   Aug 9 2009, 00:21
|||- - Dog Pawlowa   Цитата(zltigo @ Aug 8 2009, 09:12) Однако...   Aug 9 2009, 05:17
||||- - aaarrr   Цитата(Step_ARM @ Aug 10 2009, 09:04) Как...   Aug 10 2009, 08:01
|||||- - Step_ARM   Цитата(aaarrr @ Aug 10 2009, 12:01) Все о...   Aug 13 2009, 05:00
||||- - zltigo   Цитата(Step_ARM @ Aug 13 2009, 08:50) Как...   Aug 13 2009, 06:57
||||- - Step_ARM   Цитата(zltigo @ Aug 13 2009, 10:57) Интер...   Aug 13 2009, 12:59
||||- - zltigo   Цитата(Step_ARM @ Aug 13 2009, 14:59) в и...   Aug 13 2009, 13:11
|||- - sasamy   Цитата(zltigo @ Aug 8 2009, 09:12) убогос...   Aug 27 2009, 19:15
||- - zltigo   Цитата(singlskv @ Aug 2 2009, 02:56) Ерун...   Aug 7 2009, 18:28
||- - Dog Pawlowa   Цитата(singlskv @ Aug 2 2009, 02:56) Ерун...   Aug 7 2009, 19:19
|- - Step_ARM   Цитата(IgorMarx @ Aug 1 2009, 16:44) Отве...   Aug 3 2009, 06:02
|- - Altemir   Всем спасибо за предложения. Всё сделал, проверил,...   Aug 3 2009, 11:00
- - beer_warrior   А зачем такиие сложности с вложенным прерыванем? Т...   Aug 2 2009, 07:01
- - Troll   Цитата(Altemir @ Aug 3 2009, 15:00) Ещё о...   Aug 3 2009, 12:57
|- - Step_ARM   Цитата(Troll @ Aug 3 2009, 16:57) Хрень к...   Aug 4 2009, 03:54
- - IgorMarx   А кто против прерываний? Да ради бога. Всё от зада...   Aug 7 2009, 20:22


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01559 секунд с 7
ELECTRONIX ©2004-2016