прерывания + linux + GPIO
alexmfivt
Пункты: 3237
Регистрация: 07.11.2010
Пол: Мужчина
Из: Красноярск
Сломал голову. Есть код, который предположительно работает:
Код /** Set pin as GPIO input, without internal pull up */
if(at91_set_gpio_input(AT91_PIN_PC12, 0)) {
printk(KERN_DEBUG"Could not set pin %i for GPIO input.\n", AT91_PIN_PC12);
}
/** Set deglitch for pin */
if(at91_set_deglitch(AT91_PIN_PC12, 1)) {
printk(KERN_DEBUG"Could not set pin %i for GPIO deglitch.\n", AT91_PIN_PC12);
}
/** Set the IRQ0 pin to Periph A */
at91_set_A_periph(AT91_PIN_PC12,0);
/** Request IRQ for pin */
if(request_irq(AT91SAM9260_ID_IRQ0, interrupt_handler_function, IRQF_TRIGGER_FALLING, "my_interrupt", NULL)) {
printk(KERN_DEBUG"Can't register IRQ %d\n", AT91_PIN_PC12);
return -EIO;
}
Как его скомпилить на ББ кросскомпилятором под G45 проц?
ЗЫ Прерывания будут с частотой 50 Гц.
sasamy
Пункты: 83560
Регистрация: 14.08.2009
Это кусок кода из ядра, что такое ББ ?
alexmfivt
Пункты: 3237
Регистрация: 07.11.2010
Пол: Мужчина
Из: Красноярск
Цитата Это кусок кода из ядра, что такое ББ ?
ББ - большой брат. Комп в общем.
Интересует возможность встроить ЭТОТ кусок кода в программу. Возможно ли такое?
sasamy
Пункты: 83560
Регистрация: 14.08.2009
alexmfivt
Пункты: 3237
Регистрация: 07.11.2010
Пол: Мужчина
Из: Красноярск
при выполнении команды:
echo rising > edge
вылетает ошибка:
setting trigger mode 1 for irq 121 failed (gpio_irq_type+0x0/0x20)
в чем может быть дело?
код взят с примера выше.
прерывания клавы обрабатываются нормально.
sasamy
Пункты: 83560
Регистрация: 14.08.2009
Цитата
setting trigger mode 1 for irq 121 failed (gpio_irq_type+0x0/0x20)
в чем может быть дело?
предполагаю у вас процессор at91sam9xxx или подобный - у них контроллер GPIO может генерировать прерывания только по изменению состояния на входе, т.е. по обоим фронтам входного сигнала, соответсвенно нужно настраивать
echo both > edge
alexmfivt
Пункты: 3237
Регистрация: 07.11.2010
Пол: Мужчина
Из: Красноярск
а как часто можно обрабатывать прерывание?
с частотой 50 Гц сможет проц обработать/получить прерывания?
sasamy
Пункты: 83560
Регистрация: 14.08.2009
alexmfivt
Пункты: 3237
Регистрация: 07.11.2010
Пол: Мужчина
Из: Красноярск
sasamy
Пункты: 83560
Регистрация: 14.08.2009
Цитата
g45
По ссылке есть бенчмарки для него.