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

 
 
> Ошибка с прерываниями Nios2
torik
сообщение Feb 27 2008, 12:35
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Имеем PIO 8 бить вход с прерыванием по переднему фронту. IRQ=2 в сопсбилдере.
Нужно обработать прерывания от него.
Делаем все по учебнику:

Код
static void handle_button_interrupts(void* context, alt_u32 id) {
    
СЮДА ХОТЕЛОСЬ БЫ ПОПАСТЬ
    /* cast the context pointer to an integer pointer. */
    volatile int* edge_capture_ptr = (volatile int*) context;
    /*
    * Read the edge capture register on the button PIO.
    * Store value.
    */
    *edge_capture_ptr = IORD_ALTERA_AVALON_PIO_EDGE_CAP(PIO_2_BASE);
    /* Write to the edge capture register to reset it. */
    IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_2_BASE, 0);
    /* reset interrupt capability for the Button PIO. */
    IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_2_BASE, 0xff);
}

// Настройка прерывания от PIO_2
static void init_button_pio() {
    /* Recast the edge_capture pointer to match the
    alt_irq_register() function prototype. */
    void* edge_capture_ptr = (void*) &edge_capture;
    /* Enable all 4 button interrupts. */
    IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_2_BASE, 0xff);
    /* Reset the edge capture register. */
    IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_2_BASE, 0x0);
    /* Register the ISR. */
    alt_irq_register(PIO_2_IRQ, edge_capture_ptr, handle_button_interrupts);
}


Код
...
   init_button_pio();
...

Что получается - глядим дебагером. Когда доходит до одной из функций alt_irq_ччч (к примеру alt_irq_register, а в ней alt_irq_disable_all...) получаем сообщение: "Source not found."

Что это значит, ошибка где? Все что не касается прерываний этого PIO работает нормально...


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
torik
сообщение Feb 28 2008, 19:53
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Вероятно, ты ошибаешься.
Если "обрабатывать надо уже другой программой" то мне не нужен обработчик прерываний, получается бред.
Если не секрет, выложите код, поглядим...


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
Волощенко
сообщение Feb 29 2008, 10:16
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377



Цитата(torik @ Feb 28 2008, 23:53) *
Если не секрет, выложите код, поглядим...
Проблем показать нет, если кому-то это интересно.
В моем DK-NIOS-2S60N, есть также четыре кнопки и восемь светодиодов. Для начала я включал светодиоды, нажатием кнопок, используя режим опроса (polling). Дальше решил освоить прерывания по следующему алгоритму:
В исходном состоянии кнопка отжата (единица). При нажатии идет дребезг, кстати, от него сразу прерывание, потом ноль с небольшой продолжительностью, опять дребезг и уже опять исходное состояние. Одно нажатие кнопки переключает свечение светодиода. Биты в регистре edgecapture срабатывают по спаду (настройки в SOPC). Тексты, в режиме не полной гласности, в приложении.
По посту от 29.02.08 пока ничем помочь не могу.
Прикрепленные файлы
Прикрепленный файл  1.ZIP ( 1.25 килобайт ) Кол-во скачиваний: 59
 
Go to the top of the page
 
+Quote Post



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

 


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


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