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

 
 
 
Reply to this topicStart new topic
> Не могу разобраться с ISR, два дня уже бьюсь(((((((
lons83
сообщение Mar 31 2013, 10:58
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 69
Регистрация: 9-11-12
Пользователь №: 74 296



Помогите разобраться...два дня сижу ни как не могу понять что не так.

Хочу чтобы при каждом нажатии кнопки (кнопка сажается на землю (спадающий фронт)), загорались а потом гасли светодиоды.

Настраиваю прерывания по кнопке.
Настойка PIO:
- Генерейт IRQ по EDGE
- Синхронизация по Спадающему фрону, Enable bit-clearing НЕ УСТАНОВЛЕН.

Текст в NIOS ECLIPSE (web 12.1)

Код
#include <altera_avalon_pio_regs.h>
#include <system.h>
#include <alt_types.h>
#include <sys/alt_irq.h>

unsigned char i;
void init_isr ();
void handle_btn();


void init_isr ()      // инициализация
{

IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_BUT_BASE, 0xff);
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_BUT_BASE, 0x01);


#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT
    alt_ic_isr_register(PIO_BUT_IRQ_INTERRUPT_CONTROLLER_ID, PIO_BUT_IRQ, handle_btn, 0, 0x0);
#else
    alt_irq_register( PIO_BUTTON_IRQ, 0, handle_btn);
#endif

}


void handle_btn()
{
i++;

//  при первом заходе зажигание светодиодов и сброс EDGE CApture (чтобы выйти из прерывания)

if (i==1) { IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, 0x03);         IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_BUT_BASE, 0xff);}                
        
//  при втором заходе гашение светодиодов и сброс EDGE CApture (чтобы выйти из прерывания)
                                                              
if (i==2) { i=0; IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, 0x00);  IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_BUT_BASE, 0xff);}

}


int main()
{
    i=0;

    IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, 0x00);

    init_isr();

    while (1);

    return 0;
}



Результат:

Светодиоды зажигаются и гаснут при каждом переключении (то есть как будто стоит срабатывание при любом изменении (ANY))
а в некоторых случаях некоторые переключения просто гинорируются....

Может кто-нибудь подскажет что нет так...
Заранее спасибо))))

Сообщение отредактировал lons83 - Mar 31 2013, 11:01
Go to the top of the page
 
+Quote Post
cnn2
сообщение Apr 1 2013, 03:42
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 30-11-11
Пользователь №: 68 594



так это же дребезг кнопки
Go to the top of the page
 
+Quote Post
lons83
сообщение Apr 1 2013, 10:17
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 69
Регистрация: 9-11-12
Пользователь №: 74 296



Цитата(cnn2 @ Apr 1 2013, 07:42) *
так это же дребезг кнопки


задержку поставил - не помогло... задержка: 1мкс после этого опрос входящий ножки.

такой еще вопрос (просто сам до конца не понял):
функция : alt_ic_isr_register(PIO_BUT_IRQ_INTERRUPT_CONTROLLER_ID, PIO_BUT_IRQ, handle_btn, 0, 0x0);
четвертый параметр у меня - 0.
Это правильно или там другое должно быть?
Go to the top of the page
 
+Quote Post
cnn2
сообщение Apr 1 2013, 12:01
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 30-11-11
Пользователь №: 68 594



В википендии замечательная фотка есть http://ru.wikipedia.org/wiki/%D0%A4%D0%B0%...itch_bounce.JPG
и статья Дребезг контактов
так вот там 1,2 мс дребезг
а по хорошему нужно не менее 10-15 мс ждать
по поводу параметра не знаю
думаю он ни при чем
Go to the top of the page
 
+Quote Post
lons83
сообщение Apr 1 2013, 13:20
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 69
Регистрация: 9-11-12
Пользователь №: 74 296



Цитата(cnn2 @ Apr 1 2013, 16:01) *
В википендии замечательная фотка есть http://ru.wikipedia.org/wiki/%D0%A4%D0%B0%...itch_bounce.JPG
и статья Дребезг контактов
так вот там 1,2 мс дребезг
а по хорошему нужно не менее 10-15 мс ждать
по поводу параметра не знаю
думаю он ни при чем


Спасибо))) посмотрю сейчас.
Go to the top of the page
 
+Quote Post

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

 


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


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