![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
adnega
Свой-
Постов
3 594 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Весь контент adnega
-
Посоветуйте задания для детей
adnega ответил Diusha тема в В помощь начинающему
Неа. Есть некоторое количество палочек. Игроки по очереди берут одну, две или три палочки. Кто забирает последнюю, тот проиграл. У этой игры есть простая стратегия выигрыша, и если противник хоть раз ошибется, то ваша победа гарантирована. -
Посоветуйте задания для детей
adnega ответил Diusha тема в В помощь начинающему
Есть у меня attiny10 в SOT23-6. Периодически с дочкой занимаемся электроникой. На тему динамического обновления сделали интересный макет. К трем оставшимся пинам МК подключили три кнопки и 6 светодиодов с независимым управлением. Сделали: двоичный счетчик с запуском/остановкой/сбросом; двоичный калькулятор с накоплением; игру "палочки", причем, МК всегда выигрывает человека (или почти всегда, если при первом ходе человек не допустит ошибку). -
Посоветуйте задания для детей
adnega ответил Diusha тема в В помощь начинающему
Рекомендую Scratch. Там, вроде, и материалы для преподавателей есть. Можно довольно просто сделать несложные мультики/игрушки. А можно и робота LEGO (Boost) или arduino (mBlock) запрограммировать. -
Ваш осциллограф находится в Госреестре. Это должно быть существенным плюсом для тех, кому нужно СИ. Для тех, кому просто посмотреть (а их большинство) есть много интересных современных моделей за порядок цен, указанный вами. Например, Hantek DSO4254C стоит в диапазоне 34(Китай)..54(РФ) тыр. По-моему, вариантов не много: 1) либо не продавать; 2) либо за 10 тыр продать тому, кому "посмотреть"; 3) либо найти того, кому "измерять", но вопрос с поверкой открытый.
-
Измерение шума RMS
adnega ответил whale тема в Вопросы аналоговой техники
Может, реальная полоса сигнала не нулевой ширины: на спектр 18МГц накладываются сигналы с другими частотами, и в сумме амплитуда выше. -
Товарищи! В чем смысл выяснения отношений и переходов на личности? Все все поняли, всем все ясно. Если ТС заложит F091, то по грабелькам, может, и пройдется - дык, опыт будет, и нам повод по-обсуждать. Заложит жирный МК - будет только основным функционалом заниматься без углубления в дебри и побочные явления. Меня бы F091 как исполнителя для данного ТЗ - отпугнул.
-
Да, вы все верно подметили. Я для 168МГц прикинул задержки: порядка 72 нс при допуске 150 нс. Джиттер будет еще меньше. Я когда первый раз столкнулся с задержками DMA, был настолько разочарован, что к DMA сейчас отношусь как к медленному аппаратному блоку, единственное преимущество которого - делать что-то без участия CPU.
-
А что за бинарная прошивка? Где? К какому МК или плате?
-
Предлагаю этот вопрос закрыть, т.к. он всплыл от неуверенности работоспособности связки GPIO+TIM+DMA. Связка работоспособна. Обвязка? потребление? цена, наконец? Мы серийно используем F030 для управления светодиодными матрицами, в самых простых случаях. Правда, сейчас (уже несколько лет) перешли на F051. Большинство транспортных табло делаем на нем. Я на практике знаю, что из Cortex-M0 можно по максимуму выжать. Но это для крупных серий. Я ТС рекомендую взять МК "по-толще", все на нем отладить, а при необходимости сменить МК или семейство.
-
На частоте 48МГц интервал 0.35 мкс, это порядка 16 тактов. Не "прям подряд", но близко. Я рекомендую F4, а еще лучше F3/G4. Там еще бодрее будет. Картинка - это к вопросу, что DMA не мгновенный, а в некоторых случаях десятки тактов.
-
Ничего. Работать будет. Да, будут дрожать фронты, но это не критично. Я давно об этом уже написал.
-
В "Martin T., The Insiders Guide to the STM32 ARM based Microcontroller(2008)" в главе "4.2.3 Direct Memory Access" довольно подробно расписан механизм работы DMA. Несложная арифметика дает 7..10 тактов на следующую транзакцию. Т.е. если делать единичные DMA-запросы, то эффект можно и на 3-м такте получить. Но если жарить по-полной, то я меньше 12 тактов не планирую, все равно работать не будет. В теории досконально не разбирался, но на практике 12 тактов наблюдал и побороть не смог. Кста, Проверить-то совсем не сложно: по первому сравнению таймера делаем OC таймера на вывод пина, и запрос DMA на запись в BSRR "1", по второму каналу тоже самое, но запись "0". Наблюдаем на трехканальном анализаторе, измеряем задержку и джитер.
-
По моим ощущениям, DMA-транзакция может занимать порядка 12 тактов, это при 168МГц порядка 0.071 мкс. Да, дребезжать фронты будут, но по-моему не критично.
-
Настраиваем 3 канала совпадения (можно и два, если очень захотеть). Первый записывает через DMA лог "1" во все нужные пины GPIOx->BSRR (это может быть UP-событие). Второй канал через 0.35 мкс записывает значение в GPIOx->BSRR из специального массива M[0]. Третий канал через 0.9 мкс записывает значение в GPIOx->BSRR из специального массива M[1]. Задача подготовить два 32-(можно и 16-)битных массива M[0] и M[1], по одному элементу на каждый бит. Т.е. размер в элементах равен 24 * N, где N-число светодиодов в линий. Но так можно до 16 линий одновременно рулить. Если памяти жалко, то можно попробовать в кольцевом DMA готовить данные на лету.
-
А сколько пинов нужно? Информации об этом не нашел в топике. Я бы предложил 100-нигий, т.к. можно FSMC задействовать, если нужно, типа, многоразрядный SPI. У адресный светодиодов зачастую одна линия с очень строгими таймингами. Тут либо SPI+DMA, либо GPIO+TIM+DMA. ОЗУ в F401 очень много.
-
Не понял почему именно этот МК был выбран. Цена? Есть же STM32F401RBT6 за 130 руб/шт от 112 шт. Если применить F4/F3 серию, то в цене не сильно возрастает изделие, а в удобстве/скорости/стоимости разработки, перспективах расширения функционала и т.п. - существенное преимущество.
-
Инициализация объединений в С++
adnega ответил Darth Vader тема в Программирование
Думаю, это все не в духе С++ ;) -
Инициализация объединений в С++
adnega ответил Darth Vader тема в Программирование
Для структур тоже работает. Это gcc, не уверен, что везде так можно. Так очень удобно задавать int rpm_arr_pos[RPM_NUM] = {[0 ... (RPM_NUM - 1)] = 0}; Не только массивы, но и массивы структур/объединений. -
Инициализация объединений в С++
adnega ответил Darth Vader тема в Программирование
const WordUnion_t MyVal[3] = { {Byte: {0x12,0x34,0x12,0x34}}, // Это объединение инициализировано, как массив байт {HWord: {0x5678,0x1234}}, // Это объединение инициализировано, как массив полуслов {Word: 0x12345678} // Это объединение инициализировано, как массив слов }; А так? -
stm32F030C8 и стирание страницы флэша
adnega ответил DpInRock тема в ARM, 32bit
Все железные глюки перечислены в ES. Практика показывает, что в подавляющем большинстве случаев у ST все норм, а не прав программист. Я не припомню ни одного обратного случая. Да, есть особенности, о которых нужно знать, и в документации все можно найти. Глянул ES - там ничего по теме топика нет. -
stm32F030C8 и стирание страницы флэша
adnega ответил DpInRock тема в ARM, 32bit
Покажите пожалуйста обработчик прерывания USART1. -
stm32F030C8 и стирание страницы флэша
adnega ответил DpInRock тема в ARM, 32bit
Можно попробовать устроить состояние блокировки (lockup state) - поможет только RESET (хотя в некоторых случаях можно еще шевельнуться в NMI). Если обработчик HF находится во flash, а при стирании flash, например, выполняющийся из ОЗУ код, приведет к HF, то при обращении к обработчику HF скорее будет не блокировка, а остановка ядра при чтении flash - когда последняя прокашляется - все вернется на место. Код в студию! Я уверен, дело не в МК, а в ПО. -
stm32F030C8 и стирание страницы флэша
adnega ответил DpInRock тема в ARM, 32bit
Попробуйте вставить в обработчик USART1 такую строчку. if(USART1->ISR & USART_ISR_ORE) USART1->ICR = USART_ISR_ORE; -
stm32F030C8 и стирание страницы флэша
adnega ответил DpInRock тема в ARM, 32bit
Так не бывает! У вас, скорее всего, переполнение приемника случается, а в прерывании вы флаг переполнения не сбрасываете. Вроде, соответствующая бага в стандартной библиотеке присутствовала... -
А преобразований уровней сигналов никаких нет? Можно разъехаться не только по длительности, но и по уровням.