ADIS16448 registering Interrupt with driver

Do you have any documentation on how to register a GPIO pin as a interrupt 

Parents
  • 0
    •  Analog Employees 
    on Mar 12, 2019 10:04 PM over 1 year ago

    Thank you for posting your question in this forum and for your interest in the ADIS16448.  To be honest, I am not 100% sure that I understand what you are trying to accomplish.  Do you want the device to generate an interrupt signal or have some sort of functional response to an external interrupt signal?  Either way, what function will be tied to this interrupt?  Thank you!

  • I guess i should backup to the original problem .  We are seeing inconsistent data rates when using  ioctl(fd, SPI_IOC_MESSAGE(1), &spi) or iio_channel_attr_read(chn, "raw", buf, sizeof(buf));.  Ideally we would like to read the data in at 800Hz but 500Hz would be sufficient  .   

    HW configuration:   IMU is connected to the NVIDIA TX1 ,  DIO1 is not connected 

  • 0
    •  Analog Employees 
    on Mar 13, 2019 1:51 AM over 1 year ago in reply to jkrasz

    Thank you!

    First, the ADIS16448 produces data, based on its own internal clock.  It can be configured to support and external sync, that is different than an interrupt.  

    Second, how are you measuring the data rates?  Can you offer the range of rates that you are observing?

    Third, can you describe your read process in a logical sequence, with key timing insights? 

    Fourth, have you verified that you are meeting all timing criteria in the ADIS16448 dataheet?

  • we are measuring  how long ioctl or iio_channel_attr_read take .  the average time is about 500Hz , but it varies anyware from 200Hz to  1000Hz.   The slower and faster readings are typically sequential .

    In short we are just measuring how long the transaction blow takes 


    225 spi.tx_buf = (uint64_t)&tx;
    226 spi.rx_buf = (uint64_t)rx;
    227 spi.len = 2;
    228 spi.delay_usecs = 10;
    229 spi.speed_hz = frequency;
    230 spi.bits_per_word = 16;
    231 spi.cs_change = 1;
    232
    233 //usleep(35);
    234 ret = ioctl(fd, SPI_IOC_MESSAGE(1), &spi);

    we are have varied the speed_hz btween 1Mhz and 2Mhz 

Reply
  • we are measuring  how long ioctl or iio_channel_attr_read take .  the average time is about 500Hz , but it varies anyware from 200Hz to  1000Hz.   The slower and faster readings are typically sequential .

    In short we are just measuring how long the transaction blow takes 


    225 spi.tx_buf = (uint64_t)&tx;
    226 spi.rx_buf = (uint64_t)rx;
    227 spi.len = 2;
    228 spi.delay_usecs = 10;
    229 spi.speed_hz = frequency;
    230 spi.bits_per_word = 16;
    231 spi.cs_change = 1;
    232
    233 //usleep(35);
    234 ret = ioctl(fd, SPI_IOC_MESSAGE(1), &spi);

    we are have varied the speed_hz btween 1Mhz and 2Mhz 

Children