Здесь обсуждают особенности различных микроконтроллеров и программируемых логических интегральных схем.
Также задают вопросы по теме и дают на них ответы.
Микропроцессорная 32-х битная архитектура ARM становится всё более популярной среди разработчиков электронных устройств.
Микроконтроллеры семейства STM32F10x с архитектурой ARM Cortedx-M3 привлекательны своей низкой стоимостью, а также большим количеством различных устройств внутри кристалла и их цена уже сравнялась с ценой 8-разрядных микроконтроллеров AVR ATmega. Но разработчики, которые имеют опыт работы с микроконтроллерами AVR заметят, что программирование микроконтроллеров ARM несколько сложнее.
Я тоже решил поработать с контроллерами STM32F10x.
В ветке, посвящённой программаторам и отладчикам, справедливо замечено, что контроллеры данного семейства в части средств разработки и отладки закрытые, то есть средства отладки изначально не предназначены для повторения другими людьми и сделаны так, чтобы повторение было трудным и длительным по времени. Что касается сред разработки, то там положение то же самое - стараются подсадить на закрытые, которые нужно покупать, иначе их возможности ограничены и, помимо прочего, даже если свободно скачивать с сайта, то надо оставлять свои личные данные.
С платными средами разработки связываться не хочу, так как они часто "страдают" отклонениями от стандарта на язык Си.
Поэтому остаётся естественный выбор - набор свободных компиляторов GCC.
Для пользователей винды доступен инструментарий Yagarto, представляющий собой собранные под винду CNU/Binutils, GNU/GCC и Newlib (библиотека языка Си для микроконтроллеров) : [ссылка]
Но в ходе освоения приходится сталкиваться с трудностями.
В Newlib нету описаний портов ввода-вывода и процедур обработки прерываний применительно к отдельно взятому типу микроконтроллера, как это следано в AVR-Libc. Как люди выходят из этого положения при работе с микроконтроллерами с архитектурой ARM и с семейством STM32F в частности?
Игрушки хорошие, спору нет.
Но мы люди прагматичные - неохота паять два дня генератор- за час написал код-
зашил в таракана и готово.
А АРМы это уже ближе к компьютеру. Дня два будешь то же самое ковырять.
Ну и где выигрыш по сравнению с пайкой?
Попробуй для примера написать программу для генератора пачек.
Для десульфатора нужны не просто короткие импульсы -
а пачки состоящие из нескольких импульсов разной длительности,
затем перерыв и снова повторение.
Если не ошибаюсь, то в отличие от PIC и AVR армы хотябы могут программу из RAM исполнять, а не только из намертво прошитого в ROM. Лично мне проще прогу по COM порту закинуть в контроллер, а там лоадер уже ее запустит, и забудете нафиг про ограничение циклов перезаписи, кои иногда далеко не дотягивают до заявленых.
Ну, возможно, будет небольшой гемор с BGA. А в остальном токо плюсы: куча портов, частота повыше, кому надо - линух могут прикрутить.
Никому не верьте, АРМы - контроллеры глупые. Они дейсвительно переходной вариант. Все команды гоняют по 32 бита. Много занимает программа. Тяжкие в настройке (если на ассемблере писать)
Когда требуется повышенная вычислительная способность, то вместо АРМов рекомендую DSP Analog Devices BlackFin 532-533(например). Это 400МГц, море вычислительных возможностей. За один такт этот процессор может совершать 4 логические операции с 8ми битными данными или 2 с 16 битными. Это чудо очень простое в освоении(как АВР). Стоит чуть дешевле АРМа. Программы к нему (даже связанные с видеообработкой) не превышают 32К. Среда качается с офиц сайта и работает 3 месяца на одном компе. Потом можно переставить на другой или перевести дату. А есть и кряк в сети.
А АРМ - это коммукативный процессор. Много портов ввода-вывода, поддержка ЮСБ, сети, хорошая ДМА поддержка. И много быстрой Флеш-памяти!
Поэтому я комбинирую эти 2 и более процессора. АРМ работает на кнопки, АЦП, ЖК и тд. АРМ подключается к ПК, определяясь как ЮСБ флешка(мой загрузчик). Я копирую на эту флешку программу АРМА и программы других процессоров, файлы шрифтов, настроек и тд. Фиксированная ФАТ таблица не дает возможности попасть туда вирусам(любым левым файлам). Выдергиваю штекер ЮСБ и АРМ перезагружает всю систему. Сам запускается по новой программе и загружает через И2С другие процессоры. Вот здесь АРМ незаменим.
Ядро АРМа - хорошее. Надо понимать , что это современный подход с нуля,
в отдичии от Интеловских процев- там заплатка на заплатке, и заплатки на ошибках даже, чтобы была совместимость - повторяют эти ошибки в новых процах.
Поэтому одно чтение из памяти у него достигает 200 тактов.
Так что пеньковые 2 гигагерца - это реально всего 10 мегагерц может получится.
Поэтому и крутится Винда на АРМе быстрее чем на крутых пеньках.
И питания хватает одной батарейки , и никаких кулеров с тепловыми трубками.
И Мелкософт уже компилит 7 и 8 винду под АРМ.
Вот здесь их перспектива.
А программерам удобнее иметь одну платформу на все случаи жизни.
Вот отсюда и появились мелкие АРМы для кофеварок.
Да, железо стало дешевле программы.
И если кто, имея опыт на 8 разрядных камнях, задумает перейти на что то более
современное- то никакой 16 разрядной экзотики- однозначно - АРМ.
Надо. Но у меня 4 договора на подходе в следующем месяце. Пока ничего не могу спланировать.
А DSP все ровно для спецвычислителей лучше будет! Разумеется, кофеваркам надо умещаться в АВР. Это криворукие программеры испытывая нехватку ресурсов лезут в АРМы, вместо того, что бы совершенствовать свое мастерство. У меня есть девайс, где на АВР (tiny2313) происходит обработка видео в реальном режиме времени.
Камера видеонаблюдения подключается и устройство считает по 4рем полосам движения количество проходящих ТС. После чего этот же контроллер накладывает на композит результат - количество проехавших ТС в минуту и время (в углу картинки). На выходе простой телик все это показывает.
DigitalM Пост: 314082 От 29.Jun.2011 (14:56)
.... Это криворукие программеры испытывая нехватку ресурсов лезут в АРМы, вместо того, что бы совершенствовать свое мастерство. У меня есть девайс ....
Вот это правильная мысль, уважуха и респект ....
Обленились на Винде ..., а теперь в МК с тем же подходом ...
_________________ Если что-то может сломаться, то оно всегда сломается
Это криворукие программеры испытывая нехватку ресурсов лезут в АРМы, вместо того, что бы совершенствовать свое мастерство.
Не в целях холивара, а образования для... Обработка видео в реалтайме эт канеш все хорошо. А если более приземленные вещи. Предположим, что действительно криворукие. 😀 И да-лезут, паимаиш. И мегагерцев им мало, и портов.
Как Вы расцениваете вероятность исполнения скажем ну если не на тиньке, а на меге88 генератора импульсов с точностью до такта (ну вот хочу до такта и всё тут, принципиально), с управлением по COM порту от компа. Хрен с ним, пусть даже будет одноканальный без синхронизации.
С ПК лоадер ждет 3 параметра в тактах: задержка с момента ловли команды "старт" до начала запуска цикла, длительность t и T-t. Т.е. 3 задержки по сути.
В диапазоне, например, ну пусть от 4 тактов и до секунд десяти. С шагом в 1 такт. Все 3 параметра. Ну вот просто интересно и как тут "изящно" без брутального перебора всех комбинаций что-либо выжать из AVR. Причем с минимальными таймингами при 20 MHz тактовой это даст всего-лишь 5 MHz. Ну такая вот кофеварка... 😀
JOKER Пост: 314192 От 30.Jun.2011 (10:55)
<Причем с минимальными таймингами при 20 MHz тактовой это даст всего-лишь 5 MHz. Ну такая вот кофеварка... 😀
Неправда ваша. Как раз у тинек таймер тактируется от умножителя
тактовой и получается порядка 80 мгц- и выводить можно прямо- аппаратно
на выход без програмных тактов.
А если разогнать....
Основной ограничитель - это флэш-память.
Она может работать до 50 мгц и умножитель тактовой для тамеров на 4 - 200 мгц реально выжать.
Поигрался с филлипсовскими армами, самыми простейшими LPC2103. Два источника питания, много ножек, все мелкие. Для серьезных задач это плюс а для более простых задач лучше Атмеги ничего не придумано.
Да, АВР овское ядро построено по той же идеологии что и АРМ.
Только все проще. И политика правильная- запихнули всю периферию в один кристал и гонят тиражами, снижая цену.
Тут у ПИК ов самый главный недостаток.
Они экономят на периферии- вот тебе либо таймеры, либо ацп, либо каналы связи
и все это разные кристаллы, ни у одного торговца не найдешь весь ассортимент.
Маленькие тиражи- выше цены.
Что то я не понимаю про умножители в Тини. Может это какие то новые Тиньки. На сколько я знаю, в Тиньках порты тактируются Системная частота/4, поэтому они очень медленные при программной работе с портами. Для генератора надо исспользовать аппаратный ШИМ, а для хитрых сигналов, параметры этого ШИМа можно менять на лету. Эсли нужен контроллер, который действительно быстро работает с портами на программном уровне, то это ПИК. Я исспользую ПИКи только, когда мне нужны шустрые переключения режимов без лишних эмоций.
Вот у меня на Тини 2313 гена. 2 независимых ШИМ. У обоих регулируется частота и скважность. У первого прямой и инверсный выходы. Можно включить амплитудное модулирование первого вторым (резонанс в резонанс). Управление джойстиком от мобилки. При АМ как раз и меняются парамеры ШИМ на лету по прерыванию. А еще кварцевая стабилизация частоты и питание как от 5, так и от 12В(АКБ). На выходе подключен сьемный ИРФ-мост, он фронты кушает, но его можно вплоть до КЗ мучать.
DigitalM Пост: 314337 От 01.Jul.2011 (11:18)
Вот у меня на Тини 2313 гена.
Все АВР ы делятся на классик, тини и меги.
2313 была классик, Поскольку с классиками завязали, то сохранили ее
в серии тини, но она так и осталась классиком.
У серии тини тактирование чуть другое
С AVR-ами гораздо проще работать, чем с ARM. Сравниваю работу с инструментарием GNU/GCC для обеих платформ.
Учусь работать с STM32F10x, так для того, чтобы написать простейшую программу, необходимы дополнительно файлы исходников на языке Си из библиотек "CMSIS" и "STM32F10x_StdPeriph_Driver", а также загрузчик на Ассемблере из библиотеки "CMSIS. И эти исходники нужно включать в перечень файлов, необходимых для компиляции программы.
В случае с AVR, то там при компоновке достаточно одной лишь ссылки на avr-libc, а в исходниках достаточно лишь сослаться на нужные заголовочные файлы.
Я тоже с интересом смотрю в сторону АРМ, но более прозаично.
Старенький сотик имеет готовую структуру для многих применений,
хоть авто, хоть охрана.
Готовая камера заднего обзора, все виды связи- звуковая, видео, клава, радиоканал....
И все уже запаяно, что на коленке уже сделать нереально.
Ну и цена на старый сотик дешевле картошки.
Я тоже с интересом смотрю в сторону АРМ, но более прозаично.
Старенький сотик имеет готовую структуру для многих применений,
хоть авто, хоть охрана.
Готовая камера заднего обзора, все виды связи- звуковая, видео, клава, радиоканал....
И все уже запаяно, что на коленке уже сделать нереально.
Ну и цена на старый сотик дешевле картошки.
Дык, эНто в точности - мой любимый подход к делу:)
Все проходят мимо "валяющейся под ногами какашки", а я так гляну и в голве уже вертится авто-определение природы этой "какашки" и как её можно "пристроить к делу"...;)
Пы.Сы.: - жена к такому подходу относится весьма критично...😀
А можно на основе двух сотовых таких сделать индивидуальную радиостанцию, доработав прошивку? Дело в том, что тема RF интерфейса на картинке не раскрыта
Если хочешь- смотри.
Но главное- голосовые каналы разнесены строго по частоте от базы и обратно.
Надо фильтры антенные менять кроме прошивки.
Но есть служебный канал- он на общей частоте - разделение идет тайм слотами-
по времени.
Вот его можно юзать. правда скорость небольшая - скорее для смс-сок или очень
прирезанный голос - типа железнодорожных кричалок.