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

 
 
> Приоритет прерываний, и прерывание прерываний
PhX
сообщение Aug 28 2008, 16:53
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249



Есть три обработчика прерываний:
От Timer1
от INT0
и допустим
от Timer2
Прерывание от INT0 наиважнейшее не обработается вовремя расстрел (считает импульсы энкодера максимальная частота 250 КГц). Вопрос как сделать так, чтобы это прерывание имело наивысший приоритет и прерывало обработчики остальных прерываний?
Компилятор WinAVR.


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Rst7
сообщение Sep 1 2008, 11:24
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Кодвижн такие времена даёт для интиджер.


Дык пользуйте вменяемые компиляторы smile.gif

И не лобовые алгоритмы wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
PhX
сообщение Sep 1 2008, 11:50
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249



Цитата(Rst7 @ Sep 1 2008, 16:24) *
Дык пользуйте вменяемые компиляторы smile.gif

Если не жалко пульните в PM ссылку где можно скачать свежий пролеченный IAR, а то на ftp какой-то старенький лежит.

Цитата
А я на асме, по старинке (:-).

Асм это хорошо, но голова одна, а разновидностей процессоров все больше и больше...


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 1 2008, 12:56
Сообщение #4


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(PhX @ Sep 1 2008, 10:50) *
Асм это хорошо, но голова одна, а разновидностей процессоров все больше и больше...

То-то все сишники то и дело рассматривают ассемблерный код (:-). А чего на него смотреть, если вы пишете на си?

Или вот, попробуйте перенести ваш сишный код двух прерываний на пик18. Думаете не надо будет ничего делать? Как бы не так.

Или вы думаете, заменив одни трудности другими, будет легче? Вот на вскидку два сообщения о глюках в компиляторе иар http://electronix.ru/forum/index.php?showtopic=40698, http://electronix.ru/forum/index.php?showtopic=40231.

Ещё раз повторю, хочется тратить время на задачу, а не на борьбу с компилятором.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Sep 1 2008, 13:12
Сообщение #5


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(=GM= @ Sep 1 2008, 15:56) *
То-то все сишники то и дело рассматривают ассемблерный код (:-). А чего на него смотреть, если вы пишете на си?

Вообще-то это очень редкое занятие. Я например в своих проектах практически никогда не рассматриваю асм код, про причине "нахренненужности" © zltigo. На глаз видно потянет или не потянет тот или иной проц, ту или иную задачу.
Цитата
Или вот, попробуйте перенести ваш сишный код двух прерываний на пик18. Думаете не надо будет ничего делать? Как бы не так.

Конечно настройку периферии нужно будет переделать.
А в остальном (при организации программы, как приводил выше в #24 ничего менять не придется).
Цитата
Или вы думаете, заменив одни трудности другими, будет легче?

Определенно.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 1 2008, 15:25
Сообщение #6


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(defunct @ Sep 1 2008, 12:12) *
Определенно

Ну, прекрасно, раз трудностей нет. Предлагаю в качестве эксперимента написать для авр на си программную выдачу 37-бит данных, сопровождаемых стробом:
1) смена бита на линии D
2) выждатьТо
3) строб=1 на линии C
4) выждать 2*То
5) строб=0 на линии C
6) выждатьТо
7) повторить пп1-6 N=37 раз
Простая задача, раз плюнуть.
А потом перенести сишный код на другую платформу - ЦСП TMS320F2808, To=50нс.
Вот мой код для референса
Код
sndbit:
   mov    *xar5,ah
   mov    @th,ah
   nop    
   nop    
   or     @th,#0x0002
   mov    *xar5,t
   lsr    ah,#1
   lsl64  acc:p,#1
   rpt    #6-2
   ||nop
   and    @th,#~0x0002
   mov    *xar5,t
   banz   sndbit,ar0--
   tset   *xar5,#2

Клок 100 МГц, 1такт=10нс, 20 тактов на бит, битовая скорость 5Мбит/с. Для авр 20 МГц клок ожидается 5=100/20 раз меньшую скорость, т.е. 1 МГц.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Sep 1 2008, 15:47
Сообщение #7


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(=GM= @ Sep 1 2008, 18:25) *
Ну, прекрасно, раз трудностей нет. Предлагаю в качестве эксперимента написать для авр на си программную выдачу 37-бит данных, сопровождаемых стробом:

Клок 100 МГц, 1такт=10нс, 20 тактов на бит, битовая скорость 5Мбит/с. Для авр 20 МГц клок ожидается 5=100/20 раз меньшую скорость, т.е. 1 МГц.

ОК smile.gif Что может быть проще.
Берем M8515 @16Mhz. Включаем внешнюю шину. Стоит ли продолжать? smile.gif

Код
// сразу 8 каналов, скорость порядка 4Mbps
void IO_Transfer( U8 *p )
{
     U8 size = 37;

     __disable_interrupt();
     while(size--)
     {
        *(volatile U8 *)0x8000 = *p++;
        delay_cycles( еще и тормозить придется чтобы 1Mbps получить);
     }
     __enable_interrupt();
}

предварительно заполняем массив из 37 элементов данными которые хотим слать и передаем указатель на этот массив в IO_Transfer. PC7 - признак работы нашего "serial" канала.

Строб снимаем с сигнала W. Данные с ШД.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 1 2008, 16:14
Сообщение #8


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(defunct @ Sep 1 2008, 14:47) *
ОК smile.gif Что может быть проще. Строб снимаем с сигнала W. Данные с ШД

Ну, а если перенести на другой проц, будет та же самая программа? А там ШД нет, и W тоже нет, как быть? Да и на "нарезку" данных у вас уйдёт вагон времени, мы так не договаривались(:-).


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- PhX   Приоритет прерываний   Aug 28 2008, 16:53
- - zltigo   Цитата(PhX @ Aug 28 2008, 18:53) ...как П...   Aug 28 2008, 17:11
|- - smac   Цитата(zltigo @ Aug 28 2008, 21:11) Поско...   Aug 28 2008, 19:28
|- - zltigo   Цитата(smac @ Aug 28 2008, 21:28) поэтому...   Aug 28 2008, 19:40
|- - defunct   Цитата(zltigo @ Aug 28 2008, 22:40) Если ...   Aug 28 2008, 19:47
||- - zltigo   Цитата(defunct @ Aug 28 2008, 21:47) вот ...   Aug 28 2008, 20:02
||- - defunct   Цитата(zltigo @ Aug 28 2008, 23:02) Так с...   Aug 28 2008, 20:35
||- - zltigo   Цитата(defunct @ Aug 28 2008, 22:35) ...п...   Aug 28 2008, 20:54
||- - defunct   Цитата(zltigo @ Aug 28 2008, 23:54) Нет. ...   Aug 28 2008, 21:10
||- - zltigo   Цитата(defunct @ Aug 28 2008, 23:03) очев...   Aug 28 2008, 21:14
||- - defunct   Цитата(zltigo @ Aug 29 2008, 00:14) Поско...   Aug 28 2008, 21:26
||- - zltigo   Цитата(defunct @ Aug 28 2008, 23:26) не с...   Aug 28 2008, 21:48
||- - defunct   Цитата(zltigo @ Aug 29 2008, 00:48) Повто...   Aug 28 2008, 21:59
||- - zltigo   Цитата(defunct @ Aug 28 2008, 23:59) гм?...   Aug 28 2008, 22:37
||- - defunct   Цитата(zltigo @ Aug 29 2008, 01:37) Ладно...   Aug 29 2008, 00:19
||- - zltigo   Цитата(defunct @ Aug 29 2008, 02:19) Они ...   Aug 29 2008, 08:18
||- - defunct   Цитата(zltigo @ Aug 29 2008, 11:18) -При ...   Aug 29 2008, 11:00
||- - =GM=   Прям операционка получилась...кооперативная(:-).   Aug 29 2008, 11:06
||- - zhevak   Цитата(=GM= @ Aug 29 2008, 17:06) Прям оп...   Aug 29 2008, 16:43
||- - Боинг749   Вот кстати ещё тема с похожей тематикой (касающаяс...   Aug 29 2008, 19:15
|- - smac   Цитата(zltigo @ Aug 28 2008, 23:40) INT0 ...   Aug 28 2008, 20:03
|- - SasaVitebsk   Цитата(zltigo @ Aug 28 2008, 22:40) INT0 ...   Aug 28 2008, 20:23
|- - zltigo   Цитата(SasaVitebsk @ Aug 28 2008, 22:23) ...   Aug 28 2008, 20:46
|- - defunct   Цитата(zltigo @ Aug 28 2008, 23:46) В это...   Aug 28 2008, 20:54
- - defunct   Цитатапри входе в прерывания запретить индивидуаль...   Aug 28 2008, 19:28
- - =GM=   Цитата(PhX @ Aug 28 2008, 15:53) как сдел...   Aug 28 2008, 23:11
|- - zltigo   Цитата(=GM= @ Aug 29 2008, 01:11) ..да и ...   Aug 28 2008, 23:23
- - bzx   Цитата(PhX @ Aug 28 2008, 20:53) Прерыван...   Aug 29 2008, 17:52
|- - zhevak   Взгляд со стороны. Ибо в жаркой дискусси я неучвст...   Aug 29 2008, 18:48
- - PhX   Честно говоря не ожидал, что проблема вызоет такую...   Aug 30 2008, 06:26
|- - Сергей Борщ   Цитата(PhX @ Aug 30 2008, 09:26) Как ли э...   Aug 30 2008, 08:42
- - Rst7   Дам пару советов. Во первых, код написать таким об...   Aug 30 2008, 08:31
|- - =GM=   Цитата(Rst7 @ Aug 30 2008, 07:31) Общая и...   Aug 31 2008, 22:01
|- - defunct   Цитата(=GM= @ Sep 1 2008, 01:01) А вообще...   Aug 31 2008, 23:23
|- - Dog Pawlowa   Цитата(defunct @ Sep 1 2008, 02:23) Тайме...   Sep 1 2008, 07:36
|- - PhX   Цитата(Dog Pawlowa @ Sep 1 2008, 12:36) Н...   Sep 1 2008, 08:07
|- - defunct   Цитата(PhX @ Sep 1 2008, 11:07) Реально п...   Sep 1 2008, 10:43
||- - =GM=   Цитата(defunct @ Sep 1 2008, 09:43) Если ...   Sep 1 2008, 11:03
|- - ReAl   Цитата(PhX @ Sep 1 2008, 11:07) p.s. А в ...   Sep 1 2008, 11:00
|- - defunct   Цитата(PhX @ Sep 1 2008, 11:07) p.s. А в ...   Sep 1 2008, 11:34
- - Rst7   Цитата if (!(PORTC & (1 << 3)))   //...   Aug 30 2008, 09:27
|- - Сергей Борщ   Цитата(Rst7 @ Aug 30 2008, 12:27) Это над...   Aug 30 2008, 09:38
|- - sKWO   Цитата(Сергей Борщ @ Aug 30 2008, 12:38) ...   Aug 30 2008, 09:45
- - Rst7   Цитатаоэтому делать ее в этом месте вполне безопас...   Aug 30 2008, 10:14
|- - defunct   ЦитатаTCNT1 += 0x10000 - 62500 / Frq; выбросить вс...   Aug 30 2008, 20:59
|- - Боинг749   Цитата(defunct @ Aug 31 2008, 00:59) выбр...   Aug 30 2008, 21:08
||- - defunct   Цитата(Боинг749 @ Aug 31 2008, 00:08) Как...   Aug 31 2008, 07:34
|||- - Боинг749   Цитата(defunct @ Aug 31 2008, 11:34) Прям...   Aug 31 2008, 07:40
||- - Сергей Борщ   Цитата(Боинг749 @ Aug 31 2008, 00:08) НАП...   Aug 31 2008, 10:39
|- - PhX   Цитата(defunct @ Aug 31 2008, 01:59) выбр...   Aug 31 2008, 06:43
- - Боинг749   Цитата(PhX @ Aug 28 2008, 20:53) Есть три...   Aug 30 2008, 17:52
- - SasaVitebsk   В одном из изделий у меня использовался следующий ...   Aug 30 2008, 21:54
- - Rst7   Цитатас какого момента вы были наделены правами и ...   Aug 31 2008, 14:14
- - Rst7   ЦитатаИнтересно бы взглянуть на код Код RSEG COD...   Sep 1 2008, 05:49
|- - =GM=   Цитата(Rst7 @ Sep 1 2008, 04:49) А старши...   Sep 1 2008, 09:23
- - Rst7   ЦитатаИ как вы себе представляете правку старшего ...   Sep 1 2008, 09:49
|- - =GM=   Цитата(Rst7 @ Sep 1 2008, 08:35) Вполне п...   Sep 1 2008, 09:52
|- - PhX   Цитата(Rst7 @ Sep 1 2008, 14:49) А смысл?...   Sep 1 2008, 09:53
- - Rst7   ЦитатаТо есть был 127, стал 128 - меняем старший б...   Sep 1 2008, 10:02
- - Rst7   Цитатаavr-gcc делает лишнее Кстати, не пора ли лю...   Sep 1 2008, 11:02
|- - ReAl   Цитата(Rst7 @ Sep 1 2008, 14:02) Кстати, ...   Sep 1 2008, 11:20
- - Rst7   Цитата77% загрузка процессора. Необходимо учесть ...   Sep 1 2008, 11:07
|- - =GM=   Цитата(Rst7 @ Sep 1 2008, 10:07) Кстати, ...   Sep 1 2008, 11:21
|- - =GM=   Цитата(Rst7 @ Sep 1 2008, 10:24) Дык поль...   Sep 1 2008, 11:40
|- - defunct   Цитата(PhX @ Sep 1 2008, 14:50) где можно...   Sep 1 2008, 11:54
||- - Сергей Борщ   Цитата(=GM= @ Sep 1 2008, 15:56) Ещё раз ...   Sep 1 2008, 13:11
||- - zltigo   Цитата(=GM= @ Sep 1 2008, 18:14) ...как б...   Sep 1 2008, 16:25
||- - defunct   Цитата(=GM= @ Sep 1 2008, 19:14) Ну, а ес...   Sep 1 2008, 16:38
||- - =GM=   Краткие выводы из всех наших долгих разговоров. 1...   Sep 1 2008, 20:32
||- - zltigo   Цитата(=GM= @ Sep 1 2008, 22:32) 3) Из по...   Sep 1 2008, 21:50
|- - sKWO   Цитата(PhX @ Sep 1 2008, 14:50) Если не ж...   Sep 1 2008, 15:19
- - Rst7   ЦитатаК примеру, у вас прерывание выполняется за 2...   Sep 1 2008, 11:45
|- - =GM=   Цитата(Rst7 @ Sep 1 2008, 10:45) Значения...   Sep 1 2008, 12:05
- - Rst7   ЦитатаЭто должен делать компилятор, причём во всех...   Sep 1 2008, 12:18
- - SasaVitebsk   Я бы ещё отметил, в дополнение к сказанному, что е...   Sep 2 2008, 09:58
|- - =GM=   Цитата(SasaVitebsk @ Sep 2 2008, 08:58) В...   Sep 2 2008, 12:17
- - SasaVitebsk   В массовых изделиях, совершенно обосновано максима...   Sep 2 2008, 20:29


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

 


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


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