Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
10 years ago

how to pass a pointer or array name to the interrupt function?

hi

i register a interrupt in nios, and it works well

alt_ic_isr_register (NIOS_FT245_INTERFACE_0_IRQ_INTERRUPT_CONTROLLER_ID,

NIOS_FT245_INTERFACE_0_IRQ,

ft245_interrupt,

NULL,

NULL);

i want to pass a pointer or array name to the interrupt function ft245_interrupt, how can i do it?

thanks!

3 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    The documentation for the HAL functions are in altera_hal_api.pdf. Whatever you give to the context arg will be passed to your isr function. In your code this is the first NULL.

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    hi, i tried and it works!

    this is the code:

    void ft245_interrupt(alt_u32 precision_data[500])

    {

    .....

    }

    int main()

    {

    alt_u32 i=0;

    alt_u32 precision_data_1[500]={0};

    i=alt_irq_enabled();

    alt_ic_isr_register (NIOS_FT245_INTERFACE_0_IRQ_INTERRUPT_CONTROLLER_ID,

    NIOS_FT245_INTERFACE_0_IRQ,

    ft245_interrupt,

    precision_data_1,

    NULL);

    but the eclipse give me a warning

    Description Resource Path Location Type

    passing argument 3 of 'alt_ic_isr_register' from incompatible pointer type hello_world.c /project3 line 99 C/C++ Problem
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    The warning is because the type of your ISR function argument doesn't match what alt_ic_isr_register expects which is (void *). Try using (void *)precision_data_1 for that argument.

    Edit: wrong argument.