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

 
 
> прерывания по фронту(edge sensitive)
pitt
сообщение Oct 20 2012, 13:50
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



Прошу прощения за терминологию: русскую или забыл или не знал.
Работаю с LPC1768. Пишу HAL- hardware abstraction layer (не знаю перевод). К своему ужасу обнаружил, что UART(перевод?) генерирует прерывания по фронту: если "Пустои передающий буфер", например, было замаскировано, то после снятия маски прерывание потеряно, даже если условие - буфер, по прежнему, пустой сохранилось. Сильно подозреваю, что то же ждет меня с другой переферией. Хочу услышать ваши советы.
1. Зачем Phillips так делает? В чем преимущества? Чем просто маски недостаточно?
2. Способы борьбы. Вдруг узнаю что-то, чего еще не знаю. Учтите, у меня за плечами более 30 лет опыта работы в СССР и США
3. Другой М3, например, Atmel SAM3... или что-то подобное. Предварительный обзор, сделаный до меня, рекомендавал NXP за лучший интерфейс с периферией. Кстати, на М3 мы переключились после провала использовать NIOS-II в среде ALTIUM TASKING. Их порт ни в какие ворота не лезит: все дырявое и корявое, хотя на бумаге все прекрасно...

Спасибо.

Сообщение отредактировал pitt - Oct 20 2012, 13:54


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
_Артём_
сообщение Oct 20 2012, 14:37
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(pitt @ Oct 20 2012, 16:50) *
К своему ужасу обнаружил, что UART(перевод?) генерирует прерывания по фронту: если "Пустои передающий буфер", например, было замаскировано, то после снятия маски прерывание потеряно, даже если условие - буфер, по прежнему, пустой сохранилось. Сильно подозреваю, что то же ждет меня с другой переферией. Хочу услышать ваши советы.
1. Зачем Phillips так делает? В чем преимущества? Чем просто маски недостаточно?

Из вашего поста непонятно, что вас интересует. UART или edge sensitive?

Цитата(pitt @ Oct 20 2012, 16:50) *
3. Другой М3, например, Atmel SAM3... или что-то подобное.

Наверное все Cortex-ы имеют ошибки-недостатки. Зачем переходить на другой?

Цитата(pitt @ Oct 20 2012, 16:50) *
Предварительный обзор, сделаный до меня, рекомендавал NXP за лучший интерфейс с периферией.

Интересно, чем это интерфейс от NXP лучше, чем другие?
Go to the top of the page
 
+Quote Post
pitt
сообщение Oct 20 2012, 15:51
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



Меня UART НЕ интересует. Это просто удобный и понятный объект для обсуждения. Мой первый вопрос - попытка понять зачем и почему используется фронт, а не уровень. Не вижу никаких преимуществ, кроме недостатков. Может кто-то знает то, что я пока не знаю?

Прерывание по фронту, в том виде как оно есть, вызывает у меня серьезную изжогу, и потому, пока не поздно, ищу возможную альтернативу, а по сему, так как "все Cortex-ы имеют ошибки-недостатки" стараюсь не наступить на грабли, обтоптанные кем-то до меня. Например, STM32 имеет корявый I2C, а вот LPC в этом отношении нареканий не имеет. У меня несколько I2C devices, так что это серьезный довод. Мне нужен простой и надежный CAN и Ethernet., остальная перефирия не столь болезненна.

Не знаю точно, но предполагаю, что примеры, которые входят в состав eval-kit(а как по-русски?) легче сочетаются с документацией и более прозрачне для ЕЕ(элетронщики?), которые имеют первый голос при выборе микроконтроллера. Насколько я осведомлен, они тестируют эвал-киты инициализируя периферию(по-видимому, NXP оказался самым простым, удобным, понятным...) и на том удовлетворяются. Я embedded SOFTWARE инженер и слово SOFTWARE выделил и повторил не случайо. Электрики пишут и довольствуются кодом, а я разрабатываю программное обеспечение, а не код. Разница существенная и тема для другого отдельного топика, так что, пожалуйста, давайте не будем здесь ее обсуждать.

Сообщение отредактировал pitt - Oct 20 2012, 15:52


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Oct 20 2012, 16:23
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(pitt @ Oct 20 2012, 18:51) *
Мой первый вопрос - попытка понять зачем и почему используется фронт, а не уровень. Не вижу никаких преимуществ, кроме недостатков. Может кто-то знает то, что я пока не знаю?

В NXP считают иначе:

Цитата
• Each port pin can be programmed to generate an interrupt on a rising edge, a falling
edge, or both.
• Edge detection is asynchronous, so it may operate when clocks are not present, such
as during Power-down mode. With this feature, level triggered interrupts are not
needed.

Прерывания по уровню на входе нет, только по фронтам.

Цитата(pitt @ Oct 20 2012, 18:51) *
Прерывание по фронту, в том виде как оно есть, вызывает у меня серьезную изжогу, и потому, пока не поздно, ищу возможную альтернативу, а по сему, так как "все Cortex-ы имеют ошибки-недостатки" стараюсь не наступить на грабли, обтоптанные кем-то до меня.

Почему "Прерывание по фронту, в том виде как оно есть, вызывает у меня серьезную изжогу"? Что с ними не так?
Go to the top of the page
 
+Quote Post
pitt
сообщение Oct 20 2012, 16:41
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



Если речь идет о внешнем прерывании, то я двумя руками "ЗА". Я могу сам определить что именно является событием: уровень или фронт, а если фронт, то какой и сам себе барин! А если, как в примере с UART то, извините, изжога.
Вот пример.
Есть обработчик ТХ interrupt. Есть несколько приложений, которые хотят им воспользоваться. Если мы имеем прерывание по уровню, то если буфер пустой и прерывание разрешено(размаскировано), то все, что должно сделать приложение - разрешить прерывание(убрать маску). Если маска уже убрана т.е. посылка идет, то это дело обработчика завершить посылку одного буфера, найти следущий и т.д., а если больше данных для пересылки - нет, замаскировать прерывание. Интерфейс просой и надежный. Если мы имеем дело с прерыванием по фронту, то маскировать прерывание нельзя - оно может быть потеряно, так как если в момент, когда буфер освободился(ФРОНТ) была маска, а когда маска была снята, то несмотря на то, что буфер-то пустой у нас нет фронта! Вот вам и изжога! Теперь приложение должно найти способ как инициировать прерывания. Тут сразу нужны mutexы и прочие накладные расходы, а вот зачем, когда можно все так просто...
Я не хочу долго распространяться о деталях. Если Вы подумаете, то разберетесь сами, а если нет, то поверьте мне и извиняйте дядьку...
Кстати, представьте себе что контролеер прерываний работал бы по фронту!!! Какая бы это была трагедия.


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Oct 20 2012, 18:46
Сообщение #6


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(_Артём_ @ Oct 20 2012, 22:23) *
Почему "Прерывание по фронту, в том виде как оно есть, вызывает у меня серьезную изжогу"? Что с ними не так?

Насколько я понял, имеется в виду вот что: если при уже взведённом флаге прерывания разрешить это прерывание, то прерывание не произойдёт. То есть, прерывание происходит не по уровню флага прерывания, а по его фронту.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Oct 20 2012, 18:47
Сообщение #7


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(pitt @ Oct 20 2012, 12:41) *
Если маска уже убрана т.е. посылка идет, то это дело обработчика завершить посылку одного буфера, найти следущий и т.д., а если больше данных для пересылки - нет, замаскировать прерывание.


А зачем его вообще маскировать? Нету данных, буфер пустой, так и прерывание возникнуть не можеть. Чего вы маскированием добиваетесь. Вообще проблемы не вижу, что вас так напрягает?
Go to the top of the page
 
+Quote Post
pitt
сообщение Oct 20 2012, 19:00
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



Цитата(ar__systems @ Oct 20 2012, 14:47) *
А зачем его вообще маскировать? Нету данных, буфер пустой, так и прерывание возникнуть не можеть. Чего вы маскированием добиваетесь. Вообще проблемы не вижу, что вас так напрягает?

Ответ посмотрите выше! Если прерывание по фронту, то Вы совершенно правы, но когда данные есть, а фронта нет, что тогда(суть проблемы!!!)? Если по уровню, то из прерывания невозможно выйти если не замаскировать.


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Oct 20 2012, 19:27
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AHTOXA @ Oct 20 2012, 21:46) *
Насколько я понял, имеется в виду вот что: если при уже взведённом флаге прерывания разрешить это прерывание, то прерывание не произойдёт. То есть, прерывание происходит не по уровню флага прерывания, а по его фронту.

Да, понял.
Нелегко увидеть проблему, если её нет.
Go to the top of the page
 
+Quote Post
pitt
сообщение Oct 20 2012, 19:29
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



Цитата(_Артём_ @ Oct 20 2012, 15:27) *
Нелегко увидеть проблему, если её нет.

Особенно если смотреть в другую сторону...


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Oct 20 2012, 20:45
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(pitt @ Oct 20 2012, 22:29) *
Особенно если смотреть в другую сторону...

Ну, звыняй нас , дядка, непонятливых....

P.S. Привели бы пример кода, что ли, где приходится делать криво или как оно должно было быть по прямому.
Go to the top of the page
 
+Quote Post
pitt
сообщение Oct 20 2012, 20:53
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



Цитата(_Артём_ @ Oct 20 2012, 16:45) *
Ну, звыняй нас , дядка, непонятливых....

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

http://bibliotekar.ru/encSlov/17/160.htm


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post
pitt
сообщение Oct 21 2012, 13:32
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



Цитата(pitt @ Oct 20 2012, 09:50) *
Прошу прощения за терминологию: русскую или забыл или не знал.
Работаю с LPC1768. Пишу HAL- hardware abstraction layer (не знаю перевод). К своему ужасу обнаружил, что UART(перевод?) генерирует прерывания по фронту: если "Пустои передающий буфер", например, было замаскировано, то после снятия маски прерывание потеряно, даже если условие - буфер, по прежнему, пустой сохранилось. Сильно подозреваю, что то же ждет меня с другой переферией. Хочу услышать ваши советы.
1. Зачем Phillips так делает? В чем преимущества? Чем просто маски недостаточно?
2. Способы борьбы. Вдруг узнаю что-то, чего еще не знаю. Учтите, у меня за плечами более 30 лет опыта работы в СССР и США
3. Другой М3, например, Atmel SAM3... или что-то подобное. Предварительный обзор, сделаный до меня, рекомендавал NXP за лучший интерфейс с периферией. Кстати, на М3 мы переключились после провала использовать NIOS-II в среде ALTIUM TASKING. Их порт ни в какие ворота не лезит: все дырявое и корявое, хотя на бумаге все прекрасно...

Спасибо.

Должен ли я с сожалением констатировать, что все три мои вопроса остались без ответа? Будет жаль.

Кстати, вот более подробное описание проблемы http://electronix.ru/forum/index.php?showtopic=106139

Сообщение отредактировал pitt - Oct 21 2012, 16:15


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Oct 21 2012, 18:29
Сообщение #14


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(pitt @ Oct 20 2012, 15:50) *
Прошу прощения за терминологию: русскую или забыл или не знал.
Работаю с LPC1768. Пишу HAL- hardware abstraction laye
...
Другой М3, например, Atmel SAM3... или что-то подобное.

С LPC1xxx не работал, есть опыт с STM32F, SAM3 и EFM32. У них прерывания работают "по уровню": если разрешить прерывание по, например, TX для UART еще ДО передачи, то, обнаружив флаг TX, система вызовет прерывание. Если LPC1xxx действительно ведет себя по-другому, - это большая проблема для... NXP, поскольку лучше выбирать процессоры, которые ведут себя в таком вопросе как большинство.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Oct 21 2012, 19:05
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(KnightIgor @ Oct 21 2012, 21:29) *
С LPC1xxx не работал, есть опыт с STM32F, SAM3 и EFM32. У них прерывания работают "по уровню": если разрешить прерывание по, например, TX для UART еще ДО передачи, то, обнаружив флаг TX, система вызовет прерывание. Если LPC1xxx действительно ведет себя по-другому, - это большая проблема для... NXP, поскольку лучше выбирать процессоры, которые ведут себя в таком вопросе как большинство.

Ну не знаю, Cortex-M, как и все ...
Цитата
34.4.2.9 Level-sensitive and pulse interrupts
The processor supports both level-sensitive and pulse interrupts. Pulse interrupts are also
described as edge-triggered interrupts.

Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 23:56
Рейтинг@Mail.ru


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