Size: a a a

2019 December 11

А

Антон in STM32
выставлять флаг того что нужно сделать,  выполнять задачу с двух-трёх заходов и отсрочку выполнения делать (osDelay) 10-15 мс?
источник

А

Антон in STM32
как обычно много слов и мало сути: по флагу я писал-контролировать состояние флага, и на основании его, после отправки 2-3 раза выполнять задачу до тех пор пока не изменить состояние ножки CheapSelect. ну и в первом сообщении не уточнил, работа с SPI естественно отдельная задача. и очередь у неё отдельная.
источник

s

stD in STM32
"Странно, вроде я и был тут, но пришлось заново добавляться" Я на днях случайно удалил группу, это новая.
источник

s

stD in STM32
Михаил Обухов
Разобрался почему у меня не работало так как надо, дело в том, что CubeMX генерировал инициализацию не в том порядке. Он сначала MX_GPIO_Init(); MX_ADC1_Init(); MX_DMA_Init(); генерировал, а стоило поменять местами инициализацию АЦП и DMA местами, как всё заработало!
Этому есть объяснение, которое конечно же следовало бы где-то написать большими буквами ))). И в этом нет вашей вины, равно как и нельзя это отнести к "глюкам".

Дело в том, что вы сначала настроили АЦП обычно (без ДМА), сгенерировали проект и поигрались, а ДМА настроили после этого! Поэтому Куб и прописал инициализацию ДМА после инициализации АЦП, так не умеет предугадывать мысли разработчиков))).

Вы можете это прверить если отключите в Кубе всё что связано с АЦП, а потом настроить заново с ДМА - инициализация будет прописана правильно.

Я сейчас пишу статью про ДМА и обязательно акцентирую на этом внимание.
источник

МО

Михаил Обухов in STM32
А почему могут прыгать показания с датчика TMP36. Значение АЦП прыгает от 400 до 900, датчики кривые или не правиль опять что-то настроил? Питания блу пил от USB, датчик запитан от 3.3в. Длина проводов где-то 30-40см.
источник

s

stD in STM32
Замкните вход АЦП на землю, и посмотрите на показания - должен быть ноль. Замкните вход АЦП на "плюс" и посмотрите что кажет. Потом расскажите.
источник

s

stD in STM32
И ещё, вы увеличили Sample Time ?
источник

s

stD in STM32
И ещё, что ещё подключено к плате?
источник

МО

Михаил Обухов in STM32
При замыкании на + 4090-4095, если на минус то 0-1. Время семплирование менял, результат не менялся. Кроме датчика ниччего нет. Датчики заказывал в китае.
источник

s

stD in STM32
"При замыкании на + 4090-4095, если на минус то 0-1." - С АЦП всё в порядке.

Я когда то давно тоже пользовал эти датчики, и у меня их тоже "трясло" сильно. Я тогда конденсатор ставил (нехорошо конечно, но пришлось).

Попробуйте подать питание получше и смотрите результат. Только если подаёте питание на ногу, тогда питание от ЮСБ уберите, то есть чтоб один источник был.
источник

s

stD in STM32
Попробуйте минимизировать длину проводов. Надёжность контактов посмотрите. Что-то уж сильно показания плавают.
источник

s

stD in STM32
И ещё, попробуйте почитать один датчик (у вас же их несколько вроде как), в обычном режиме, без всяких ДМА и прочего.
источник

МО

Михаил Обухов in STM32
В обычном режиме один датчик и пробую прочитать. Вот только странно, если меряю цешкой выход датчика подключенного к АЦП МК, то показывает 380-390мВ, а если на датчик подать тоолько питания(отцепить выход от АЦП) и мерить выход то 260-270мВ
источник

s

stD in STM32
"Вот только странно, если меряю цешкой выход датчика подключенного к АЦП МК"  - это бессмысленное занятие, так ацп вносит свои изменения в показания мультиметра, а мультиметр в свою очередь вносит "помехи" в ацп.

АЦП самое сложное и хрупкое устройство в МК, на него влияет всё, даже ваше настроение )))
источник

JD

John Doe in STM32
stD
"Вот только странно, если меряю цешкой выход датчика подключенного к АЦП МК"  - это бессмысленное занятие, так ацп вносит свои изменения в показания мультиметра, а мультиметр в свою очередь вносит "помехи" в ацп.

АЦП самое сложное и хрупкое устройство в МК, на него влияет всё, даже ваше настроение )))
у камней постарше есть вроде калибровка ацп
источник

А

Антон in STM32
stD
"Странно, вроде я и был тут, но пришлось заново добавляться" Я на днях случайно удалил группу, это новая.
понял, бывает.... а по SPI в общем, ночь эксперементов и вывод-надо писать библиотеку которая тоже будет vTaskDelayUntil использовать, и считать сколько на каждую порцию данных будет уходить времени..
источник

А

Антон in STM32
ни кто не заморачивался? а то я только с i2c для дисплеев закончил. а тут заново(
источник

s

stD in STM32
John Doe
у камней постарше есть вроде калибровка ацп
Калибровка не имеет отношения у плаванью показаний. И у БлюПилл она есть.
источник

s

stD in STM32
Антон
понял, бывает.... а по SPI в общем, ночь эксперементов и вывод-надо писать библиотеку которая тоже будет vTaskDelayUntil использовать, и считать сколько на каждую порцию данных будет уходить времени..
Не понимаю при чём тут vTaskDelayUntil, это просто пауза, которая начинает отсчёт с момента перехода задачи в состояние Running.

А по теме, я честно говоря не сильно в теме SPI, но всё же спрошу - может как-то ДМА поможет, типа отправил и забыл, а потом ждёшь прерывания по завершению передачи, и в обработчике что-то поделывать...
источник

А

Антон in STM32
кстати да.. я почему-то всегда против ДМА. надо попробовать обойти этот момент. а vTaskDelayUntil-ом удобно считать. можно гарантированно дождаться завершения передачи данных. после чего уже продолжить выполнение когда в программе.
источник