bookmender 0 8 января, 2020 Опубликовано 8 января, 2020 · Жалоба Здравствуйте. Надумал измерять расстояние комбинацией STM32-AD7746. AD7746 по счастливому стечению обстоятельств работает с I2C. Подскажите, как с помощью HAL-прерываний прописать общение обоих чипов? Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 8 января, 2020 Опубликовано 8 января, 2020 · Жалоба HAL-прерывания тут не нужны. Делаете так: Берёте пачку любого из чипов STM32 или AD7746; выкладываете ими измеряемое расстояние (вплотную друг к другу!); считаете количество уместившихся чипов; при помощи даташита (или штангенциркуля) узнаёте размер корпуса чипа; умножаете на количество. Всё - расстояние получено. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 8 января, 2020 Опубликовано 8 января, 2020 · Жалоба 3 hours ago, bookmender said: Подскажите, как с помощью HAL-прерываний прописать общение обоих чипов? Ох, не с того вы начали. Начните с теории, и множество вопросов отпадут сами собой. Сейчас же в инете полно различных примеров для быстрого старта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 42 8 января, 2020 Опубликовано 8 января, 2020 · Жалоба 16 minutes ago, haker_fox said: Ох, не с того вы начали. Начните с теории, и множество вопросов отпадут сами собой. Сейчас же в инете полно различных примеров для быстрого старта. Так ТС и пошел по пути быстрого старта - HAL & CUBE Сейчас многие начинающие даже ни одной книжке по Си не читают, а так как-то по наитию действуют ))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 35 8 января, 2020 Опубликовано 8 января, 2020 · Жалоба 5 часов назад, bookmender сказал: Надумал измерять расстояние комбинацией STM32-AD7746. AD7746 по счастливому стечению обстоятельств работает с I2C. Подскажите, как с помощью HAL-прерываний прописать общение обоих чипов? А вы нам расскажите, что надумали :). Я сама раньше с AD7745 имела дело - он почти такой же, как ваш AD7746, только входов меньше. Но не с STM32 я его стыковала, а с X-Мегой. Прерывания там действительно могут быть задействованы для оперативной реакции на сигнал готовности данных (RDY). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 9 января, 2020 Опубликовано 9 января, 2020 · Жалоба 8 hours ago, dimka76 said: Сейчас многие начинающие даже ни одной книжке по Си не читают Да ладно по Си, так ведь и Тургенева, Чехова тоже...((( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 9 января, 2020 Опубликовано 9 января, 2020 (изменено) · Жалоба А мне вот интересно: как ТС собирается при помощи АЦП расстояние измерять? Вообще же, вопрост так тупо задан, что на SO его сразу же закрыли бы как невалидный! Похоже, ТС не слышал о том, что в правильно заданном вопросе содержится уже половина ответа. Иначе сразу выложил бы схему, код, свои соображения по поводу того, почему его код не работает, попросил бы совета... И ему сразу же посоветовали бы выбросить калокуб и не заниматься чушью! Изменено 9 января, 2020 пользователем Eddy_Em Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 168 9 января, 2020 Опубликовано 9 января, 2020 · Жалоба AD7746 не АЦП, а измеритель ёмкости — соответственно, датчик у автора емкостной. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harbinger 10 9 января, 2020 Опубликовано 9 января, 2020 · Жалоба В отладочной плате от AD содержится переменный конденсатор-"ползунок", именно для демонстрации измерения перемещения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bookmender 0 9 января, 2020 Опубликовано 9 января, 2020 · Жалоба Почитайте на досуге https://www.anekdot.ru/id/997169/ Если кто-то сталкивался с i2c, hal и stm32 вкупе и готов помочь, буду признателен. Мне проект интересен и я хочу его закончить. Если чего-то не хватает, допишу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bookmender 0 9 января, 2020 Опубликовано 9 января, 2020 (изменено) · Жалоба 17 часов назад, Xenia сказал: А вы нам расскажите, что надумали :). Я сама раньше с AD7745 имела дело - он почти такой же, как ваш AD7746, только входов меньше. Но не с STM32 я его стыковала, а с X-Мегой. Прерывания там действительно могут быть задействованы для оперативной реакции на сигнал готовности данных (RDY). Расстояние надумал измерять. Вот, представьте себе лазер, режущий железку какую-нибудь. (чтоб камень не кинули - деталь вырезают, гравируют или сваривают). Чтобы постоянно держать равное расстояние между форсункой лазера и железкой )), мне нужно емкостным методом измерить расстояние до нее. Для этого я взял AD7746. (На всякий случай с двумя выходами. Тема для меня новая.) Паровать их можно через i2c. Другой коммуникации не нашел. В принципе, у меня есть файл от ST с примером применения i2c с hal через прерывание. Но до конца пока не разобрался. Поллингом не хочу делать, ибо процессорные мощности могут понадобится для расчета емкости. Ах да! Использую STM32F303RE, EVAL-AD7746EBZ. И жмень проводов )) Изменено 9 января, 2020 пользователем bookmender Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harbinger 10 9 января, 2020 Опубликовано 9 января, 2020 · Жалоба У самих ADI есть примеры кода. Спойлер (как по мне, имеет место избыточность) https://wiki.analog.com/_media/resources/tools-software/uc-drivers/renesas/ad7746_generic.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 9 января, 2020 Опубликовано 9 января, 2020 (изменено) · Жалоба 1 hour ago, bookmender said: В принципе, у меня есть файл от ST с примером применения i2c с hal через прерывание. Но до конца пока не разобрался. Поллингом не хочу делать, ибо процессорные мощности могут понадобится для расчета емкости. За это время можно было бы уже наизусть выучить те несколько страниц RM, в которых говорится об I2C. И, между прочим, можно с I2C через DMA работать. Тогда накладных расходов будет значительно меньше. А факт приема получим по флагу, выставленному по окончанию DMA-транзакции. А если вместо нормального подхода хочется хал использовать, то почитать документацию хала. Коль оба пункта не выполнены, то тему нужно было в JOB размещать! P.S. У ST можно скачать отличный набор сниппетов. Правда, только под STM32F0, но их легко портировать и на другие серии. И никакой кал не понадобится! В упомянутых сниппетах есть и работа с I2C через DMA!!! Изменено 9 января, 2020 пользователем Eddy_Em Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bookmender 0 9 января, 2020 Опубликовано 9 января, 2020 · Жалоба Почему лучше с DMA, чем без? Мне кажется, я скачал такой набор. Там куча примеров для периферии процессора. Я правильно излагаю? Правда, примеры с HAL(чем плох?). Как раз пытаюсь настроить его под свою программу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 9 января, 2020 Опубликовано 9 января, 2020 · Жалоба Потому что передавать N байт с DMA — почти ненапряжно для МК. А передавать N байт по прерываниям — придется каждый новый байт в прерывании отправлять, тогда уж может быть проще вообще блокирующие операции выполнять. Хал плох тем, что не дает понять, как оно там внутри работает. Плюс он дает уйму оверхеда. Ну и дополнительный минус - помимо чтения RM и даташита на МК все равно придется читать документацию на этот самый хал. Со сниппетами намного удобней: скопировал к себе, да подправил чуть при помощи даташита на МК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться