реклама на сайте
подробности

 
 
> Драйвер ADC через IIO, Не стартует циклическое преобразование АЦП по триггеру sysfs
Mihey_K
сообщение Jun 24 2015, 08:47
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 156
Регистрация: 27-09-06
Из: Irkutsk
Пользователь №: 20 747



Ку.
Вступление: есть драйвер АЦП ADS8638 чере IIO, в нем обработчик прерывания с проталкиванием данных от SPI в кольцевой буфер iio. Запуск сбора от триггера sysfs (sysfstrig1): echo 1 > /sys/bus/iio/devices/iio_sysfs_trigger/trigger1/trigger_now. Чтение данных примером generic_buffer.c из устройства /dev/iio:device1 с блокировкой через вызов poll.
Пример:
Код
/* Обработчик */
static irqreturn_t ads8638_trigger_handler(int irq, void *p)
{
    struct iio_poll_func *pollfunc = p;
    struct iio_dev *idev = pollfunc->indio_dev;
    struct ads8638_state *state = iio_priv(idev);
    ssize_t ts_offset;
    u16 buf;
    int ret;

    ret = spi_read(state->spi, (u8 *)&state->rx_buf[0], 2);

    if (idev->scan_timestamp) {
        ts_offset = idev->scan_bytes / sizeof(s64) - 1;
        ((s64 *)state->rx_buf)[ts_offset] = pollfunc->timestamp;
    }

    iio_push_to_buffers(idev, (u8 *)state->rx_buf);
    iio_trigger_notify_done(idev->trig);

    return IRQ_HANDLED;
}

/* Настройка в probe */
ret = iio_triggered_buffer_setup(idev, &iio_pollfunc_store_time, \
            &ads8638_trigger_handler, &ads8638_ring_setup_ops);

static const struct iio_buffer_setup_ops ads8638_ring_setup_ops = {
    .preenable = &ads8638_ring_preenable,
    .postenable = &iio_triggered_buffer_postenable,
    .predisable = &iio_triggered_buffer_predisable,
    .postdisable = &ads8638_ring_postdisable,
};

Платформа: встраиваемая с ядром 3.8.13.

Вопрос: почему при запуске сбора прерывание происходит только один раз после команды echo 1 > /sys/bus/iio/devices/iio_sysfs_trigger/trigger1/trigger_now, в остальное время процесс generic_buffer висит в ожидании poll? Если повторно дать команду echo, то снова происходит прерывание и generic_buffer успешно завершается независимо от переданной при его запуске длине данных.


--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 1)
Mihey_K
сообщение Jun 24 2015, 14:25
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 156
Регистрация: 27-09-06
Из: Irkutsk
Пользователь №: 20 747



Тема получила развитие на лоре


--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 23:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01327 секунд с 7
ELECTRONIX ©2004-2016