Gyga 0 13 мая, 2010 Опубликовано 13 мая, 2010 · Жалоба В моей программе возникла необходимость на 2 прерывания сделать 1 обработчик. На sport и gpio. Не подскажите правильно ли я их разрулил? EX_INTERRUPT_HANDLER(Sport0S_PG_ISR) { //считываем регистр возникших прерываний int prev = *pSIC_ISR; if (prev&IRQ_DMA4) { //прозошло прерывание на Sport0 данные переданы *pDMA4_IRQ_STATUS = 0x0001; } prev = *pSIC_ISR; int b = *pPORTGIO; //if (b & PG2) if (prev &IRQ_PFA_PORTFG) { *pPORTGIO_CLEAR = 2; //прозошло прерывание на порту G прерывание по фронту } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 4 13 мая, 2010 Опубликовано 13 мая, 2010 · Жалоба А на какой ivg вы интересно повесили Sport0S_PG_ISR? Объясните для начала что вам нужно сделать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gyga 0 13 мая, 2010 Опубликовано 13 мая, 2010 · Жалоба на 9. с более высоким приоритетом заняты vdk под сеть и потоки. Это фрагмент реализации протокола обмена данных с ПЛИС. На время передачи данных в ПЛИС я создаю ворота на ножке gpio. ПЛИС со мной общается подобным образом. Так вот мне надо что бы при возникновении одного прерывания я не попал в обработчик другого. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 4 13 мая, 2010 Опубликовано 13 мая, 2010 · Жалоба Так вот мне надо что бы при возникновении одного прерывания я не попал в обработчик другого.В смысле чтобы не было вложенных прерываний? Так они вроде итак запрещаются по дефолту. Прерывание DMA возникает уже после завершения передачи данных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gyga 0 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба меня волнует другое что бы когда возникло GPIO я не стал обрабатываь ветку со SPORT. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 4 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Когда на порту активный уровень запрещаете прерывания от спорта в регистре pSIC_IMASK вроде (не помню точно на память). Оставляете прерывани от спорта и делаете обработчик прерывания по фронту и спаду на GPIO, в котором и меняете значение регистра pSIC_IMASK. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gyga 0 18 мая, 2010 Опубликовано 18 мая, 2010 · Жалоба Зачем запрещать? Я сначала одно обработаю затем другое. Меня интересует правильно ли я определяю какое прерывание сейчас активно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 4 18 мая, 2010 Опубликовано 18 мая, 2010 · Жалоба Совсем не понимаю вашей логики. Вы хотите каким-то образом затолкать в один обработчик прерывания два события. Зачем это нужино и как это сделать понятия не имею. Одно дело когда для таймеров один обработчик и внутри него нужно определить какой таймер вызвал прерыание. А тут SPORT и GPIO... Меня интересует правильно ли я определяю какое прерывание сейчас активно?Сделайте два обработчика, как это обычно и делают. Попали в прерывание от SPORT обслужили, попали в прерывание от GPIO обслужили. Вы хотите сперва объединить а потом выяснять кто вызвал прерывание. Разве это не лишняя работа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gyga 0 19 мая, 2010 Опубликовано 19 мая, 2010 · Жалоба Так нет у меня больше свободных векторов с высоким приоритетом. Если использовать вектора с низким приоритетом то вызов обработчика происходит с опазданием. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 4 19 мая, 2010 Опубликовано 19 мая, 2010 · Жалоба Вам сложно было сразу это написать? А вам действительно нужно прерывание от GPIO. Почему бы после входа в прерывание просто не считать состояние ноги и исходя из этого передавать данные или нет через SPORT. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gyga 0 19 мая, 2010 Опубликовано 19 мая, 2010 · Жалоба По прерыванию с GPIO я начинаю принимать даные с ПЛИС. Так настаивает начальство. А по прерыванию SPORT я выставляю флаг конец данных и проверяю как ПЛИС приняла данные и не надо мне их повторить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 4 19 мая, 2010 Опубликовано 19 мая, 2010 · Жалоба Нафига тогда тут вообще GPIO? Нет данных на SPORT нет прерываний от SPORT. Передали данные через SPORT возникли прерывания. Посмотрите как соединяются аудио кодеки. Ни разу не видел какого-то дополнительного пина на кодеке, через который бы хост сигнализировал что он начнет передачу через SPORT. Это же ни к чему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gyga 0 20 мая, 2010 Опубликовано 20 мая, 2010 · Жалоба так оно было бы проче. Но начальство считает что с GPIO надёжней. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться