Цитата(alexPec @ Sep 8 2011, 04:38)

Уважаемые, а как в ниосе зарегистрировать процедуру прерывания, которое возникает по фронту PIO? Смотрел в хэндбуке, раздел 5 - периферия, там ничего не нашел, а вот на sgdma регистрацию прерываний (пример) брал оттуда, там есть. Гдеб его найти?
И попутно - время реакции без VIC какое примерно? Проц средний (не помню букву).
Спасибо.
Код
void init_ISR()
{
//init keyboard
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEY_ROW_IN_BASE,0x03);
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_ROW_IN_BASE, 0x0);
alt_irq_register(KEY_ROW_IN_IRQ,0,KeyBoardISR);
}
void KeyBoardISR(void* context, alt_u32 id) __attribute__((section (".exceptions")));
void KeyBoardISR(void* context, alt_u32 id)
{
//reset irq,
keys=IORD_ALTERA_AVALON_PIO_EDGE_CAP( KEY_ROW_IN_BASE);
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_ROW_IN_BASE, 0x0);
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(KEY_ROW_IN_BASE,0);
keyboard_state=1;
}
По второму вопросу в том же "Nios II Software Developer’s Handbook" в главе "Exveption Handling" в табличке 8-1
для среднего, как Вы говорите( с буквой s) latency=10, Response Time=128, Recovery Time=130 Это все в клоках. Не быстро, прямо скажем. Это при условиях, описаных там:
All code and data is stored in on-chip memory.
■
The ISR code does not reside in the instruction cache.
■
The software under test is based on the Altera-provided HAL
exception handler system.
■
The code is compiled using compiler optimization level "–O3", or
high optimization.