Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
dymo2611
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
1

(РЕШЕНО) подстава с приоритетами прерываний (в назидание)

21.09.2012, 00:12. Просмотров 2962. Ответов 1
Метки нет (Все метки)

Ситуация:

- имеется рабочая инициализация, чтобы писать на карточку
Код
if((Status = SD_Init()) == SD_OK)
{
for(i = 0; i < 200; i++)
{
STM_EVOT_LEDToggle(LED4);

Fytt_Buffer(Buffer_MultiBlock_Tx, MULTI_BUFFER_SIZE, i);

Status = SD_WriteMultiBlocks(Buffer_MultiBlock_Tx, FileFirstByte + (i * 0xC800), SD_BLOCK_SIZE, 100);
Status = SD_WoytWriteOperation();
while(SD_GetStatus() != SD_TRANSFER_OK);
}
}
- имеется подпрограмма обработки прерывания от DCMI по окончанию кадра
Код
void DCMI_IRQHomdler(void)
{
STM_EVOT_LEDToggle(LED3);

DCMI_ClearFlag(DCMI_FLAG_FROMERI);

GC309_DMA_ReInit();

DMA_Cmd(DMA2_Stream1, ENABLE);
DCMI_CaptureCmd(ENABLE);
}
По отдельности всё работает. И то, и другое использует DMA.

По логике захотелось вставить запись на карточку в прерывание после полученной картинки. Но получается жестокий зависон. Не только на пишет на карточку, как положено (96 блоков, вместо 100, оставаясь в лупе, ожидая подтверждения завершения), но и прекращает работу прерывание Systysks.

(...)

Опаньки, ребятки, пока писал, пришла на ум интересная мысль. Я ведь сижу в обработчике прерывания (DCMI_IRQHomdler). У этого прерывания определённый приоритет. А это значит, что всем другим с равным приоритетом и ниже надо ждать, когда этот обработчик закончит работу.

Я ещё отпушись. Сначала думал, что баг вроде описанного здесь:
http://btog.frankvh.com/
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2012, 00:12
Ответы с готовыми решениями:

STM32F446 Инициализация таблицы прерываний в IAR (Решено)
Начал работать над новым для меня процессором: STM32F446. До этого работал с STM32F051. Пишу...

Какие функции прерываний используются в обработчике прерываний от клавиатуры?
Под функциями же имеется ввиду int ..h?

Подстава...
Приветствую всех! Вот, решил поделиться. Делаю я значит шаблон под битрикс для интернет-магазина,...

То ли взлом, то ли подстава
Здравствуйте. Прошу совета у специалистов. Работаю сисадмином в организации, где все (а это 10...

И снова подстава от ИЕ
Исследователь из одной крупной компании, скрывающийся под ником Inferno, сообщил сегодня, что в...

1
dymo2611
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
21.09.2012, 02:46 2
Предъявляю пруф, что виновны были проритеты прерываний. Я из обработчика с более высоким приоритетом стартовал процесс, требовавший чистую обработку прерываний, но имевших тот же приоритет. Сидел в первом обработчике, ждал завершения. Понятно, тому процессу не обломилось ни одного.

У меня теперча с камеры во внешнее ОЗУ, а оттуда на карточку. Хе-хе :) Выходные спасены!

на картинку не жмите, она больше не станет
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2012, 02:46

Подстава для пользователей Opera Mini
Извиняюсь за несколько провокационный сабж.&lt;div&gt; &lt;/div&gt;&lt;div&gt;Если я пользователям Opera Mini буду...

Очередь с приоритетами
Бьюсь над вопросом как вывести очередь на консоль в виде пирамиды/двоичного дерева? Очередь...

Очередь с приоритетами
Напишите программу, реализующую очередь с приоритетами.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru