ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
22 декабря
1218850
Dingo (28.06.2022 07:19, просмотров: 5357)
ADS1256 : как сделать обмен с понятной архитектурой программы? Дело в том, что у этого АЦП нельзя просто взять и записать занчение или получить данные. Часть команд должны выдерживать паузы до выставления данных или снятия SS/CS. Например, для RREG (прочитать регистр) выглядит так: 

* активировать CS,

* выдать команду в SPI;

* дождаться окончания транзакции SPI, задать количество читаемых регистров

* дождаться окончания транзакции SPI

* выждать паузу (timer)

* активировать SPI для чтения регистра(-ов)

* дождаться окончания транзакции

* выждать паузу t10 || t11 : (timer)

* новая команда || снятие CS

Как подобный обмен реализовывать, у кого есть опыт или мысли? Сейчас видится автомат состояний, который прокручивается из обработчиков прерываний SPI и таймера. Но этот автомат должен проходить разную последовательность шагов, как это задавать? Городить на каждый тип операции отдельный автомат - лениво и сложно, плодит сущности без необходимости. Задавать как-то последовательность шагов автомата для каждого типа обмена? (как?)

Ксения щупала эти АЦП https://caxapa.ru/777486.html , может поделится чем-то?


PS: Накатываем какую-нить ОС, хотя бы protothread, пишем task; задача сводится к обмену между задачами. Но, выражаясь Йодой, "вижу много граблей на этом пути я".