|
Приоритет прерываний, и прерывание прерываний |
|
|
|
 |
Ответов
|
Aug 30 2008, 08:31
|

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

|
Дам пару советов. Во первых, код написать таким образом (правда, это для IAR, но для гнуся все остается в силе) Код #pragma vector=INT0_vect __interrupt void INT0_proc(void) { unsigned char t=pos-1; if (PIND&0x01) t+=2; pos=t; }
#pragma vector=TIMER1_OVF_vect __interrupt void T1_proc(void) { unsigned char t; __enable_interrupt(); t=PORTC; t<<=1; if (PORTC&0x08) t=1; PORTC=t; TCNT1 = 0x10000 - 62500 / Frq; } Общая идея в том, чтобы не работать с глобальными переменными, а работать с регистровыми. Например, обработчик INT0 после переделки занимает 27 тактов со всеми входами и выходами (это результат IAR'а). Далее, если Вы боитесь, что в прерывании от переполнения Timer1 возможен второй вход - поставьте его в режим Clear On Compare Match и в OCR1 занесите 1. В результате, после переполнения, произойдет прерывание, а таймер дальше не пойдет, его все время Compare Match будет сбрасывать. Как только Вы занесете в таймер значение больше 1 - опять начнется отсчет.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Aug 31 2008, 22:01
|

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

|
Цитата(Rst7 @ Aug 30 2008, 07:31)  Общая идея в том, чтобы не работать с глобальными переменными, а работать с регистровыми. Например, обработчик INT0 после переделки занимает 27 тактов со всеми входами и выходами (это результат IAR'а) Интересно бы взглянуть на код. Хотя по смыслу переменные t, pos должны быть 16-битными, если не 32-битными. У меня для целых (16-битных) на асме получилось 18 тактов. А вообще вывод неутешительный, время выполнения двух прерываний порядка 83 тактов, явно подпадает под расстрельную статью...
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
Сообщений в этой теме
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  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 Rst7 ЦитатаКодвижн такие времена даёт для интиджер.
Ды... Sep 1 2008, 11:24 =GM= Цитата(Rst7 @ Sep 1 2008, 10:24) Дык поль... Sep 1 2008, 11:40 PhX Цитата(Rst7 @ Sep 1 2008, 16:24) Дык поль... Sep 1 2008, 11:50  defunct Цитата(PhX @ Sep 1 2008, 14:50) где можно... Sep 1 2008, 11:54  =GM= Цитата(PhX @ Sep 1 2008, 10:50) Асм это х... Sep 1 2008, 12:56   Сергей Борщ Цитата(=GM= @ Sep 1 2008, 15:56) Ещё раз ... Sep 1 2008, 13:11   defunct Цитата(=GM= @ Sep 1 2008, 15:56) То-то вс... Sep 1 2008, 13:12    =GM= Цитата(defunct @ Sep 1 2008, 12:12) Опред... Sep 1 2008, 15:25     defunct Цитата(=GM= @ Sep 1 2008, 18:25) Ну, прек... Sep 1 2008, 15:47      =GM= Цитата(defunct @ Sep 1 2008, 14:47) ОК Ч... Sep 1 2008, 16:14       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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|