Перейти к содержанию

STM32 для чайника


ART_ME

Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Только что, dosikus сказал:

вменяемый код

Вменяемый кому и куда? Пиши уже прям на асме. А то если сравнить асм, выдаваемый компилятором с вменяемым кодом, то это ж ужас просто! открою страшную тайну, каким бы ни был код для настройки периферии, на скорость работы он не влияет. От слова НИКАК! А красивый он или страшный вообще побоку. На выставку его не нести! А вот после того, как МК настроен, никто не мешает писать нормальный код, хоть с HAL, хоть без него. Мне вот HAL нигде кроме настройки МК не нравится, для меня код менее читаемым становится.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Только что, dosikus сказал:

одновременно

Хватит один и тот же перл повторять по кругу. Ты их даже опростить одновременно НЕ можешь, это тебе не ПЛИС. Тут все будет происходить ПО ОЧЕРЕДИ, даже если тебе хочется верить в обратное. Быстро да, согласен. Но не одновременно.

Ссылка на комментарий
Поделиться на другие сайты

Только что, dosikus сказал:

у меня же все работает.

Работает. Но НЕ одновременно. Даже с DMA опрос будет НЕ одновременным. В ПЛИС да, можно параллельно выполнять задачи, но не в МК. Да, и где же твои проекты. Пока только беспредметный треп. 

Ссылка на комментарий
Поделиться на другие сайты

Весь этот разговор уже проходили, чего вы опять за старое то взялись? Поговорить что-ли больше не о чем... Я б пивка лучше попил.

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

да не, вопросы задавать нужно, но только в отдельных темах (своих). А то на старые темы флудеры подписываются и как только появляется пост, они тут как тут

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, BARS_ сказал:

Отравить одновременно запросы невелика наука.

О как, только что это было невозможно... :)

Для этого надо забросить калокуб подальше и осознать работу периферии.

Опишу вкратце :

 3 канала DMA 

Один заносит тайминги в таймер 

Второй гонит данные в порт.

Третий собирает данные с порта.

По окончанию трансфера  не спеша парсим буфер.

 

Но вы продолжайте превозносить калокуб и наместника его на земле , мышь ссущуювтапки...

Ссылка на комментарий
Поделиться на другие сайты

так я и не понял - в чем заключается сакральная хитрость то именно аппаратной работы с 16-ю каналами? Все вышеописанное запросто сконфигурируется даже в калокубе.

Понял как работать с дма и быстренько записал себя в гении чтоли?

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, dosikus сказал:

накалокубьте  работу с 16 1wire датчиками одновременную и аппаратную.

Уже было озвучено.  Посмотрим - свершиться ли сие , даже после подробного пинка?????????? :)

Изменено пользователем dosikus
Ссылка на комментарий
Поделиться на другие сайты

Только что, dosikus сказал:

О как, только что это было невозможно

Речь шла про ОДНОВРЕМЕННУЮ работу  с 16 датчиками. У тебя же только одновременно проходит запрос, а в обработке одновременностью и не пахнет. И где ж твоя хваленная одновременная работа? Аппаратность тут тоже под большим вопросом

Изменено пользователем BARS_
Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, BARS_ сказал:

а в обработке одновременностью и не пахнет

да не, с регистра порта он читает одновременно. Просто таймслоты то для всех одинаковые будут и они отсчитываются таймером. А по триггеру идет запрос и просто чтение из регистра данных порта. Обработка потом только софтовая идет. Но какой в этом смысл? Ерзать 16-ю ногами на шине, скорость которой обычно совершенно не важна и равна скорости улитки по сравнению с истребителем. Товарищ просто выпендривается.

Накалокубить такое на самом деле совершенно несложно. Руками потом только стартануть все это чудо. Только оно реально нафик никому не нужно, тем более повторять подвиги Сизифа на слабО

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

Только что, mail_robot сказал:

да не, с регистра порта он читает одновременно

Так а толку? Одновременная работа подразумевает и одновременную обработку результатов. А так он точно так же мог читать каналы по очереди. Один фиг время обработки результата много меньше времени чтения данных...

Ссылка на комментарий
Поделиться на другие сайты

обрабатывать такие данные можно на лету. Получится типа одновременность. Байт считал, по очереди задвинул биты в 16 переменных в прерывании ДМА и пошел курить в основную программу. Конец приема - данные по сути готовы.

Но опять же повторюсь - это не аппаратная обработка. Это просто тот же парсинг с использованием ДМА. Аппаратного блока обработки нет и никогда небыло. Так же как и остальных выдумок индивида, которые он перечислял по моей просьбе. Я то надеялся на чудо

@BARS_ Ваша версия с использованием UART и 16-ю датчиками на проводе будет работать действительно аппаратно и куда элегантнее

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

Повторю еще раз для особо сообразительных :

трансфер происходит полностью аппаратно, сконфигурили связку , пнули - данные в буфере.

все 16 датчиков обрабатываются одновременно.

есть масса причин, когда большое количество 1wire устройств - неприемлемы на одной линии. Одна из них время опроса.

И еще раз - вам озвучили достаточно интересную задачу, которая довольно-таки просто решается, знай вы железо.... :)

 

Изменено пользователем dosikus
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • понятно. но у каждого свои приемы и привычки программирования. у меня в разных проектах "разметка" времени сделана по разному, но везде привязка к реальному времени по таймеру. например, с динамической индикацией таймер работает по 2 мс, и в прерывании выводится очередной разряд индикации. потом счетчик-таймер по 10 мс (5 х 2 мс) - для тех дел, которые нужно делать почаще, интерфейс с компом, обработка кнопок и что-нибудь другое. потом счетчик-таймер по 1 секунде (100 х 10 мс) - именно для работы в реальном времени. тут может быть секундомер, если он нужен, и остальная ежесекундная работа. а есть регулируемый БП (есть моя тема на этом форуме), где таймер тикает по 1/512 секунды. и по таймеру делается 256 измерений напряжения и 256 измерений тока. то есть, 512 измерений за 1 секунду. но и там есть счетчик для "короткого" цикла для "частых" дел (по 1/64 секунды == 15,625 мс).
    • Чем измерено 30 вольт на стирающей Яузы ?   Вольтметр должен быть высокочастотным - там частота порядка  100 кГц !
    • 30 B cкорее всего нормально. Смотрите как лента прилегает к головке. Можно ещё заменить стирающую головку для проверки. А ток подмагничивания подстраивается тестовой записью. Есть куча методик. Одна из них – записать с уровнем ЕМНИП -10dB cигнал из трёх синусов: 315 Гц, 1 КГц и где-то 8 КГц.  Если ток подмагничивания завышен, 8 КГц будет при воспроизведении слабее, чем 1 КГц. Если занижен, 315 Гц будет ниже. Нужно добиться одинакового уровня воспроизведения всех трёх частот. Сейчас я бы компом сгенерил "белый" шум и записал его с уровнем -10 dB. А потом программой-просмотрщиком спектра смотрел записанный результат. Если подъём на НЧ – ток подмагничивания большой. Если на ВЧ – маленький. И подстройкой добиться наиболее ровного спектра при воспроизведении.
    • Согласен, для большей стабильности нужно всегда вычитывать  UDR. ISR(USART_RXC_vect) { char rxb = UDR; if (!(flags & FLAG_END_RX)){ rx_buf[buf_index] = rxb; if (rxb == 0x0D){ flags |= FLAG_END_RX; buf_index = 0; return; } buf_index++; if (buf_index >= BUF_SIZE){ buf_index = 0; flags |= FLAG_ERR_RX; } } }   Признак окончания приема на усмотрение @tifaso
×
×
  • Создать...