-
- Я бы делал 2 автомата состояний. 1) В main() высокоуровневый - проверяет наличие готовых данных от АЦП, состояния: IDLE, BUSY, DATA_READY. 2) В прерывании по завершении SPI-передачи. Там вот все состояния, что вы выше написали, а в конце выставляется DATA_READY. Ну, или взять FreeRTOS и между задачами гонять сигналы/события/др. Costic(1 знак., 28.06.2022 18:08, ссылка)
- * активировать CS Andrey190(271 знак., 28.06.2022 12:13)
- А тут да, спасибо: лишние вход-выход в прерывание можно выкинуть. - Dingo(28.06.2022 12:27)
- как часто нужно вычитывать данные из ADS1256? может можно сделать
частоту обмена по SPI 50кГц? тогда можно писать и читать с DMA за
один проход - Andrey190(28.06.2022 11:18)
- Вы пропустили важный момент: в обмен нужно вставлять паузы. - Dingo(28.06.2022 11:51)
- за счет низкой частоты пауза будет сформирована автоматически - Andrey190(28.06.2022 12:00)
- По-моему, это вы пропустили момент. Если частота SPI достаточно
низкая, то никакие паузы уже не нужны. - SciFi(28.06.2022 11:56)
- +1, у меня это самый АЦП вот так конда-то был заговнокожен: Moлoдoй кoллeгa(1810 знак., 28.06.2022 17:41)
- Если частота достаточно низкая, то я не успею сделать весь цикл обмена во временном окне. - Dingo(28.06.2022 11:59)
- Вы пропустили важный момент: в обмен нужно вставлять паузы. - Dingo(28.06.2022 11:51)
- А чем не устраивает просто хранить результаты АЦП в памяти, в виде
банального массива наиболее актальных результатов? Cкpипaчпророк(138 знак., 28.06.2022 09:46)
- В конечном виде так и будет: набрали объём данных с АЦП - готовы отдавать(до этого - ни-ни); измерения обработчик будет складывать в заведомо больший буфер (наполняем по одному, отдаём пачкой в N). совместно с этим ещё будет жить другая задача с общением по сети, вот и думаю, как раскидать (и бедуинов спрашиваю). Это я одну команду описал, а там такая последовательность, одна из необходимых: Dingo(82 знак., 28.06.2022 10:04, картинка)
- не вижу проблем, похоже что вы усложняете! паузу делайте N кол-вом
nop, точности там не нужно, самое главное чтоб не меньше
положенного. Да и задержкой на самом деле такой тайминг назвать
сложно t6 == 50 * 1/fCLKIN - Aleksey_75(28.06.2022 08:47)
- А потом отдали управление дальше, другой функционал долго держал
проц, в результате мы не успеем начать следующий сэмпл в
назначенное время. Не, не пойдёт. Надо по прерываниям размазывать.
Для msp430 был пример, что проц всё делает в перываниях, остальное
спит, вот оно ближе. Тут вроде где-то называли такое "биглуп
наизнанку". UPD: Нашёл, перечитаю на несколько раз. Dingo(14 знак., 28.06.2022 08:55 - 10:49, ссылка, ссылка)
- частота SPI какая ? - Aleksey_75(28.06.2022 08:58)
- А потом отдали управление дальше, другой функционал долго держал
проц, в результате мы не успеем начать следующий сэмпл в
назначенное время. Не, не пойдёт. Надо по прерываниям размазывать.
Для msp430 был пример, что проц всё делает в перываниях, остальное
спит, вот оно ближе. Тут вроде где-то называли такое "биглуп
наизнанку". UPD: Нашёл, перечитаю на несколько раз. Dingo(14 знак., 28.06.2022 08:55 - 10:49, ссылка, ссылка)
- Вангую, вы незнакомы с protothreads. Это те же конечные автоматы,
но код выглядит, как поток. Очень удобно для вот таких вещей в том
числе. - SciFi(28.06.2022 07:41)
- Знаком, практиковал, но не то, чтобы много; потому и упоминал. Там
ещё сеть крутится, вот её не уверен, что прикручу. Думаю в сторону
Контики: лишнее выкинуть, своё добавить - как раз её
применение(ниша) и будет. - Dingo(28.06.2022 07:45)
- Микроскопом гвозди заколачивать, ИМХО. - SciFi(28.06.2022 07:47)
- В общем-то да, сеть в отдельный PT завернуть - и решение готово.
Подумаю, может и да. - Dingo(28.06.2022 07:50)
- Кстати, protothreads — это не ОС. Загляните, что там внутри, это несколько не очень хитрых макросов. А задачка про АЦП, которую вы описали, тривиально решается без прерываний в обычной схеме Big Loop. Там, конечно, возникает джиттер, связанный с природой Big Loop, но на этот счёт требования озвучены не были. Может быть, это всё, что вам нужно. - SciFi(28.06.2022 07:55)
- В общем-то да, сеть в отдельный PT завернуть - и решение готово.
Подумаю, может и да. - Dingo(28.06.2022 07:50)
- Микроскопом гвозди заколачивать, ИМХО. - SciFi(28.06.2022 07:47)
- Знаком, практиковал, но не то, чтобы много; потому и упоминал. Там
ещё сеть крутится, вот её не уверен, что прикручу. Думаю в сторону
Контики: лишнее выкинуть, своё добавить - как раз её
применение(ниша) и будет. - Dingo(28.06.2022 07:45)