AVR против STM32
Дата: 30 Июня 2015. Автор: Алексей
Заполучил я недавно микроконтроллер STM32F030K6T6 от магазина ЧипРезистор для мучений и изучений данного девайса. Сказано, сделано. Была собрана платка и пошло поехало. Ах да! Тема нашего разговора зашла о сравнении двух МК. Один выше сказанный против ATmega328. Почему именно они. Оба МК в корпусе TQFP-32. (Правда ATmega328 бывает и в DIP корпусе)
Теперь давайте рассмотрим по ближе их внутренности. Для большего понимания я собрал все необходимые данные в одну табличку.
Параметры | ATmega328 | STM32F030K6T6 |
Разрядность | 8 бит | 32 бита |
FLASH | 32кб | 32кб |
SRAM | 1кб | 4кб |
EEPROM | 512б | - |
Таймер 8 бит | 2 шт | - |
Таймер 16 бит | 1 шт | 16 шт |
ШИМ | 3 канала | 6 каналов |
USART | 1 шт | 1 шт |
SPI | 1 шт | 1 шт |
I2C | 1 шт (TWI) | 1 шт |
АЦП | 8 каналов 10 бит | 16 каналов 12 бит |
Питание | 2,7 - 5,5 | 2,4 - 3,6 |
Скорость | 0 - 16МГц | 48МГц при внешних 4 - 32МГц |
Стоимость | 160 - 170 руб. | 80 - 140 руб. |
Как видно из таблицы, STM32 довольно интереснее и богаче чем AVR. Есть правда одна мелочь. У STM32 нет EEPROM, но зато есть DMA которое просто убивает AVR напрочь. Правда AVR может похвастаться Ардуиной и простатой программирования. Да не спорю, но у STM32 есть STM32Cube, который генерит код для IAR и берет на себя всю рутину настройки периферии. И последний гвоздь в "гроб" AVR это RTOS. Да, на AVR тоже можно установить, но с ней надо разбираться, а в STM32 ставим галочку "FREERTOS" и все. Система сама сделает все что нужно, а нам останется только создавать потоки и писать код в них. Ну это так для затравки. На самом деле там все немного сложнее. Короче STM32 мне нравится и для того чтобы окончательно склонить вас на эту платформу, бросив в ящик стола Ардуину, я создам от начала до конца плату и покажу как с ней работать. О, забыл. У всех STM32 есть отладчик SWD. Это три провода SWDIO, SWCLK, GND и можно скакать по строкам кода прямо в железе, а не как у ATmega328 виртуально в Протеусе. Для этого нужен всего лишь универсальный программатор ST-LINK. Его можно использовать если приобрести плату Discovery или отдельно программатор. А теперь от слов к делу.
Схема.
Покрупнее
Данную плату я делал как модуль для своей отладочной платы под AVR. Но ее можно повторить разведя плату по своему усмотрению (Проект под DipTrace я выложу в конце статьи). Что на схеме. А на схеме простая обвязка как и для AVR. Кварц на 8МГц с двумя конденсаторами по 20p. Так же как и в AVR собрана схема питания для опорки АЦП. Цепь сброса как у AVR. Единственное отличие это цепь BOOT. В отличии от AVR у всех STM32 на борту есть железный загрузчик. По умолчанию он выведен на USART. То есть если прижать к питанию ножку BOOT0 и рестартануть МК, то при помощи программы Flash Loader Demonstrator можно прошить МК без программатора. Данная фишка полезна если у вас уже есть готовое и работающее устройство и необходимо обновить прошивку, то нужно лишь переходник USB <-> USART. Многие не хотят связываться с STM32 из-за питания не более 3,6 вольт. Ерунда. Если посмотреть в таблицу пинов, то можно заметить что все ножки могут принимать на себя 5 вольт без последствий. Поехали дальше.
А так она выглядит установленная на плату.
Теперь подключаем программатор ST-LINK-GA к SWD разъему.
SWD на плате | ST-LINK-GA |
SWDIO | 7 |
SWCLK | 9 |
GND | 20 |
Теперь когда все готово, качаем свежую версию STM32cubeMX с сайта ST (ссылка в самом низу страницы). Устанавливаем и запускаем.
Жмем New Project. И в появившемся окне находим наш контроллер. Жмем Ок.
После небольших раздумий. программа выдаст вот такое окно.
Расписывать что и зачем я не буду, так как это тема отдельной статьи. Сейчас для примера просто сделайте то что я покажу. Что мы будем делать. Мы запустим операционную систему и в единственном потоке будем моргать светодиодом. Этакий "Хелой Ворд" из пушки.))) Для этого в левом окошке нажмите на плюс у надписи "FREERTOS" и в выпавшем списке поставте галочку.
Далее топаем также в RCC и выбираем внешний кварц.
Причем как только будет выбран внешний кварц, справа на контроллере подсветятся зеленым ножки на которые нужно его повесить. Следующим делом надо выбрать ножку на которой будет висеть светодиод. Я выбрал порт В и пин 0. И нашел граблю.Я с перепугу что ли, не знаю зачем, перевернул выводную гребенку первых четырех пинов к верху ногами. Отсюда неразбериха на порте В. Этот косяк касается только моей платы. Но ничего, от этого МК работать не перестал. И так как настроить пин. Дело в том что у STM все пины могут принимать кучу значений, но если касаться дискретного ввода/вывода, то на выход может быть три варианта. Выход в воздухе, выход с подтяжкой к плюсу питания, выход с подтяжкой к общей шине. По умолчанию STM32CubeMX вешает ножку в воздухе. Ну и пусть, нам же нужно просто проверить работу и продемонстрировать силу STM32. Для того чтобы настроить ножку, нужно щелкнуть по ней левой кнопкой мышки и в появившемся окне выбрать GPIO_Output. Если МК мелковат, то можно покрутить колесиком и увеличить его. )))
Следующим этапом нужно настроить тактование МК. Дело в том что у STM32 с этим делом очень мутно. В отличии от AVR у STM32 на входе стоит кварц с частотой от 4 до 32 МГц, а на шинах его можно разогнать до 48 МГц. Внутри МК очень сложная система тактования, но на помощь нам идет опять STM32CubeMX. Переходим во вкладку Clock Configuration и настраиваем как на картинке ниже.
Вот и все. Жмем на иконку с шестеренкой на верху.
Появится вот такое окно.
А вот тут я забыл сказать. Скачайте и установите себе IAR. Его можно скачать у официалов но урезанный по количеству кода, либо можно найти в торрентах. Либо если много лишних денег, то можно и прикупить лицензию. Ну я думаю многие пойдут по тропе с CodeVisionAVR. В общем это оставляю на ваше усмотрение. У меня версия 7.40. Возвращаемся к Кубу. В окошке назовите проект, но только латинскими, IAR не любит русские буквы в путях. И задайте где будет хрониться проект. В окне IDE нужно выбрать (а он по умолчанию) EWARM. Жмем Ок. Программа думает, а потом выдает вот такое окно. Бла-бла-бла. В общем жмем открыть проект (для тех кто в танке средняя кнопка).
Окно исчезнет, а вместо него запустится IAR и наш проект. Слева заходим в Aplication->User и запускаем main.c. Вот эта куча кода и есть то что нагенерил за нас STM32CubeMX.
И что теперь с этим ужасом делать? А вот для этого нужно целую серию статей))) А сейчас просто находим вот такой кусок кода.
Это и есть наш единственный поток. В теле цикла for(;;) удаляем единственную функция osDelay(1);, а вместо нее запишем вот такой код.
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
osDelay(500);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
osDelay(500);
Чудненько. Теперь просто жмем на кнопочку с зеленой стрелочкой справа на верху и ждем компиляцию и загрузку.
Если все правильно и без ошибок, то программа соберет весь проект, создаст все что нужно и загрузит прошивку в МК. После этого перейдет в режим отладки. Вот он родной. Мечта AVR-щика. Если есть не преодолимое желание поюзать, то можно прям на железе походить по шагам, строка за строкой. А если охота посмотреть как работает программа , то жмен на крестик сверху слева и наслаждаемся микание светодиода.
Вот и все. Микроконтроллеры можно купить по самой низкой цене аж по 78 рублей за штуку в магазине ЧипРезистор. Ну а если хочется по дешевле то есть и мелкий опт. От 35 штук уже по 50 руб.
Проект для DipTrace.
И конечно же видео.
JW Player goes here
гость 31.12.15 10:35
Недавно хотел сделать частотомер на АТМЕГА16 плюс внешний 8 бит счетчик на 74логике, -не хватило быстродействия.На ассемблере писать-голова не выдержит,городить внешний счетчик на 16 бит-геморойно.АВР - это прошлый век, недешевый контроллер.Поддержу автора, АВР это пройденый этап,я тоже купил чип stm32f100 плюс чип адаптера ЮСБ CP2103,
скоро от АВР все откажутся.
Алексей 31.12.15 12:26
Я не согласен. Все таки еще развивается Arduino и многие на нее подсели, а последняя в свою очередь работает на AVR. Переход на STM это что-то вроде перехода на следующий уровень. Так сказать из Детсада в школу.
АНОНИМ 12.02.16 10:44
AVR и STM32 это процессоры не конкурирующие друг с другом.
В вашей табличке нет самого главного параметра - это ток потребления!! А посмотрев на них - можно прослезится.
Atmega 328 -
– Active Mode: 0.2 mA
– Power-down Mode: 0.1 µA
– Power-save Mode: 0.75 µA (Including 32 kHz RTC)
STM32F030K6T6
48 MHz
- Active Mode:
периферия включена 23.3 mA
периферия выключена 11.5 mA
- Stop Mode: 0.048 mA
STM32 жрёт электричество нещадно - грубо говоря в 100 раз больше чем AVR. От батарейки девайс на STM32 не запитаешь.
А вот AVR будут работать месяцами.
Так что отказаться от AVR трудно.
Удачи всем.
Алексей 12.02.16 10:54
А никто и не предлагает отказаться от AVR. Я лишь показа разницу в периферии. Я до сих пор поддерживаю библиотеку для AVR и до сих пор мой основной МК ATMega8A.
Сергей 24.02.16 18:02
На мой взгляд как то странно сравнивать свежие STM32 с пенсионерами AVR. Если хотите сравнивать STM32 с контролерами ATMEL, то сравнивайте их с семейством ATSAM но не как ни с AVR.
Андрей 24.02.16 18:06
Это кто это пенсионер? AVR жив и будет еще жить хрен знает сколько. И глядя в таблицу, сравнение по моему идет больше по периферии, а не по архитектуре.
Алексей 24.02.16 19:04
Ну начинается. Давайте теперь обсудим АМД и Интел.
Сергей 24.02.16 22:02
На хабре один "знаток" написал, что у AVR нет параллельной шины для подключения стандартного LCD, а у STM32 есть...
Алексей 24.02.16 22:36
Что значит стандартный LCD? Это про FSMC? Так это не только для дисплея, это и для памяти. Просто параллельная шина. У AVR тоже есть, например у Mega8515. К ней через регистр-защелку можно SRAM подключить.
Сергец 25.02.16 06:24
Алексей, ну а я про что?! Такое впечатление, что вы даже не пытаетесь вникнуть в смысл моих сообщений.
Алексей 25.02.16 09:38
Ну, а какой смысл сравнивать два одинаковых микроконтроллера разных фирм. Оба на ядре ARM. Если совсем придираться, то тогда уж надо сравнивать AVR с STM8. Я то придерживался приближенностью периферии, формфактора и цены. И как раз разной архитектуры.
Адлан 03.06.16 17:40
Здравствуйте. Помогите, пожалуйста, кто может. Установил последнюю версию Куба 4.15, Библиотеки F1 1.4.0. Созданный пустой проект в EWARM не компилируется - больше сотни ошибок. ЧТо может быть? Спасибо
flkfy@mail.ru
Алексей 03.06.16 20:48
Адлан, первое что нужно сделать, так это скинуть проект который не компилится.
Doc 18.07.16 21:51
"Правда AVR может похвастаться Ардуиной и простатой программирования."
ЧЕМ может похвастаться ? ;D
Алексей 19.07.16 11:41
Это глупое сравнение. Во первых у STM есть аналог ардуины под названием нуклео. Программы пишутся в онлайн IDE прямо через браузер. А вот если плюсы лично камня, то. Частота работы ядра 72МГц, AVR и не снилась такая скорость. Конечно если маргать светодиодом, то разницы никакой, а вот если запустить ось и кучу периферии, то AVR сдуется. Разряднось, 32 далеко не 8. Попериферии на STM может находиться 3 I2C, 3 SPI, 6 UART, USB, CAN, Ethernet. Почти все имеет возможность ремапится, то есть переноситься на другие ноги мк. Есть так же DMA, это независимый сопроцессор для работы с периферией. Так что прерывания у AVR нервно курят в сторонке. Есть аппаратный SDIO для полноценной работы с CD картами, а не костыльный ISP в AVR. В общем там много чего еще есть, но самый жирный камень в огород AVR, это помехоустойчивосиь. AVR выбить пролегающим рядом кабелем от электромортора как нефиг делать, а вот STM нужно постараться. Так что язвить с ардуиной я бы не советовал.
гость 11.08.16 23:27
MICROCHIP поглотила AVR!))))))))))
Алексей 12.08.16 08:35
Опоздали с новостью, уже как лет пять назад.
Владимир 17.08.16 22:56
Алексей ! В январе 2016 года фирма Microchip покупает Atmel за 3,56 млрд долларов.Каких 5лет?
Алексей 18.08.16 10:30
Это деюро, а дефакто это тянется аж с 2008 года. Так что я действительно ошибся, не 5 лет, а 8 лет назад. ))))
Владимир 18.08.16 23:53
Алексей !Стал переходитьна stm32 !А насчёт потребления в авотономном режиме советует всё не тактировать, тогда и снизится ток потребления .
Олег 09.11.16 22:31
В datashet на STM не нашел графиков потребления оттактовой CLK системной как у AVR - а по тем табличкам что есть - STM32 вчистую проигрывает акак в обычном режмие, так и в Idle. Да и нет у этого STM32 тактовой в 72Мгц - только 48 макс, ивсе, так что даже при 32 разрядах 8 битник AVR - лучше получается, и кстати производитель в datasheet не написал сколько тактов в STM32 машинный цикл у него, так что если окажется 2 такта против 1 у AVR - то считай что 48/2=24 реальных Мгца - почти те же самые что и у 20 Мгц у AVR. Вот и вопрос - а чудо-то где у этого STM32 о котором Вы все талдычете ?
АНОНИМ 09.11.16 23:03
И вот еще, цитата из описания STM32 на русском - "...С
момента
получения
прерывания
до
начала
выполнения
первой
команды
обработчика
прерывания
затрачивается
только
двенадцать
циклов
тактового
сигнала
..." - ну так у AVR на то же самое уходит 4-5 тактов !!! Всего-то. И тут тоже снова получается что AVR сделан лучше чем STM32, с его дутой тактовой, и EEPROMа у STM32 внутри нет как у AVRа, так что еспи какие константы рабочие захотите запомнить в STM32 - фигушки у Вас это получится - только внешнюю схему ваять придется. да и еще изрядный кусок проги для управления ею, а в AVR - внутри есть EEPROM и там отлично все запоминается тройкой команд, и без внешней навески, и занимания ножек корпуса, вот и выходит что пока AVR лучше чем STM32, который сейчас стараются прямо таки рекламно навязчиво пихать во все устройства, как с ума посходили...
момента
получения
прерывания
до
начала
выполнения
первой
команды
обработчика
прерывания
затрачивается
только
двенадцать
циклов
тактового
сигнала
..." - ну так у AVR на то же самое уходит 4-5 тактов !!! Всего-то. И тут тоже снова получается что AVR сделан лучше чем STM32, с его дутой тактовой, и EEPROMа у STM32 внутри нет как у AVRа, так что еспи какие константы рабочие захотите запомнить в STM32 - фигушки у Вас это получится - только внешнюю схему ваять придется. да и еще изрядный кусок проги для управления ею, а в AVR - внутри есть EEPROM и там отлично все запоминается тройкой команд, и без внешней навески, и занимания ножек корпуса, вот и выходит что пока AVR лучше чем STM32, который сейчас стараются прямо таки рекламно навязчиво пихать во все устройства, как с ума посходили...
Алексей 10.11.16 00:23
Я даже не хочу спорить. Что лучше Интел или АМД? Или Жигули или Волга? У СТМ есть аппаратный USB, CAN, Ethernet, SDIO и еще куча периферии которой AVRу только может присниться во сне. В конце концов есть ДМА как самостоятельный сопроцессор с прямым доступом к памяти перед которым все прерывания AVR нервно покуривают в сторонке. Например у первых сериях на борту сразу 3 UARTа, 2 SPI, 3 I2C. Ремап портов есть и не нужно ломать башку как развести плату. Если вам по нраву работать с AVR, то работайте, кто вам мешает. Я по сей день под мелкие проекты леплю меги восьмые и не жалуюсь. Ай да, воткните AVR рядом с пускателем и посмотрите как ему башку снесет наводками. У AVR нет защиты от ЭМН. Поэтому в автосигнализации всегда ставили ПИКи, так как АВР умирает в таких условиях. Да чего спорить, дохлый номер.
Корнет 27.11.16 21:22
Ну кстати уже есть ардуино и на STM32. Это и Амперка и Espruino всякие на JS) Тем более если Микрочип взял Атмел ну нафиг их
Алексей 27.11.16 21:44
Название Espruino пародирует Arduino, самую известную на тот момент хобби-платформу, но Espruino не совместима с классической Arduino Uno ни механически, ни программно.(цитата из Амперки)
Еще у меня есть плата Нуклео и она тоже никаким боком к Arduino не относится, разве что геометрией самой платы)))
Вообще по сути я использую тот МК, который подходит для текущей задачи.
Еще у меня есть плата Нуклео и она тоже никаким боком к Arduino не относится, разве что геометрией самой платы)))
Вообще по сути я использую тот МК, который подходит для текущей задачи.
Андрей 20.12.16 22:50
Кому нравится переплачивать : стоит attiny2313-20 - 2Kb-flash /128bit-ram/16bit_timer -1/8bit_timer -1 =2.1$ против stm32f103c8t6 64Kb-flash/20Kb-sram/16BIT timer (+контроль мертвого времени для двухканального режима ШИМ) -4/ADC-2/72MHz CPU/=2.3$.По-моему сделать измеритель импеданса цепи RLC c помощью авр практически нереально,либо городить 10 камней.А с STM и БПФ можно сделать(ДМА помогает).Попытался как-то сделать на Меге10 частотомер (точность 1 герц)- банально не хватило быстродействия (либо городить внешний 32-битный счетчик с регистром сдвига-откуда габариты).От АВР отказался год назад, AVR- выходит, для небедных людей.
Andrey 20.12.16 22:53
АНОНИМ писал-"И вот еще, цитата из описания STM32 на русском - "...С
момента
получения
прерывания
до
начала
выполнения
первой
команды
обработчика
прерывания
затрачивается
только
двенадцать
циклов
тактового
сигнала"
Это правда.Но перемножьте два 32-битных числа на avr - явно 8-10 тактов!
момента
получения
прерывания
до
начала
выполнения
первой
команды
обработчика
прерывания
затрачивается
только
двенадцать
циклов
тактового
сигнала"
Это правда.Но перемножьте два 32-битных числа на avr - явно 8-10 тактов!
Алексей 20.12.16 23:31
Да, я уже сожалею что этот халивар начал.))))
Александр 21.12.16 00:27
Почитал коменты и вспомнил.
Два малыша в песочнице
Один дудука!
Второй, бибика!
Первый, ДУдука! ( интонация более грозная)
Второй, БИБИКА! (С еще более выразительной интонацией)
Первый ДУДУКА! (Уже крича)
Второй БИБИКА!!! (Чуть ли не плача)
....
Закончилось эта баталия, оба стоят и плачат, один громче другова.)))
Два малыша в песочнице
Один дудука!
Второй, бибика!
Первый, ДУдука! ( интонация более грозная)
Второй, БИБИКА! (С еще более выразительной интонацией)
Первый ДУДУКА! (Уже крича)
Второй БИБИКА!!! (Чуть ли не плача)
....
Закончилось эта баталия, оба стоят и плачат, один громче другова.)))
Вал 10.02.17 01:43
какая частота будет если зациклить без задержки
while (1)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
}
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
}
Алексей 10.02.17 10:07
Та что на шине APB
Игорь 08.06.17 22:33
Так давайте сразу ноутбуки во встраиваемые системы встраивать, они же лучше чем СТМ в сотни раз, и пееферии там ну просто охрененно сколько, там уже и вай фай есть и блютузы и даже программаторы не нужны, сразу и монитор есть с клавой чтобы писать прогу и сразу запустить, и программаторы не нужны и отладчики.
Всё равно что купить себе на дачу в личное пользование экскаватор для того чтобы ИНОГДА выкапывать пару ям глубиной в пол метра.
Ставить в термостат, часы, весы СТМ ну по моему это не нормально. Кстати да, как насчёт энергонезависимой памяти, вот делаю я термостат, выставляю температуру, тут вырубается свет, и что, настройки потеряны. А ведь во встроенные системы которые должны настраиваться 1 раз для дальнейшей работы, значения должны сохраняться навсегда
Всё равно что купить себе на дачу в личное пользование экскаватор для того чтобы ИНОГДА выкапывать пару ям глубиной в пол метра.
Ставить в термостат, часы, весы СТМ ну по моему это не нормально. Кстати да, как насчёт энергонезависимой памяти, вот делаю я термостат, выставляю температуру, тут вырубается свет, и что, настройки потеряны. А ведь во встроенные системы которые должны настраиваться 1 раз для дальнейшей работы, значения должны сохраняться навсегда
Алексей 09.06.17 08:25
Ну например в чип-дип STM32F030F4P6 стоит 48р, а прямой аналог ATtiny2313 98р. Я думаю для построения термостата любого из них будет достаточно. А компенсация памяти у STM может быть в любом датчике температуры. Да хотя бы в том же DS18B20. А что касается ноутов, так в любом терминале приема оплаты как раз установлен ПК с ОС и монитором. Так что даже такие системы есть. При выборе МК в первую очередь выбирают тот что дешевле. Это если хобби, то можно купить ардуину дабы не заморачиваться с пайкой, а когда систему планируется ввести на производство и выпускать сотнями, то считается каждая копейка. И переплата за МК 50 рублей при его цене в 48 это непозволительная роскошь.
Руслан 17.06.17 21:46
Алексей а почему ви вибрали среду програмирования именно IAR?
Какую среду лучше вибрать новачку (чтоб било много подсказок как в Atmel Studio)?
Какую среду лучше вибрать новачку (чтоб било много подсказок как в Atmel Studio)?
Алексей 17.06.17 22:07
Кейл
Руслан 17.06.17 22:56
А почему ви тогда вибрали IAR?
Алексей 18.06.17 08:45
Потому что мне он нравится.
Руслан 18.06.17 16:41
Хорошо! Задам вопрос иначе!
Чем на ваше мнение Кейл хуже от IAR?
Чем на ваше мнение Кейл хуже от IAR?
Алексей 18.06.17 20:35
А чем ванильное мороженое лучше шоколадного?
Руслан 23.06.17 23:47
А будет у вас продолжение по STM?
Первий урок ооочень понравился!!!
Первий урок ооочень понравился!!!
sim31 22.07.17 14:51
Упоминали по потреблению энергии, для этого есть STM32L серия, но она дороже атмеловских МК.
Руслан 03.08.17 15:25
Алексей сделайте пожалуйста видео про библиотеки (не родние) как их подключить как вибрать?
Имею библиотеку которая изначально била написана на стдпериф!
Я ее переделал под хол!
Но при подключении вилазят еррори!
Нужна информация как работать с не родними библиотеками!
В интернете ничего не нашел там только расказивают как подключать родние библиотеки.
Если "плохо искал" то дайте ссилку где можно посмотреть или почитать как ето делать!
А еще лучше сделайте видео, думаю многим начинающим (и не только) оно будет интересно посмотреть!
Заранее благодарен!
Имею библиотеку которая изначально била написана на стдпериф!
Я ее переделал под хол!
Но при подключении вилазят еррори!
Нужна информация как работать с не родними библиотеками!
В интернете ничего не нашел там только расказивают как подключать родние библиотеки.
Если "плохо искал" то дайте ссилку где можно посмотреть или почитать как ето делать!
А еще лучше сделайте видео, думаю многим начинающим (и не только) оно будет интересно посмотреть!
Заранее благодарен!
Алексей 05.08.17 10:19
Я уже снимал видео на эту тему. В подключении библиотек нет ничего сложного. Вот кино на эту тему.
Руслан 22.11.17 12:17
я имел ввиду ето https://www.youtube.com/watch?v=wOIlhRd-vN8
5 - 7 минута!!!
5 - 7 минута!!!
Руслан 22.11.17 12:18
Алексей подскажите пожалуйста как работать с перечислениями "enum" а то нигде нету такой информации и в ваших видео "Си для самих маленьких" тоже нету а мне как раз очень надо!
Когда баловался AVR-ками то такоє чудо как перечисления не встречал а сейчас заинтересовался STM-ками а там их очень много! И нету информации как с ними работать!
Есть такой пример из реального кода :
StatusCode MIFARE_Read(byte blockAddr, byte* buffer, byte * bufferSize);
где StatusCode ето перечисление:
enum StatusCode : byte {
STATUS_OK , // Success
STATUS_ERROR , // Error in communication
STATUS_COLLISION , // Collission detected
STATUS_TIMEOUT , // Timeout in communication.
STATUS_NO_ROOM , // A buffer is not big enough.
STATUS_INTERNAL_ERROR , // Internal error in the code. Should not happen ;-)
STATUS_INVALID , // Invalid argument.
STATUS_CRC_WRONG , // The CRC_Ado es not match
STATUS_MIFARE_NACK = 0xff // A MIFARE PICC responded with NAK.
};
ето из ардуиновской библиотеки(С++), но Keil ругается на ето!
Как правильно записать возврат функцией перечисления?
Когда баловался AVR-ками то такоє чудо как перечисления не встречал а сейчас заинтересовался STM-ками а там их очень много! И нету информации как с ними работать!
Есть такой пример из реального кода :
StatusCode MIFARE_Read(byte blockAddr, byte
где StatusCode ето перечисление:
enum StatusCode : byte {
STATUS_OK , // Success
STATUS_ERROR , // Error in communication
STATUS_COLLISION , // Collission detected
STATUS_TIMEOUT , // Timeout in communication.
STATUS_NO_ROOM , // A buffer is not big enough.
STATUS_INTERNAL_ERROR , // Internal error in the code. Should not happen ;-)
STATUS_INVALID , // Invalid argument.
STATUS_CRC_WRONG , // The CRC_A
STATUS_MIFARE_NACK = 0xff // A MIFARE PICC responded with NAK.
};
ето из ардуиновской библиотеки(С++), но Keil ругается на ето!
Как правильно записать возврат функцией перечисления?
Руслан 22.11.17 12:29
и еще как обьявить в функции одним из аргументов которой есть перечисление :
void PCD_WriteRegister(PCD_Register reg, byte value);
где PCD_Register перечислениє:
enum PCD_Register : byte {
// Page 0: Command and status
// 0x00 // reservedfor future use
CommandReg = 0x01 << 1, // starts and stops command execution
ComIEnReg = 0x02 << 1, // enable and disable interrupt request control bits
DivIEnReg = 0x03 << 1, // enable and disable interrupt request control bits
ComIrqReg = 0x04 << 1, // interrupt request bits
...
};
а reg ето как я понял име перечисления но его нигде нету обьявленним в коде и откуда оно взялось мне не понятно!
Много страний перечитал в интернете и нашел информацию что ети перечисления можно заменить дефайнами но все же хотелось би узнать как с ними работать!!!
где PCD_Register перечислениє:
enum PCD_Register : byte {
// Page 0: Command and status
// 0x00 // reserved
CommandReg = 0x01 << 1, // starts and stops command execution
ComIEnReg = 0x02 << 1, // enable and disable interrupt request control bits
DivIEnReg = 0x03 << 1, // enable and disable interrupt request control bits
ComIrqReg = 0x04 << 1, // interrupt request bits
...
};
а reg ето как я понял име перечисления но его нигде нету обьявленним в коде и откуда оно взялось мне не понятно!
Много страний перечитал в интернете и нашел информацию что ети перечисления можно заменить дефайнами но все же хотелось би узнать как с ними работать!!!
Руслан 22.11.17 12:35
С нетерпением жду ответа!
Может снимите видосик как с ними работать,чтоб и для других било, думаю видео будет очень полезним потому что таких видео нету(по крайней мере я не нашел)!
Может снимите видосик как с ними работать,чтоб и для других било, думаю видео будет очень полезним потому что таких видео нету(по крайней мере я не нашел)!
Дмитрий 28.11.17 22:02
"простатой программирования"
Интересный орган для программирования контроллеров. Вообще как можно было сравнивать 32-битные с 8-битными непонятно. Как Порш Каен с Зарпорожцем.
Интересный орган для программирования контроллеров. Вообще как можно было сравнивать 32-битные с 8-битными непонятно. Как Порш Каен с Зарпорожцем.
Алексей 29.11.17 10:24
Можно сравнивать, можно. Просто нужно учесть что в данном сравнении Порш стоит дешевле Запорожца. По поводу урологии, так пикантнее. Так что исправлять не буду.
Константин 23.12.17 00:06
Руслан, я не понимаю, как ты ищешь и ничего не находишь (видимо, не ищешь). Это самые-самые основы языка С (не только для МК, но и для компов). Почитай книгу Кернигана и Ритчи, там весь С прекрасно описан.
А на твои вопросы никто тебе отвечать не будет, это элементарщина.
А на твои вопросы никто тебе отвечать не будет, это элементарщина.
АНОНИМ 11.02.18 16:27
Почему вы сравниваете 32разрядный МК ST с 8разрядным Atmel. Глупое сравнение. Равносильно сравнивать 32разрядный Atmel AT91SAM с 8разрядными STM8 учитывая даже что у Atmel есть 32 разрядники еще мощнее
Алексей 13.02.18 12:18
Потому что на момент написания статьи, 8-ми бинтных ST не было в продаже, а по цене мега и СТМ32 стоят одинаково.
STM32_Dev 19.06.19 13:59
ну так у AVR на то же самое уходит 4-5 тактов !!! Всего-то. И тут тоже снова получается что AVR сделан лучше чем STM32, с его дутой тактовой, и EEPROMа у STM32 внутри нет как у AVRа
Такт AVR при частоте 16МГц - 1/16000000 = 0,0000000625 с = 62.5 нс * 5 тактов = 312.5 нс.
Такт ARM при частоте 48МГц - 1/48000000 = 0,0000000208 с = 20.8 нс * 12 тактов = 250 нс.
Кажется музейная атмега считает свои 5 тактов дольше чем СТМ32 12 тактов)))
У СТМ32 нет эпрома? Уверены? STM32L152 - 8кБ эпрома! А у атмеги? 512 Байт? О как много!!! Даже не знаю что же такого туда б записать. Давайте подумаем... ммм... 16 переменных по 4 Байта)) Ну прямо гроза среди контроллеров))
Такт AVR при частоте 16МГц - 1/16000000 = 0,0000000625 с = 62.5 нс * 5 тактов = 312.5 нс.
Такт ARM при частоте 48МГц - 1/48000000 = 0,0000000208 с = 20.8 нс * 12 тактов = 250 нс.
Кажется музейная атмега считает свои 5 тактов дольше чем СТМ32 12 тактов)))
У СТМ32 нет эпрома? Уверены? STM32L152 - 8кБ эпрома! А у атмеги? 512 Байт? О как много!!! Даже не знаю что же такого туда б записать. Давайте подумаем... ммм... 16 переменных по 4 Байта)) Ну прямо гроза среди контроллеров))
SIM31 30.06.19 19:29
По потреблению можно еще сравнить, новые atmega, attiny весьма экономичны.
А так всему свое применение. Если нужна мощность, берем Raspbery Pi 4 и не паримся, на Питоне еще больше возможностей, хоть web сервер поднимай полноценный, хоть Quake 3D гоняй.
Если нужны потоки данных обрабатывать есть плис (смотрите проект "Марсоход" "Марсоход2")
Автору гора плюсов, но то что Ардуина живее всех живых, говорит что не все так просто.
А так всему свое применение. Если нужна мощность, берем Raspbery Pi 4 и не паримся, на Питоне еще больше возможностей, хоть web сервер поднимай полноценный, хоть Quake 3D гоняй.
Если нужны потоки данных обрабатывать есть плис (смотрите проект "Марсоход" "Марсоход2")
Автору гора плюсов, но то что Ардуина живее всех живых, говорит что не все так просто.
konsvik 17.09.19 18:41
"Правда AVR может похвастаться Ардуиной и простатой программирования." А с каких пор AVR страдает простатой? :)
Алексей 18.09.19 06:13
А ты сравни настройки GPIO для начала.
АНОНИМ 26.10.19 12:59
Все эти достоинства просто ни о чем, по сравнению с возможностью отладки. Валяется несколько старых аврок и пиков, но приграмить их нет никакого желания, т.к. отладить все это барахло будет просто нереально. Проще выкинуть.
Алексей 27.10.19 10:14
Ничего подобного. Я для отладки использую UART. Просто пишу макросы дебага и вставляю их в код, а в терминале смотрю что происходит.