Тема посвящена микроконтроллерам с архитектурой ARM Cortex-M.
Они стали "убийцами" 8-разрядных микроконтроллеров, так как они 32-разрядные, дешёвые, производительные, нафаршированы мощной периферией, например, 16 разрядными таймерами(есть модели с 32-разрядными таймерами), 12-разрядными АЦП (как правило), 12-разрядными ЦАП (как правило), различными приёмо-передатчиками.
Их изготавливают многие производители. Выпускаются множество недорогих ознакомительных плат со встроенными отладчиками и программаторами.
Есть свободные среды разработки, что тоже важно.
Микроконтроллеры AVR всё ещё популярны, но они 8-разрядные. При той же самой цене можно найти гораздо более навороченные и нафаршированные более крутой периферией (как правило, содержат 12-разрядные АЦП, некоторые модели имеют даже 16-разрядные сигма-дельта АЦП на борту) 32-разрядные микроконтроллеры с архитектурой ARM Cortex M, например STM32 фирмы ST Microelectronics или SAM3 фирмы Atmel или LPC1XXX фирмы NXP. Найболее ходовые сечас STM32. Понятное дело, что конкурировать с 32-разрядными недорогими микроконтроллерами 8-разрядным микроконтроллерам AVR с каждым годом всё сложнее.
Для микроконтроллеров с архитектурой ARM Cortex M есть множество сред разработки, в том числе свободные:
- для микроконтроллеров от разных производителей есть свободная среда разработки CooCox[ссылка]
- для микроконтроллеров STM32 есть свободная среда разработки System Workbench for STM32[ссылка]
- есть также несвободная среда разработки IAR
Для начинающих фирма ST Microelectronics предлагает различные недорогие ознакомительные платы, например STM32F4DISCOVERY, которые содержат на борту отладчики ST-LINK, что очень удобно.
В микроконтроллерах с архитектурой ARM Cortex-M4, например STM32F3 и STM32F4 имеют на борту МАТЕМАТИЧЕСКИЙ СОПРОЦЕССОР и с их помощью можно осуществлять цифровую обработку сигналов. Но время не стоит на месте, сейчас самыми новыми считаются микроконтроллеры с архитектурой ARM Cortex-M7, например STM32F7, которые тоже относительно недорогие, но ещё более производительные, чем их предшественники.
Микроконтроллеры ARM Cortex-M потребляют немного и, в то же время, имеют высокую производительность.
Но имейте также в виду, что микроконтроллеры ARM Cortex-M сложнее, чем те же микроконтроллеры AVR или PIC. Их на порядок сложнее программировать, чем микроконтроллеры AVR или PIC, но они стоят того, чтобы их применяли в новых проектах, так как в большинстве случаев их применение более выгодно, чем применение 8-разрядных микроконтроллеров.
Есть задачи, где определяющим является не числодробилка, а время реакции на прерывание- тут у АРМов пока плохо. Реакция на прерывание занмкает от 13 до 26 тактов и никто заранее не знает сколько точно будет. Все зависит от момента прерывания случайно.
С большинством восьмиразрядников все четко -2 такта строго.
dedivan Пост: 507566 От 10.Sep.2016 (16:07)
Есть задачи, где определяющим является не числодробилка, а время реакции на прерывание- тут у АРМов пока плохо. Реакция на прерывание занмкает от 13 до 26 тактов и никто заранее не знает сколько точно будет. Все зависит от момента прерывания случайно.
С большинством восьмиразрядников все четко -2 такта строго.
Да, я тоже столкнулся с этой проблемой. Тем более, у тех же AVR обработчик прерывания пишется гораздо проще, чем для STM32. В программах для STM32 приходится вручную сбрасывать флаги, а в AVR это делается автоматически. В итоге обработчик прерывания у AVR короче по числу команд. Но STM32 отыгрываются более высокой тактовой частотой и 32-разрядной архитектурой, что даёт возможность уменьшить количество команд при выполнении математических и логических операций. А в 8-разрядных ЭВМ приходится делать многоходовые операции, перебрасывать данные из регистра в регистр, делать лишние операции с флагами. Преймущество 32-разрядных микроконтроллеров налицо.
sw1972 Пост: 507569 От 10.Sep.2016 (16:15)
Но STM32 отыгрываются более высокой тактовой частотой
Для того чтобы сравняться тут с атмелами , армы долны иметь частоту выше 600 мгц. Есть такие. но это уже другие требования к монтажу, печатке, это уже не домашние технологии- только готовые заводские модули брать. Благо они уже тоже не такие дорогие бывают.
Старые сотики типа мотороллы можно на это использовать.
А если юэсби не нужен, то и сименсы старенькие пойдут.
Тут уже другой плюс армов вылазит- одинаковая архитектура.
Maximusua Пост: 507581 От 10.Sep.2016 (17:51)
Для первого знакомства такое годится ? [ссылка] [ссылка]
Эти платы имеют совсем другое назначение, они по-сути являются полноценными персональными ЭВМ с цифровыми выходами, которыми пользователь может произвольно управлять, кроме того, на них установлены МИКРОПРОЦЕССОРЫ ARM Cortex-A, а это несколько другая архитектура. В ветке речь идёт о МИКРОКОНТРОЛЛЕРАХ с архитектурой ARM Cortex-M.
Можно предложить несколько плат.
STM32VLDISCOVERY, на которой установлен микроконтроллер STM32F100RBT6, ядро ARM Cortex-M3.
STM32F4DISCOVERY, на которой установлен микроконтроллер STM32F407VGT6, ядро ARM Cortex-M4.
Ключевые особенности(на английском):
STM32F407VGT6 microcontroller featuring 32-bit ARM Cortex® -M4 with FPU core, 1-Mbyte Flash memory, 192-Kbyte RAM in an LQFP100 package
On-board ST-LINK/V2 on STM32F4DISCOVERY or ST-LINK/V2-A on STM32F407G-DISC1
ARM® mbed™ -enabled (http://mbed.org) with ST-LINK/V2-A only
USB ST-LINK with re-enumeration capability and three different interfaces:
Virtual com port (with ST-LINK/V2-A only)
Mass storage (with ST-LINK/V2-A only)
Debug port
Board power supply: through USB bus or from an external 5 V supply voltage
External application power supply: 3 V and 5 V
LIS302DL or LIS3DSH ST MEMS 3-axis accelerometer
MP45DT02 ST MEMS audio sensor omni-directional digital microphone
CS43L22 audio DAC with integrated class D speaker driver
Eight LEDs:
LD1 (red/green) for USB communication
LD2 (red) for 3.3 V power on
Four user LEDs, LD3 (orange), LD4 (green), LD5 (red) and LD6 (blue)
2 USB OTG LEDs LD7 (green) VBUS and LD8 (red) over-current
Two push buttons (user and reset)
USB OTG FS with micro-AB connector
Extension header for all LQFP100 I/Os for quick connection to prototyping board and easy probing
Comprehensive free software including a variety of examples, part of STM32CubeF4 package or STSW-STM32068 for legacy standard libraries usage
Фирма STMicroelectronics предлагает множество ознакомительных плат с различными микроконтроллерами, разной комплектацией, разнообразным набором периферии и, соответственно, различные по стоимости. Их можно купить на радиорынках и в интернет-магазинах, их легко найти.
Для любителей Ардуины выпускаются платы STM32 Nucleo.
sw1972 Пост: 507569 От 10.Sep.2016 (16:15)
Но STM32 отыгрываются более высокой тактовой частотой
Для того чтобы сравняться тут с атмелами , армы долны иметь частоту выше 600 мгц. Есть такие. но это уже другие требования к монтажу, печатке, это уже не домашние технологии- только готовые заводские модули брать. Благо они уже тоже не такие дорогие бывают.
Старые сотики типа мотороллы можно на это использовать.
А если юэсби не нужен, то и сименсы старенькие пойдут.
Тут уже другой плюс армов вылазит- одинаковая архитектура.
Не спорю, проблемы с прерываниями есть. Компиляторы генерируют очень длинный машинный код в обработчиках прерываний, не знаю почему, сам с этим столкнулся. Но не стоит забывать, что Кортексы отыгрывают в другом: в разрядности кода, более высокими тактовыми частотами, навороченной периферией. В большинстве случаев это перевешивает недостаток обработчиков прерываний.
sw1972 Пост: 507623 От 11.Sep.2016 (05:34)
Компиляторы генерируют очень длинный машинный код в обработчиках прерываний, не знаю почему,
Не- это не компилятор виноват.
Это особенности железа- хитрый контроллер прерываний с приоритетами
и конвейерная архитектура с длинным конвейером- пока он сбросится, новым загрузится....это все время, это еще все не считая пересылок-сохранения рабочих регистров. В общем долго он все это делает.
Бывают задачки где этого времени нет- там атмелы ставят дополнительно к армам.
Посмотри -есть спутниковые рессиверы, смартфоны какие то- там так сделано.
sw1972 Пост: 507622 От 11.Sep.2016 (05:25)
Эти платы имеют совсем другое назначение,...
Жалко что разговор о АРМах задержался и я поспешил
самостоятельно ...
Рекомендуемые платы не видел , а на глаза попала
вот такая . Еще взял к ней в придачу программатор
ST-LINK V2 .
Генератор понадобился с длительностью импульса
пока 100 нан , а там может и короче маленько.
Пока выкрутился обычным , а воспаленная фантазия
требует двустволку . Да еще и старт второго - от
синхронно , до с задержкой до 200 нан.
Пока тема не открывалась я был спокоен , а сейчас
заволновася ...
Вопрос : реально ли на этой плате (там Cortex M3
STM32F103C8T6 ) сделать такой генератор с несколькими
каналами да с независимой регулировкой параметров
импульса и скважности . Не упрусь ли в прерывания ?
Или еще во что ни будь .
sw1972 Пост: 507622 От 11.Sep.2016 (05:25)
Эти платы имеют совсем другое назначение,...
Жалко что разговор о АРМах задержался и я поспешил
самостоятельно ...
Рекомендуемые платы не видел , а на глаза попала
вот такая . Еще взял к ней в придачу программатор
ST-LINK V2 .
Генератор понадобился с длительностью импульса
пока 100 нан , а там может и короче маленько.
Пока выкрутился обычным , а воспаленная фантазия
требует двустволку . Да еще и старт второго - от
синхронно , до с задержкой до 200 нан.
Пока тема не открывалась я был спокоен , а сейчас
заволновася ...
Вопрос : реально ли на этой плате (там Cortex M3
STM32F103C8T6 ) сделать такой генератор с несколькими
каналами да с независимой регулировкой параметров
импульса и скважности . Не упрусь ли в прерывания ?
Или еще во что ни будь .
Без паники!
Я Вас утешу. Похоже, плата подойдёт для ваших задач.
Вы в прерывание не упрётесь. В таймерах есть функции ШИМ. Таймеры в этих контроллерах могут друг другом управлять согласно записям в управляющие регистры таймеров, не надо даже подпаивать внешние проводники.
Советую почитать даташит CD00161566.pdf и очень большое руководство пользователя на серию микроконтроллеров CD00171190.pdf (RM0008 Reference manual) размер которого 9536281 байт. Причём во втором документе раскрыты все подробности работы как с ядром МК, так и с периферией. Эти документы есть на сайте STMicroelectronics.
sw1972 Пост: 507691 От 11.Sep.2016 (14:41)
Я Вас утешу.
Большое спасибо !
Рекомендованные документы будут очень кстати !
Ядро микроконтроллера STM32F103C может работать на частоте до 72 МГц, которая формируется путём умножения частоты кварцевого генератора от 4 до 16 МГц или внутреннего RC-генератора 8 МГц с помощью системы ФАПЧ. Коэфициенты умножения задаются при старте программы.
Для длительностей импульсов 100 нс частоты до 72МГц будет маловато, так как точно задать 100 нс не получится. Но для тренировки и отработки программы плата подойдёт.
Потом можно будет перейти на микроконтроллеры STM32 с более продвинутыми ядрами, например STM32F4 или STM32F7.
sw1972 Пост: 507623 От 11.Sep.2016 (05:34)
Компиляторы генерируют очень длинный машинный код в обработчиках прерываний, не знаю почему,
Не- это не компилятор виноват.
Это особенности железа- хитрый контроллер прерываний с приоритетами
и конвейерная архитектура с длинным конвейером- пока он сбросится, новым загрузится....это все время, это еще все не считая пересылок-сохранения рабочих регистров. В общем долго он все это делает.
Бывают задачки где этого времени нет- там атмелы ставят дополнительно к армам.
Посмотри -есть спутниковые рессиверы, смартфоны какие то- там так сделано.
В книге Мартин М. Инсайдерское руководство по STM32 на странице 27 сказано, что с момента возникновения прерывания до выполнения первой инструкции его обработки проходит ВСЕГО ЛИШЬ 12 циклов. По времени достаточно много.
И ещё 12 циклов потребуется для возобновления выполнения фоновой программы. По-сути 12+12=24 цикла впустую.