Do you have any documentation on how to register a GPIO pin as a interrupt
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
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;232233 //usleep(35);234 ret = ioctl(fd, SPI_IOC_MESSAGE(1), &spi);
we are have varied the speed_hz btween 1Mhz and 2Mhz
What would be helpful is a list of required device tree properties for the ADIS16448 like you have for the 16480. Or are they the same?