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

 
 
> прерывания по фронту(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
 
Start new topic
Ответов
pitt
сообщение Oct 21 2012, 13:32
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 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
jcxz
сообщение Oct 22 2012, 04:56
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(pitt @ Oct 21 2012, 19:32) *
Должен ли я с сожалением констатировать, что все три мои вопроса остались без ответа? Будет жаль.

По-моему - проблема выеденного яйца не стоит.

Если при завершении передачи (нет больше данных для передачи) в ISR вы маскируете THRE, то потом, когда фоновая задача хочет записать новые даные для передачи, она делает следующее:
1. мьютекс/запрет прерываний.
2. проверка - THRE замаскировано(запрещено)? нет - переход к 5.
3. размаскируем THRE
4. заполняем TX fifo.
5. освобождение мьютекса/разрешение прерываний.

Если при завершении передачи (нет больше данных для передачи) в ISR вы не маскируете THRE, а просто выходите из ISR (предварительно сбросив программный флаг "TX в процессе"), то потом, когда фоновая задача хочет записать новые даные для передачи, она делает следующее:
1. мьютекс/запрет прерываний.
2. проверяете флаг "TX в процессе". Если стоит - переход к 5.
3. уставливаем флаг "TX в процессе"
4. заполняем TX fifo.
5. освобождение мьютекса/разрешение прерываний.
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Oct 22 2012, 06:54
Сообщение #4


Знающий
****

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



Цитата(jcxz @ Oct 22 2012, 06:56) *
По-моему - проблема выеденного яйца не стоит.

Если рассуждать феноменологически - есть процессор, который продается, значит написать для него работоспособный код возможно. Наверное, и приведеный алгоритм применим. Однако меня настораживает то (я еще не работал с LPC1xxx), что NXP выпендрился и избрал особый путь в генерации прерываний от флагов периферии для своих Cortex. Из моего опыта я вижу, что по крайней мере тут 1:3 не в пользу NXP в сравнении с другими тремя распространенными Cortex-Mx. А как я понял из контекста автора ветки, речь идет и о выборе, в сторону какого Cortex грабли развернуть.
Go to the top of the page
 
+Quote Post
gladov
сообщение Oct 22 2012, 07:57
Сообщение #5


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

Группа: Свой
Сообщений: 169
Регистрация: 10-11-05
Из: Воронеж
Пользователь №: 10 687



Цитата(KnightIgor @ Oct 22 2012, 10:54) *
NXP выпендрился и избрал особый путь в генерации прерываний от флагов периферии для своих Cortex. Из моего опыта я вижу, что по крайней мере тут 1:3 не в пользу NXP в сравнении с другими тремя распространенными Cortex-Mx.

Дело в том, что NXP взял за основу UART 16650. Именно эта архитектура в точности повторена в контроллерах NXP, а, как известно, на этой архитектуре десятилетиями работали компьютеры. Так что оба подхода: "классический микроконтроллерный" и от NXP имеют право на жизнь и тут еще можно поспорить какой вариант более классический и распространенный.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- pitt   прерывания по фронту(edge sensitive)   Oct 20 2012, 13:50
- - _Артём_   Цитата(pitt @ Oct 20 2012, 16:50) К своем...   Oct 20 2012, 14:37
|- - pitt   Меня UART НЕ интересует. Это просто удобный и поня...   Oct 20 2012, 15:51
|- - _Артём_   Цитата(pitt @ Oct 20 2012, 18:51) Мой пер...   Oct 20 2012, 16:23
||- - pitt   Если речь идет о внешнем прерывании, то я двумя ру...   Oct 20 2012, 16:41
|||- - ar__systems   Цитата(pitt @ Oct 20 2012, 12:41) Если ма...   Oct 20 2012, 18:47
|||- - pitt   Цитата(ar__systems @ Oct 20 2012, 14:47) ...   Oct 20 2012, 19:00
||- - AHTOXA   Цитата(_Артём_ @ Oct 20 2012, 22:23) Поче...   Oct 20 2012, 18:46
||- - _Артём_   Цитата(AHTOXA @ Oct 20 2012, 21:46) Наско...   Oct 20 2012, 19:27
||- - pitt   Цитата(_Артём_ @ Oct 20 2012, 15:27) Неле...   Oct 20 2012, 19:29
||- - _Артём_   Цитата(pitt @ Oct 20 2012, 22:29) Особенн...   Oct 20 2012, 20:45
||- - pitt   Цитата(_Артём_ @ Oct 20 2012, 16:45) Ну, ...   Oct 20 2012, 20:53
|- - Allregia   Цитата(pitt @ Oct 20 2012, 17:51) Не знаю...   Oct 24 2012, 06:05
||- - KnightIgor   Цитата(gladov @ Oct 22 2012, 09:57) Дело ...   Oct 23 2012, 19:22
|- - pitt   Цитата(jcxz @ Oct 22 2012, 00:56) http:/...   Oct 22 2012, 23:50
- - KnightIgor   Цитата(pitt @ Oct 20 2012, 15:50) Прошу п...   Oct 21 2012, 18:29
|- - _Артём_   Цитата(KnightIgor @ Oct 21 2012, 21:29) С...   Oct 21 2012, 19:05
|- - pitt   Цитата(KnightIgor @ Oct 21 2012, 14:29) С...   Oct 21 2012, 20:34
|- - KnightIgor   Цитата(pitt @ Oct 21 2012, 22:34) Поделит...   Oct 21 2012, 21:55
|- - pitt   Цитата(KnightIgor @ Oct 21 2012, 17:55) П...   Oct 21 2012, 22:28
|- - _Артём_   Цитата(pitt @ Oct 22 2012, 01:28) Атмел з...   Oct 21 2012, 23:03
|- - pitt   Цитата(_Артём_ @ Oct 21 2012, 19:03) Про ...   Oct 21 2012, 23:16
- - IgorKossak   Хватит оффтопа, давайте вернёмся к обсуждению темы...   Oct 24 2012, 08:18


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

 


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


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