Ptaag 0 14 сентября, 2009 Опубликовано 14 сентября, 2009 · Жалоба Я использую VDSP 5.0 update 6 , мне необходимо организовать обработку немаскируемого прерывания NMI0. Я объявляю функцию-обработчика прерывания: EX_INTERRUPT_HANDLER(nmi_int) { int_count++; } Потом в основной функции я связываю nmi_int с вектором через register_handler(ik_nmi, nmi_int); Достаточно ли этого? Все ли я правильно делаю? Прерывание не обрабатывается... :cranky: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
koljakh 0 14 сентября, 2009 Опубликовано 14 сентября, 2009 · Жалоба Я использую VDSP 5.0 update 6 , мне необходимо организовать обработку немаскируемого прерывания NMI0. Я объявляю функцию-обработчика прерывания: EX_INTERRUPT_HANDLER(nmi_int) { int_count++; } Потом в основной функции я связываю nmi_int с вектором через register_handler(ik_nmi, nmi_int); Достаточно ли этого? Все ли я правильно делаю? Прерывание не обрабатывается... :cranky: Только так вот EX_NMI_HANDLER(NMI_Routine) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ptaag 0 14 сентября, 2009 Опубликовано 14 сентября, 2009 · Жалоба То есть, я должен объявить EX_NMI_HANDLER(nmi_int) { int_count++; } а потом в основной функции связать nmi_int с вектором немаскируемого прерывания register_handler(ik_nmi, nmi_int); и должно получиться? Попутный вопрос. Источник прерывания соединен с микропроцессором через ПЛИС. Вход ПЛИС стандарта LVCMOS33. Считается ли напряжение 0.3 вольта логическим нулем? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
koljakh 0 15 сентября, 2009 Опубликовано 15 сентября, 2009 · Жалоба То есть, я должен объявить EX_NMI_HANDLER(nmi_int) { int_count++; } а потом в основной функции связать nmi_int с вектором немаскируемого прерывания register_handler(ik_nmi, nmi_int); и должно получиться? Попутный вопрос. Источник прерывания соединен с микропроцессором через ПЛИС. Вход ПЛИС стандарта LVCMOS33. Считается ли напряжение 0.3 вольта логическим нулем? Да должно получиться, только смотрите это прерывание по уровню, и если не снять запрос на прерывание то проц там и останется. Посмотрите на длительность этого сигнала. А с уровнем все нормально. VIH High Level Input Voltage 2.0 ... 3.6V VIL Low Level Input Voltage –0.3 ... +0.6V Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ptaag 0 15 сентября, 2009 Опубликовано 15 сентября, 2009 · Жалоба Все равно не работает. Коллеги подсказывают, что еще может быть проблема в VDK, которая является неизбежным злом при использовании стека TCP/IP... К сожалению, попробовать послушать прерывание без VDK смогу только завтра. Может ли быть дело в VDK? Длительность импульса на входе NMI0 составляет около 100 нс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
koljakh 0 15 сентября, 2009 Опубликовано 15 сентября, 2009 · Жалоба Все равно не работает. Коллеги подсказывают, что еще может быть проблема в VDK, которая является неизбежным злом при использовании стека TCP/IP... К сожалению, попробовать послушать прерывание без VDK смогу только завтра. Может ли быть дело в VDK? Длительность импульса на входе NMI0 составляет около 100 нс. Да, ВДК это зло :):) 100 нс... Да должен войти. А попробуйте raise 2. Если проблема внутри проца, то ничего не изменится, если извне, то заработает. Хотя может быть и там и там :) А проц не входит туда или не выходит. Ничего не виснет? Инкрементируемая переменная volatile ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Manhoso 0 15 сентября, 2009 Опубликовано 15 сентября, 2009 · Жалоба Да, ВДК это зло :):) 100 нс... Да должен войти. А попробуйте raise 2. Если проблема внутри проца, то ничего не изменится, если извне, то заработает. Хотя может быть и там и там :) А проц не входит туда или не выходит. Ничего не виснет? Инкрементируемая переменная volatile ? Да, инкрементируемая переменная volatile. Хотя я в обработчике прерывания вызывал функцию printf("Srabotalo!"), но безрезультатно... А что такое raise 2 ??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vik0 0 15 сентября, 2009 Опубликовано 15 сентября, 2009 · Жалоба А что такое raise 2 ??? Программная генерация nmi. В коде C на использовать так: asm("raise 2;"); PS. Двойная регистрация на форуме запрещена :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
koljakh 0 15 сентября, 2009 Опубликовано 15 сентября, 2009 · Жалоба Да, инкрементируемая переменная volatile. Хотя я в обработчике прерывания вызывал функцию printf("Srabotalo!"), но безрезультатно... А что такое raise 2 ??? а printf прерываний более низкого уровня не использует? Может лучше ножкой подергать, так надежнее :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 15 сентября, 2009 Опубликовано 15 сентября, 2009 · Жалоба Да, инкрементируемая переменная volatile. Хотя я в обработчике прерывания вызывал функцию printf("Srabotalo!"), но безрезультатно... А что такое raise 2 ??? А так можно делать в обработчике? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться