November 3rd, 2017

worklog: STM32F746 I2C через DMA.

Медленно думаю, много сплю, мрачная погода.
Решил, что надо себя развлечь и вернулся к ковырянию кода.
Всё готово к тому, чтобы перейти на обработку прерываниями и затем добавить синхронизацию через РТОС.
Итак, Collapse )

worklog: STM32F746 I2C через DMA. Забавный нюанс

Чем дальше я разбираюсь с тонкостями работы DMA в чипах STM32, тем бОльшее благоговение они у меня вызывают. Если и процессор, и каждый из периферийных модулей представляется мне эдакой коробочкой с контактами; то DMA это эдакое ... эдакий... короче, нечто типа профессора Мориарти или даже РЖД - глобальная система, протянувшая свои щупалки в каждую дырочку.

Collapse )

Теперь следующая итерация - заменить обмен данными через глобальную переменную на синхронизацию через семафоры или даже через очереди РТОС. Непонятно только, что будет с временем обработки - если цикл-крутилка на изменение переменной реагирует почти мгновенно, то у РТОС же есть какая-то гранулярность событий, быстрее чем за 1 тик она не реагирует.. или реагирует?