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

 
 
> Приоритет прерываний, и прерывание прерываний
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
Ответов
PhX
сообщение Aug 30 2008, 06:26
Сообщение #2


Местный
***

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



Честно говоря не ожидал, что проблема вызоет такую дискуссию.
На первый взгляд можно сделать следующий вывод: необходимо упростить задачу, поскольку чем больше сложность, тем дольше этап отладки. Поэтому прерывание от Timer2 необходимо убрать.
Господин zhevak предложил очень интнремный способ планирования задачи. Спасибо, но поскольку боюсь ножниц, воспользуюсь карандашом. smile.gif
Цитата(bzx @ Aug 29 2008, 22:52) *
завести данный сигнал не на int0, а на счётный вход таймера...

К большому сожалению считывание импульсов с энкодера несколько сложнее чем просто суммирование импульсов, об этом на форуме уже проводилась дискуссия. На более развитых нежели AVR контроллерах обработчик энкодера железно включен в перифирию, однако у AVR к сожалению этого нет. Приведу код обработчика INT0
Код
// Внешнее прерывание INT0
// На вход INT0 приходят импульсы от выхода A энкодера
// На вход PD0 приходят импульсы от выхода B энкодера
ISR(INT0_vect)
{
Rot = (PIND & 0x01 == 0x01);
if (Rot) pos++; else pos--;
}

Обработчик прерывания от Timer1 должно прерываться прерыванием от ISR0.
Как ли это делается в WinAVR?
Код
ISR(TIMER1_OVF_vect)
{
  sei(); // Разрешаем прерывания
  // Что-то сюда еще наверное нужно вставить чтобы впускать только прерывания от INT0
  if (PORTC < 0x08)
    PORTC<<=1;
  else
    PORTC = 0x01;
  TCNT1 = 0x10000 - 62500 / Frq;
}


--------------------
Если все, то не я...
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, 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
- - 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


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

 


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


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