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

adnega

Свой
  • Постов

    3 594
  • Зарегистрирован

  • Посещение

  • Победитель дней

    3

Весь контент adnega


  1. Неа. Есть некоторое количество палочек. Игроки по очереди берут одну, две или три палочки. Кто забирает последнюю, тот проиграл. У этой игры есть простая стратегия выигрыша, и если противник хоть раз ошибется, то ваша победа гарантирована.
  2. Есть у меня attiny10 в SOT23-6. Периодически с дочкой занимаемся электроникой. На тему динамического обновления сделали интересный макет. К трем оставшимся пинам МК подключили три кнопки и 6 светодиодов с независимым управлением. Сделали: двоичный счетчик с запуском/остановкой/сбросом; двоичный калькулятор с накоплением; игру "палочки", причем, МК всегда выигрывает человека (или почти всегда, если при первом ходе человек не допустит ошибку).
  3. Рекомендую Scratch. Там, вроде, и материалы для преподавателей есть. Можно довольно просто сделать несложные мультики/игрушки. А можно и робота LEGO (Boost) или arduino (mBlock) запрограммировать.
  4. Ваш осциллограф находится в Госреестре. Это должно быть существенным плюсом для тех, кому нужно СИ. Для тех, кому просто посмотреть (а их большинство) есть много интересных современных моделей за порядок цен, указанный вами. Например, Hantek DSO4254C стоит в диапазоне 34(Китай)..54(РФ) тыр. По-моему, вариантов не много: 1) либо не продавать; 2) либо за 10 тыр продать тому, кому "посмотреть"; 3) либо найти того, кому "измерять", но вопрос с поверкой открытый.
  5. Может, реальная полоса сигнала не нулевой ширины: на спектр 18МГц накладываются сигналы с другими частотами, и в сумме амплитуда выше.
  6. Товарищи! В чем смысл выяснения отношений и переходов на личности? Все все поняли, всем все ясно. Если ТС заложит F091, то по грабелькам, может, и пройдется - дык, опыт будет, и нам повод по-обсуждать. Заложит жирный МК - будет только основным функционалом заниматься без углубления в дебри и побочные явления. Меня бы F091 как исполнителя для данного ТЗ - отпугнул.
  7. Да, вы все верно подметили. Я для 168МГц прикинул задержки: порядка 72 нс при допуске 150 нс. Джиттер будет еще меньше. Я когда первый раз столкнулся с задержками DMA, был настолько разочарован, что к DMA сейчас отношусь как к медленному аппаратному блоку, единственное преимущество которого - делать что-то без участия CPU.
  8. А что за бинарная прошивка? Где? К какому МК или плате?
  9. Предлагаю этот вопрос закрыть, т.к. он всплыл от неуверенности работоспособности связки GPIO+TIM+DMA. Связка работоспособна. Обвязка? потребление? цена, наконец? Мы серийно используем F030 для управления светодиодными матрицами, в самых простых случаях. Правда, сейчас (уже несколько лет) перешли на F051. Большинство транспортных табло делаем на нем. Я на практике знаю, что из Cortex-M0 можно по максимуму выжать. Но это для крупных серий. Я ТС рекомендую взять МК "по-толще", все на нем отладить, а при необходимости сменить МК или семейство.
  10. На частоте 48МГц интервал 0.35 мкс, это порядка 16 тактов. Не "прям подряд", но близко. Я рекомендую F4, а еще лучше F3/G4. Там еще бодрее будет. Картинка - это к вопросу, что DMA не мгновенный, а в некоторых случаях десятки тактов.
  11. Ничего. Работать будет. Да, будут дрожать фронты, но это не критично. Я давно об этом уже написал.
  12. В "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". Наблюдаем на трехканальном анализаторе, измеряем задержку и джитер.
  13. По моим ощущениям, DMA-транзакция может занимать порядка 12 тактов, это при 168МГц порядка 0.071 мкс. Да, дребезжать фронты будут, но по-моему не критично.
  14. Настраиваем 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 готовить данные на лету.
  15. А сколько пинов нужно? Информации об этом не нашел в топике. Я бы предложил 100-нигий, т.к. можно FSMC задействовать, если нужно, типа, многоразрядный SPI. У адресный светодиодов зачастую одна линия с очень строгими таймингами. Тут либо SPI+DMA, либо GPIO+TIM+DMA. ОЗУ в F401 очень много.
  16. Не понял почему именно этот МК был выбран. Цена? Есть же STM32F401RBT6 за 130 руб/шт от 112 шт. Если применить F4/F3 серию, то в цене не сильно возрастает изделие, а в удобстве/скорости/стоимости разработки, перспективах расширения функционала и т.п. - существенное преимущество.
  17. Для структур тоже работает. Это gcc, не уверен, что везде так можно. Так очень удобно задавать int rpm_arr_pos[RPM_NUM] = {[0 ... (RPM_NUM - 1)] = 0}; Не только массивы, но и массивы структур/объединений.
  18. const WordUnion_t MyVal[3] = { {Byte: {0x12,0x34,0x12,0x34}}, // Это объединение инициализировано, как массив байт {HWord: {0x5678,0x1234}}, // Это объединение инициализировано, как массив полуслов {Word: 0x12345678} // Это объединение инициализировано, как массив слов }; А так?
  19. Все железные глюки перечислены в ES. Практика показывает, что в подавляющем большинстве случаев у ST все норм, а не прав программист. Я не припомню ни одного обратного случая. Да, есть особенности, о которых нужно знать, и в документации все можно найти. Глянул ES - там ничего по теме топика нет.
  20. Покажите пожалуйста обработчик прерывания USART1.
  21. Можно попробовать устроить состояние блокировки (lockup state) - поможет только RESET (хотя в некоторых случаях можно еще шевельнуться в NMI). Если обработчик HF находится во flash, а при стирании flash, например, выполняющийся из ОЗУ код, приведет к HF, то при обращении к обработчику HF скорее будет не блокировка, а остановка ядра при чтении flash - когда последняя прокашляется - все вернется на место. Код в студию! Я уверен, дело не в МК, а в ПО.
  22. Попробуйте вставить в обработчик USART1 такую строчку. if(USART1->ISR & USART_ISR_ORE) USART1->ICR = USART_ISR_ORE;
  23. Так не бывает! У вас, скорее всего, переполнение приемника случается, а в прерывании вы флаг переполнения не сбрасываете. Вроде, соответствующая бага в стандартной библиотеке присутствовала...
  24. Китайская ATMega8A?

    А преобразований уровней сигналов никаких нет? Можно разъехаться не только по длительности, но и по уровням.
×
×
  • Создать...