Программирование ARM. Eclipse, Keil,IAR,CooCox - всё сюда.

  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #221
В данном случае я согласен с Пашей. Объявлять переменные в хидере - моветон. Шо это за лютый проект такой, где надо вагон переменных таскать в несколько файлов и экстерны не спасают? Как же ж абстрагирование от деталей реализации? Накрайняк напиши функцию через которую можно обратиться к данной переменной, если ты находишься в другой области видимости.

Бегло глянул либы, не нашел где там объявляют переменные. Только typedef'ы
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #222

ммм А структура - не те же переменные?
Или если я написал задал там переменную - єто в корне меняет дело? Могу структуру объявить - будет то же самое.
Нет, не меняет - я могу структуру объявить - будет то же самое. Переменую объявил, так как это самый простой тип данных, чтобы путаницы небыло.
Это всего лишь объявление. ни какого static, ни какого создания объектов. Просто объявление.

Так у тебя откомпилировалось, или нет?

P.S. Таки если просто объявить структуру - то можно. Но тогда её надо создавать обязательно отдельным действием где-то в .с .
Это однако задрочь, ни в одном IDE больше такого нет. Где, блядь, мой любимый процедурный подход? Это ж какая-то объектно-ориентированная хрень получается.

Бегло глянул либы, не нашел где там объявляют переменные. Только typedef'ы
Объявляются переменные типа указатель. Везде и много.



И вот так делают:
Код:
[QUOTE]/**
  ******************************************************************************
  * @file    stm32f1xx_hal_gpio.h
  * @author  MCD Application Team
  * @version V1.0.3
  * @date    11-January-2016
  * @brief   Header file of GPIO HAL module.
  ******************************************************************************[/QUOTE]
typedef struct
{
  uint32_t Pin;       /*!< Specifies the GPIO pins to be configured.
                           This parameter can be any value of @ref GPIO_pins_define */

  uint32_t Mode;      /*!< Specifies the operating mode for the selected pins.
                           This parameter can be a value of @ref GPIO_mode_define */
                           
  uint32_t Pull;      /*!< Specifies the Pull-up or Pull-Down activation for the selected pins.
                           This parameter can be a value of @ref GPIO_pull_define */
                           
  uint32_t Speed;     /*!< Specifies the speed for the selected pins.
                           This parameter can be a value of @ref GPIO_speed_define */
}[B]GPIO_InitTypeDe[/B]f;
А если я так сделаю - будет пресловутый multiple define.

То есть, обойти-то проблему можно, но это костыль, а не решение.
В либах создание структуры при объявлении - работает.
Я сделать так
Код:
struct MyStruct {
...content...
}instance;
не могу.

P.S. А. Врубился - я тайпдеф не заметил. Это тоже не экземпляр, сцуко.
 
Останнє редагування:
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #223
Именно. Ты или пиши typedef, или не создавай экземпляр структуры. Одно из двух.
Я в твоем примере выпилил название экземпляра (master) и все шикарно скомпилилось.

Короче так или иначе в хидерах переменные не объявляются.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #224

Да, я въехал уже.
Это хреновая особенность кейла. Не зря я выкидывал его в прошлый раз Больше ни один компилятор так себя не ведёт.
Может ради святаго объектнаго аринтиравания оно и хорошо, но какбы...
структ имя
{контент}объект; - это пример из любого учебника. Один из способов создавать структуру.
Объявлять, что "это моветон и поэтому я так делать вам не дам" - это называется охъуеть, а не правила хорошего тона.

Это увеличивает время на создание небольших проектов с малым числом данных. То есть, мне всю хуйню ещё и в имена заворачивать, хотя они и нахуй там не впали.

P.S. Кейл таки кривой.

Создал проект, включил автодополнение - работает.

Создал в другом месте - не работает автодополнение. Включил/переключил/выключилвключил/перезапустил кейл - не работает.

Открываю проект где работало - как работало так и работает.

P.P.S. И эти люди рассказывают мне про правила хорошего тона? И они берут за это говно деньги?
Да ебал я такой хороший тон...
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #225
создание небольших проектов с малым числом данных
не потребует много extern'ов

А в больших сам Б-г велел применять ООП-стайл, иначе охуеть можно от количества перекрестных связей.
Меня эта особенность Кейла вообще ни разу не запарила, даже не знал что можно как то иначе
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #226
А, да! Теперь же я не могу просто передать указатель к структуре! Я же теперь ещё 2 rcall должен лишних сделать и написать между ними нахуй не нужный геттер для получения разыменования и возврата его через стек в функцию, которой он нужон...
Не, ну заебись теперь. Теперь я понимаю почему у них код 1,08кБ со старта и ещё 11,7кБ при подключении GPIO, RCC, UART и USB.
Так для справки, UART вместе с 2-мя FIFO-буферами, функцией авторасчета битрейта из десятичного числа в BRRH-BRRL и очередями для буферов - 1кБ. Это я про 8-bit ки.

Про размер вправления GPIO в восьмибитках я со слезами промолчу...
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #227
Так справаж у наявності місця. Якщо є місце в флеші, то нафіга мудитись з лібами. Абсолютно нормальний підхід. Ніхто ж на асмі не пише для економії місця. От і тут пишуть виходячи з можливостй заліза - дозволяє об'єм пам'яті написати просто - пишуть.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #228
По моим подсчетам ARM на тактовой менее 96МГц с памятью менее 512кБ - проигрывает Atmega128 по всем показателям, включая целесообразность (так как она уже меньше 1$).
ИТОГО:
1. Скорость.
Имеем 16МГц против 72МГц.
Прерывание ATmega - 2 такта и я там.
Прерывание Cortex-M3 - 12 тактов.
Чтобы обеспечить такую же оперативность кортекс надо погнать до 96МГц. тогда вся "мощ" современного камня обрушится на врага и... догонит 16МГц восьмибитку.
2. Объем памяти.
Чтобы разместить команду на 8-битном камне надо 2-3 байта - байт команды и байт данных/1-2Б адреса/
Чтобы разместить команду в 32бит проце - в 4 раза больше. Мало того - большинство данных будут реально требовать всего 16бит, то есть выигрыш в скорости на операциях, требующих 32 - слихвой окупается уймой пустующего места. Да, усреднять поток 16-битных данных оно будет быстрее раза в 4. Наверное, это хорошо для каких-то навороченых сигнальных вещей, но зря в М3 отключили thumb... я на AT91SAM7 включал его - охуенная штука.
Итого, если навалить на то, что "в современных армах много памяти", случится облом - 128*4=512 как ни крути, а это старшие камни в М3-х, например. Ну, или ставьте SRAM, но кто в устройство за $20 поставит SRAM при его себестоимости у нас - 10$ без SRAM?
Нет, страну меняйте сами - я уже не в том возрасте, меня не возьмут.

Что там ещё? А, богатая периферия... тут, как бы, играет роль то, что когда ARM разрабатывали - она уже была доступна и стояла цель врубиться в рынок, а для этого надо что-то предоставить, чего у других нет.
Не вижу препятствий (да и не один я) затулить то же самое в ту же атмегу.
И оно было затулено, но почему-то производитель рещил, шо он вот щас возьмёт и весь сразу на этом обогатится и вломил невменяемые цены.
А STM - не вломил цены, а вломил Atmel-у и микрочипу.

Тему считаю раскрытой. Реальная продуктивность использования мелких АРМ-ов - вопрос чистого холивара Единственное, чем они берут - периферия.



P.S. Я так и не понял почему AT90USB128 до сих пор стоит 8,7$. Его, что, реально кто-то покупает?
Не, есть, конечно, USB16 по 2,4, но ... это цена STM32F103RBT6, который кроет 16-ху как бык овцу...
 
Останнє редагування:
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #229
1. В приложениях с большим потоком данных наличие DMA в ARM дает мощного пня под сраку Атмелу.
2. Стандартизация корпусов. Ну пестня же. Один корпус - одна распиновка. Ремап портов - дизайнеры PCB апплодируют стоя.
3. Многоуровневый контроллер прерываний с назначаемыми приоритетами. Любой вывод GPIO как источник прерывания. Мечта разработчика realtime приложений.
4. FSMC. Дисплеи с параллельным интерфейсом адресуются как память. Натравил DMA, ну ты понел...
5. USB в любом камне. За три копейки. То что с им надо ебаться пока опустим
6. Потребление же! L-серя в числе отличившихся. Не, ну у Атмела есть тини класса pico-power, но они же тини.

Гемор, секс и бубен в качестве дебаггера частично компенсируются наличием девбордов, кучи доков и местами кривых визардов различных разработчиков. Но это справедливо только для STM. Оттого и зохавал рынок.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #230
Гемора с дебагерами нет. Есть ST-link и куча китайских клонов всего. JTAG - стандартен, как ни крути, и виглер шил и AT91SAM и STM32...

Ну, да, ДМА ещё забыл
За дисплеи - не знал, к стати. Как-то не приходилось подключать к арму. Надо будет попробовать

Любой вывод на прерывание - в атмегах тоже дофига могут быть extint, к стати.

Ремап портов - условно-полезная штука. Можно с ним. Но можно и без него. Стоимость ПП от этого не меняется.

Вот многоуровневый контроллер прерываний, ИМХО - зло. Именно он порождает те 12 тактов.

Стандартизация корпусов - плюс. Но в 16-32-64 они тоже стандартны
У микрочипа - не в курсе как с этим.

P.S. Я всё-же потихоньку запасаю попкорн. Конкуренция иногда рождает химер, а иногда - шедевры.
Микрочип поглотил атмела. Что-то же на выходе должно получиться

P.P.S. Ну, или... в конце концов всех купит за отступного ST и закроет их к ебеням, чтобы не позорились
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #231
Не согласен. Прерывания - редкое по меркам микроконтроллера событие. Если оно становится частым, это или неправильно выбрана платформа или программист-дебил.
А в остальном прирост тактовой существенно помогает. Не забываем про, то что максимальные 16 МГц для мег можно получить при питании 5В, что не совместимо с жизнью большинства современных компонентов. Ставить рядами и колоннами согласователи на логике я желаю только сотрудникам Миландра.
Когда у меня встал вопрос о подключении LCD по SPI при 3,3 питания, разница между 8/2 = 4 МГц и 72/2 = 36МГц была очевидной.

Да болт с ними с 12-ю тактами. Это бывает нечасто.

Гемора с дебагерами нет.
Ну как знать. Или Кейл не едет или я ебанутый. F103VBT6 спокойно дебажу, RBT6 - хер! Он делает морду кирпичом и говорит что не найден алгоритм, зашивать/дебажить отказываюсь. Хоть усрись.

Зато удобно А еще можно программно ивенты вызывать!
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #232

В корне неверно - прерывания позволяют контролировать надцать физических процессов параллельно, ускоряя работу аппаратного комплекса в разы и частота прерываний определяется только физикой управляемого процесса и возможностями самого МК.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #233
совершенно сапоги. больше тама ничего эдакого нету.
единственное шо, мне нравятся f411 и иногда f303 если бы блять не жались а сделали в четверках ацп 15 мгц в интерливе я б вообще харе кришна пел.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #234
Забываем, я уже писал тут - все меги сейчас идут с индексом "А". Они уже на другой, наверное, технологии, на 5В они оверклочатся до 48МГц с внешним кварцем.
От 3,3 они пилюлят с внешним на 32МГц. То есть - 16 там во всем диапазоне.
родной генератор заводится на 3,3В даже на 20МГц, но мне стрёмно так оставлять


Да болт с ними с 12-ю тактами. Это бывает нечасто.
Я говорю про оперативность. Не насколько часто, а насколько быстро я начну делать то, что надо по этому событию.


А кейл обновился? Менеджер пакетов включи и посмотри.


Зато удобно А еще можно программно ивенты вызывать!
Я ваще могу любую функцию вызвать!
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #235
Это как раз понятно, но если прерывания будут прилетать часто настолько, что 12 тактов будут играть существенную роль, то на основной код уже времени почти не останется и появляются конкретные шансы захлебнуться.
А система приоритетов прерываний тут огромный плюс, позволяет наиболее гибко использовать возможности проца и оптимально разруливать процессы.

Неа. Эксперименты экспериментами, но в даташите есть график Safe Operating Area. 16 МГц от 4,5 Вольт. Страница 416, даташит ревизии 8151A -08/08.


А кейл обновился? Менеджер пакетов включи и посмотри.
Кейл один и тот же.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #236

Это поддержу, но это контролируется ещё на этапе выбора контроллера, частоты ядра и параметров обрабатываемого физического процесса
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #237

Давайте не будем забывать что происходит в корексе-м3 за эти 12 тактов помимо попадания процессора в код обработчика. Плюс всякие ништяки типа tail-chaining / late arrival. Это то что лежит на поверхности. А если копнуть глубже в сторону msp/psp, поддержки мультитаскинга то там 8-кам совсем приходиться печально, поэтому сравнивать эти камни как бы гиблое дело imho.


Я себе слабо представлю железяку на арме в которой прерывания летят скажем каждые 100 тактов (1нс, Карл!). Ну это же идиотизм чистой воды, там явно плисина проситься по крайней мере в качестве буфера.




atmega128 1$ ?
 
Останнє редагування:
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #238

И я ж об этом.

Все верно. Видел на Али лот 13$ за 20 штук.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #239
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.

Operating Voltages
– 2.7 - 5.5V
• Speed Grades
– 0 - 16MHz
Там больше нету сноски на 3,3 и 5. То есть - верно во всем диапазоне питания.


Пока ті писал - стало
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.


Єто не касается всей остальной продукции атмела.
Есть всего 2 целесообразніх микросхемі - Атмега8 (около 0,5$) и Atmega128( около 1$)/ Остальное ценообразование у них неадекватное.
 
  • 🔴 21:27 Повітряна тривога в м. Харків та Харківська територіальна громадаСлідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #240
Там больше нету сноски на 3,3 и 5. То есть - верно во всем диапазоне питания.
Посмотри все таки график 32-1 на странице 416. То что написано на первой странице это следствие общей тенденции делать из технической документации рекламные буклеты.


+много. Остальные не имеют смысла. А не, Тиня13 еще по 30 центов, и то не из-за жадности а из соображений удобства трассировки платы.