Уборка сахарного тростника. Сезонная. Пайка кастрюль. Сдельная. Предложения работы.
Ответить

FreeRTOS ADC

Пт апр 08, 2022 10:12:59

Всем привет.

Нужна помощь в написании таски во FreeRTOS для STM32F103C8T6, измеряющей напряжения. Подробнее - в ЛС.

Re: FreeRTOS ADC

Пт апр 08, 2022 17:31:47

Пример из SPL 103 непрерывная работа с DMA.

Re: FreeRTOS ADC

Пт апр 08, 2022 18:03:39

Так а что там писать то? Создали задачу, в её цикле пишите софтовый запуск АЦП с выбранного канала (каналов) и ожидаете флага завершения преобразования. Получив флаг, читаете регистр данных и пересчитываете значение в напряжение. Затем останавливаете задачу на некоторое число тиков систаймера.

Re: FreeRTOS ADC

Сб апр 09, 2022 14:27:52

Так а что там писать то? Создали задачу, в её цикле пишите софтовый запуск АЦП с выбранного канала (каналов) и ожидаете флага завершения преобразования. Получив флаг, читаете регистр данных и пересчитываете значение в напряжение. Затем останавливаете задачу на некоторое число тиков систаймера.



Очень рад за Вас, если для Вас это так просто. У меня не получается, поэтому обращаюсь за помощью.

Re: FreeRTOS ADC

Сб апр 09, 2022 20:41:46

В общем случае выглядит вот так:
Код:
void prvVoltage(void *pvParameters)
{
   int voltage;
#define SCALE_FACTOR   10000 / 4096
   
   for(; ;)
   {
      ADC1->CR2 |= ADC_CR2_ADON;
      while(!(ADC1->SR & ADC_SR_EOC));
      
      voltage = ADC1->DR * SCALE_FACTOR;
      
      vTaskDelay(200);
   }
}

Re: FreeRTOS ADC

Сб апр 09, 2022 21:48:39

Нужна помощь в написании таски, измеряющей напряжения. То есть несколько каналов одного АЦП. Один канал я и сам измеряю, а вот несколько - не получается.

Вот само задание (если совсем в идеале), в нем же ссылка на проект в кубе и кейле. Хотелось бы хотя бы измерять несколько каналов АЦП.
https://docs.google.com/document/d/1pGB ... sp=sharing

Re: FreeRTOS ADC

Вс апр 10, 2022 08:04:31

Мы, обычно, если чето не получалось, мы читали мануалы. Там, в принципе, по тому же принципу, только внести в список каналов нужные, и они друг за другом будут запускаться каждый раз, когда устанавливается бит запуска.
Ну ладно, а сколько вы готовы оплатить за сию поделию? А то в первом мессаге нужно было только одну эту таску написать (я написал!), а тут уже выясняется, что надо целый прожэкт под ключ, да еще и с объяснениями что куда. Курсовик чтоль? Ээээ блин, чувак, щас надо страну возрождать из руин, а вы...

Re: FreeRTOS ADC

Вс апр 10, 2022 11:00:28

Уважаемый, ты лишний раз доказываешь тезис о том, что на зарубежном форуме на заданный вопрос человеку получает ответ, а на российском форуме человеку объясняют, что он не прав.

Нет, это не курсач, да и я давно вышел из студенческого возраста - я разбираюсь для себя.

Re: FreeRTOS ADC

Вс апр 10, 2022 11:27:07

Вот и задайте на зарубежном форуме вопрос :) Подобные вопросы на русских форумах просто не возникают, потому как наш народ умеет самостоятельно решать такие мелочи. Ну и коль вопрос задан в разделе "Есть работа", то такая работа подразумевает оплату. В противном случае - задавать надо в общем разделе.
Хотя, я тут уже всё рассказал - просто внесите в список каналов все необходимые каналы и запускайте преобразование программно, ожидая его завершения. Все каналы будут поочередно измеряться, по этому списку.

ЗЫ. Про зарубежные форумы. Хех, вышеприведенная байка - всего лишь байка, почти не имеющая оснований. У них, у басурман, зачастую под напускной вежливостью скрывается простое незнание того, о чем спрашивают, либо неумение читать между строк и просьба конкретно описывать от и до. В этом случае ихний ответ выглядит так: "Боюсь, мы не понимаем, какая проблема у вас возникла. Опишите более подробно." Как-то давно на одном ихнем вебинаре как раз по FreeRTOS я отнефик делать задал дежурный вопрос (ответ на который знал и сам), просто для поддержания беседы и якобы заинтересованности. И минут 15 пытался объяснить им че я хочу услышать, а в ответ был такой вот тупняк "Боюсь, мы не понимаем, с какой проблемой вы столкнулись". При том, что мой английский был вполне нормальный, я даже на всякий случай перепроверял через переводчик.
Последний раз редактировалось НовыйДень Вс апр 10, 2022 13:02:34, всего редактировалось 2 раз(а).

Re: FreeRTOS ADC

Вс апр 10, 2022 11:28:17

То есть без прерываний и без DMA?

Re: FreeRTOS ADC

Вс апр 10, 2022 11:30:48

Ну да. А че такого то. Это же RTOS, тут вообще пофик. Ну, почти пофик. Большой разницы в данном прожэекте вообще не будет, через DMA делать или программно поочереди.
А коль всенепременно хотите через DMA, тогда перед запуском цикла преобразований в начале цикла задачи вносите в список АЦП каналов нужные каналы, настраиваете число преобразований. Настраиваете и запускаете канал DMA, указав то же самое число замеров, и включаете прерывания по завершению передач DMA. Однократно запускаете преобразование и ожидаете семафора (а лучше приема уведомления Task Notification) из прерывания по заверению передач DMA. После получения Task Notification читаете принятые через DMA данные, переводите их в вольты, закидываете их в очередь для дисплея. И отправляете задачу в ожидание на некоторое время, чтобы получить некоторые интервалы замеров, например 10 раз в секунду.
Пишите обработчик прерываний DMA, в котором по завершении транзакций DMA выставляете семафор (а лучше даете Task Notification).

Re: FreeRTOS ADC

Вт апр 12, 2022 00:10:28

Неактуально
Ответить