Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

Re: Работа с регистрами

Вт июл 06, 2021 23:11:48

roman.com писал(а):Кто писал на Ассемблере на STM32?
Не имеет смысла.
GCC нормально оптимизирует код.

Re: Работа с регистрами

Ср июл 07, 2021 02:06:22

Так что выгоднее таки?

выгоднее тинька, которая стоит 80 рублей. Правда, в доковидную эпоху стоила она 40 рублей.

Re: Работа с регистрами

Ср июл 07, 2021 11:24:13

roman.com писал(а):Кто писал на Ассемблере на STM32?
Не имеет смысла.
GCC нормально оптимизирует код.

Оптимизирует с точностью до машинного такта ? ))

Re: Работа с регистрами

Ср июл 07, 2021 13:48:37

parovoZZ писал(а):выгоднее тинька, которая стоит 80 рублей.
Раньше STM32F030P4T6 на Ами можно было купить на 0.24$. STM8 и того дешевле, около 0.10 за штуку. Так что тинька слишком дорогая учитывая ее скромные возможности.

roman.com писал(а):Оптимизирует с точностью до машинного такта ?
Зачем это нужно?
Все равно прерывания не позволят точно определить время выполнения. Для измерения времени есть таймеры/счетчики. Кое-что можно сделать аппаратными средствами, без участия процессора.

Re: Работа с регистрами

Ср июл 07, 2021 14:22:50

Из того, с чем на практике приходилось сталкиваться именно с дотошным подсчетом тактов -
ногодрыг для обмена с далласовскими микроLAN да ногодрыг с WS2812 - подобными...
Эти протоколы в варианте ногодрыг-примитива иначе не реализовать.
Остальное в принципе пока вполне вписывается в любом ленивом варианте.
А вот протоколы ИК связи да радиоканал для дистанционного управления без аппаратной поддержки...
Скорее всего таки или к ассемблеру или к специализированным (возможно самодельным) ИС приведут...
:roll:

Re: Работа с регистрами

Ср июл 07, 2021 17:21:18

BOB51 писал(а):ногодрыг для обмена с далласовскими микроLAN да ногодрыг с WS2812 - подобными...
Можно сделать аппаратно без участия процессора. Проц только загружает новые данные в буфер или извлекает прочитанные. Причем не побайтно, а скажем по килобайту. Это значит что у процессора есть много времени на другие дела, а если их нет, можно остановить ядро уменьшив потребление.

Re: Работа с регистрами

Ср июл 07, 2021 20:59:05

ассемблер позволяет задавать любые задержки с точностью до такта проца и с кварцевой стабильностью....
например для какого-нибудь генератора импульсов с длительность импульсов наносекунды... тут ассемблеру равных нет))
Всякие протоколы ИК связи прекрасно работают на Си (там скорость маленькая), а радиоканал только на отдельной ИС...
Но меня больше интересует Ethernet на МК. Сейчас это самый востребованный протокол связи.

Re: Работа с регистрами

Пт июл 09, 2021 21:04:32

Так что тинька слишком дорогая учитывая ее скромные возможности.

ЦАП, АЦП (даже два), навороченный таймер с внешними паузами, оконный вачдог, система событий, две ячейки FPGA, аппаратный умножитель....это всё скромные возможности?

Re: Работа с регистрами

Сб июл 10, 2021 14:09:18

parovoZZ писал(а):ЦАП, АЦП (даже два), навороченный таймер с внешними паузами, оконный вачдог, система событий, две ячейки FPGA, аппаратный умножитель....это всё скромные возможности?
Все это (кроме FPGA) и даже больше (например 32-ух битный таймер, RTC, внутрисхемная отладка и др.) есть в STM32F030P4T6, который в 2019 году стоит 0.24$. Сейчас цены на электронику выросли.
Кстати вы так и не назвали тиньку. Они разные бывают.

Re: Работа с регистрами

Сб июл 10, 2021 14:10:59

roman.com писал(а):Оптимизирует с точностью до машинного такта ? ))

Легко! Кеил точно.

Re: Работа с регистрами

Сб июл 10, 2021 21:39:22

Все это (кроме FPGA) и даже больше (например 32-ух битный таймер, RTC, внутрисхемная отладка и др.) есть в STM32F030P4T6, который в 2019 году стоит 0.24$. Сейчас цены на электронику выросли.

Там, где тинька встаёт без проблем, для СТМ надо городить обвяз. Например, батареечное или аккумуляторное питание.
Тинька 1-ой серии.
У AVR 4 такта на уход на прерывание, у СТМ - 12 что ле.. И так во всём. Так что вычислительные мощности примерно совпадают. Ну и СТМ, видимо, умышленно демпинговал цены.
0.24 - это где? Цены алика это не показатель, так как мало связаны с действительностью и отражают стоимость отбраковки, а не настоящих приборов.

Re: Работа с регистрами

Сб июл 10, 2021 23:13:09

У AVR 4 такта на уход на прерывание, у СТМ - 12 что ле..

Современная замена тинек - это STM32G0, там на вход в прерывание тратится 15 тактов, но при этом сохраняются флаги, четыре 32-х битных регистра общего назначения и нужно именно ровно 15 тактов, а AVR команды дробить не умеет, потому если прерывание произойдет в момент выполнения инструкции длящейся 3 такта, то суммарно будет 6, а не 4. Опять же у кортексов минимум 4 полноценных приоритета прерываний, а у AVR всего два и то второй с ограничениями. Частота у STM32 выше минимум в 3 раза, соответственно в тактах AVR 15 превращается в 5...

parovoZZ писал(а):И так во всём.

Я неделю поигрался в tiny1614 и обнаружил просто огромное количество недостатков если сравнивать с STM32, начиная с того, что Errata на мелкую тиньку сопоставима по размеру с таковой для моего STM32F7. Возьмем хоть таймеры, у мелких G0 семь 16-ти битных и по одному 24-х и 32-х, если нужно просто попинать любую периферию можно взять любой из 8-ми, т.к. они все практически одинаковые, просто у некоторых есть дополнительные возможности. Когда нужен аппаратный энкодер, берем любой из 4-х таймеров, а если подключаем пульт, то подойдет любой двухканальный. Фактически я у себя в либах только номера таймеров меняю... У тиньки 3 или 4 таймера трех значительно отличающихся видов, один 12-ти битный и остальные 16-ти битные. Для примера, вот такие у этих таймеров пределители:
TCA - 1/2/4/8/16/64/256/1024
TCB - 1/2/TCA_CLK
TCD - 1/4/32

Даже на таком уровне таймеры значительно отличаются и если вы где-то задействовали TCA, то заменить его TCB может быть не так просто, а 12-ти битным TCD еще сложнее.
Попробуйте хотя бы просто заставить эти таймеры отсчитывать us при 20MHz тактовой, что на STM32 делается легчайшим образом и не забываем, что кварц на новые AVR поставить нельзя, так что и точность счета будет соответствующая. Опять же таймеры относительно простые, если нужен аппаратный энкодер, то придется потратить TCA+TCB+CCL.

parovoZZ писал(а):Так что вычислительные мощности примерно совпадают.

Если писать программы которые входят в прерывание, ничего не делают, выходят и сразу входят снова и если сделать вид, что у STM32 нет DMA, то да :) Если прицепить графический SPI дисплей, то сразу станет понятно насколько большая разница между мк даже если особо ничего не считать, просто за счет большей частоты и наличия DMA. И еще останется второй SPI и минимум 3 USART, можно ко второму SPI прицепить флеш или SD, которые как и дисплей будут 3-х вольтовыми и для AVR придется или говорить преобразователи уровней или довольствоваться 8 MHz, что все затормозит еще сильнее.

Re: Работа с регистрами

Сб июл 10, 2021 23:50:21

Reflector писал(а):кварц на новые AVR поставить нельзя

Чё ???

В жизни не городил никаких преобразователей уровней )) AVR на 3,3 V при 20MHz тактовой летает прекрасно))

3 USART нафиг никому не нужны когда есть SPI.
SPI на AVR при 3,3 V для дисплей 10 Мбит/c при 20MHz тактовой летает прекрасно))
Хотя у STM в ~2 раза больше... Только не все дисплеи потянут)) Но это отдельная тема.

4 такта на прерывание у AVR... или 15 такта на прерывание у STM... пофигу)) Слишком много.

таймеры 8 и 16 бит достаточно для любых задач))

Значит будем дрыгать ножками у AVR ))
OUT PORTD, R0 // Запись регистра -1 такт
OUT PORTD, R1 // Запись регистра -1 такт

А у STM сколько тактов ? Никада не работал с STM...
:tea:

Re: Работа с регистрами

Сб июл 10, 2021 23:58:44

roman.com писал(а):Значит будем дрыгать ножками у AVR ))
OUT PORTD, R0 // Запись регистра -1 такт
OUT PORTD, R1 // Запись регистра -1 такт

А у STM сколько тактов ?
Ни кода не работал с STM...
Аппаратно! https://www.cyberforum.ru/blogs/204791/blog5169.html
Процессор может выполнять другие задачи.

Re: Работа с регистрами

Вс июл 11, 2021 00:16:14

Частота у STM32 выше минимум в 3 раза

Вот только тинька имеет RC на 20МГц, а СТМ всего 16. Либо городим внешний кварц -> деньги.

кварц на новые AVR поставить нельзя

всё ставится.

12-ти битным TCD еще сложнее.

а он вообще под другое заточен. Это таймер для управления мостом или полумостом с регулируемым deadtime
TCB - чисто событийный таймер.

Современная замена тинек - это STM32G0

да никакая это не замена. Сижу на аккуме, где напряжение от 2.7 и до 4.2. Тиньку посадил и всё. С СТМ надо городить преобразователь -> деньги.
В тиньке на борту EEPROM. У СТМ городить внешнюю флеш -> деньги. Нет, что там и там можно прямо во флеш писать, но долго ли?

Re: Работа с регистрами

Вс июл 11, 2021 00:52:35

Чё ???

В жизни не городил никаких преобразователей уровней )) AVR на 3,3 V при 20MHz тактовой летает прекрасно))

Это на старье и в разгоне, на новые AVR нельзя поставить кварц, даже не меги, не положено :)

roman.com писал(а):3 USART нафиг никому не нужны когда есть SPI.

От задач зависит.

roman.com писал(а):SPI на AVR при 3,3 V для дисплей 10 Мбит/c при 20MHz тактовой летает прекрасно))
Хотя у STM в ~2 раза больше... Только не все дисплеи потянут)) Но это отдельная тема.

У меня G0 с 64MHz гонится до 140 и SPI дисплей 320x240 работает при 70MHz, 240x240 при 64-х, а AVR без кварца разгонишь только если генератор поставить, так что разница минимум в 3 раза, максимум в 7 и это без учета FIFO и DMA. На старые AVR можно кварц поставить, но там SPI совсем примитивный, не умеет даже без зазора байты отправлять...

roman.com писал(а):А у STM сколько тактов ? Никада не работал с STM...
:tea:

От серии зависит, F3 может за 2 такта читать с порта в память с инкрементом адреса, другие медленнее, обычно такта 4, но за 3-5 тактов можно то же самое делать при помощи DMA, обычно так осцилы/ЛА работают.

Добавлено after 29 minutes 52 seconds:
Вот только тинька имеет RC на 20МГц, а СТМ всего 16. Либо городим внешний кварц -> деньги.

У STM есть PLL, на G0 можно с кварцем или без наклацать любую частоту до 128MHz с шагом 1MHz и выше с шагом 2MHz.

parovoZZ писал(а):всё ставится.

Открываю DS на mega4808:
Код:
– Clock options:
•  16/20 MHz low-power internal oscillator
•  32.768 kHz Ultra Low-Power (ULP) internal oscillator
•  32.768 kHz external crystal oscillator
•  External clock input

Внешний кварц только часовой, у G0 наличие второго кварца зависит от корпуса, он есть в корпусах от 48-ми ног. У других серий можно и на мелкие ставить, но часового у мелких наоборот может не быть.

parovoZZ писал(а):а он вообще под другое заточен. Это таймер для управления мостом или полумостом с регулируемым deadtime
TCB - чисто событийный таймер.

Без разницы под что он там заточен, пользоваться этими таймерами не удобно и их мало. На STM я пишу либу для энкодера юзающую таймер с уверенность, что практически всегда такой свободный таймер найдется, на AVR нужно два конкретных таймера и CCL, значит напиши либу под них, а потом еще чисто софтовую, или ничего не пиши заранее, напишешь по ходу конкретного проекта :)

parovoZZ писал(а):да никакая это не замена. Сижу на аккуме, где напряжение от 2.7 и до 4.2. Тиньку посадил и всё. С СТМ надо городить преобразователь -> деньги.
В тиньке на борту EEPROM. У СТМ городить внешнюю флеш -> деньги. Нет, что там и там можно прямо во флеш писать, но долго ли?

Во-первых, есть STM32L0 c EEPROM, во-вторых, у практически любого мк будут какие-то преимущества, далеко не все сидят на аккумах и т.д.... В третьих, имелось в виду не что G0 должен заменить AVR, а что из всех серий STM32 именно G0 для этого больше всего подходит. А ресурс при эмуляции EEPROM во флеше зависит от того сколько флеша не жалко под это дело выделить....

Re: Работа с регистрами

Вс июл 11, 2021 01:18:00

далеко не все сидят на аккумах и т.д

Ну так далеко не все сидят с энкодерами и дисплеями. Мне если надо совсем долго сидеть на батарейке, я вообще беру MSP430FR. Время жизни от батарейки в этом случае зависит от самой батарейки, ибо в паузе тикает только таймер и потребление на уровне 500 нА.

Re: Работа с регистрами

Вс июл 11, 2021 01:30:11

Ну так далеко не все сидят с энкодерами и дисплеями.

Большая часть современной периферии 3-х вольтовая, даже если какой-то модуль сделали специально под ардуину, то там скорее всего LDO стоит.

Re: Работа с регистрами

Вс июл 11, 2021 08:10:48

Ну и ....
:)))
Кстати... совсем про ПИКи подзабыли - а там весьма много новенького - и "улучшенная среднемладшая" (гибрид среднемладшей и 18й серий) и 24я серия. Новая аппаратная начинка и надо отдать должное - наименьшее энергопотребление из "классических" семейств.
Относительно mcs51 в представлении nuvoton и STC совсем не слова...
Да и АВРки уже совсем иные пошли, весьма отличающиеся от "стандартных"...
А для любителей "систем-на-кристалле" такая зверюга как RP2040 (Raspberri Pi Pico в "стандартной" группе платформ ардуиноIDE) к примеру...
Ежли уж сравнивать, то на конкретных схемах , одинаковых по функционалу и с предоставлением конкретных исходников по ВСЕМ группам семейств.
И без излишнего фанатизьму.
8)
Подобный вариант перепроверки практикой я в старой
https://radiokot.ru/forum/viewtopic.php?f=62&t=94201
начинал, да позднее в
https://radiokot.ru/forum/viewtopic.php?f=62&t=156720
предпочел спорам совместное использование в проектах всех освоенных семейств, включая и ардуинку с ее разновидностями.
Так что считаю лучшим вариантом не "спор фанатов"(до "шорсть клоччами"), а взаимодействие специалистов по конкретным семействам по выбору наиболее лучших решений и приемов работ.
Ибо удачное решение в одном из семейств вполне может использоваться и при работе с в другим. Мы же любители и обязательствами на "недопущение применения приемов/алгоритмов" не ограничены (как те же фирмы-изготовителисогласно лицензионно-авторских прав).
:beer:

Re: Работа с регистрами

Вс июл 11, 2021 11:23:01

От задач зависит.

задача сложная.))
быстродействующие коммутаторы...
обработчики потокового аудио и видео...
внешняя ОЗУ на МК...
и т.д.
Reflector писал(а):64MHz гонится до 140 и SPI дисплей 320x240 работает при 70MHz...

дисплей 320x240 подключали в прошлой теме... 320x240. Режим Parallel.
https://www.radiokot.ru/forum/download/ ... ?id=356452
https://www.radiokot.ru/forum/download/ ... ?id=356588
считали пиксели... выводили текст и графику... считали кадры))
На AVR получается мало кадров. Потоковое видео с Интернета не посмотришь... ))

У меня конкретный вопрос !!! Допустим нужен буфер FIFO. Сколько тактов всё это занимает ???
Мурик писал(а):Аппаратно! https://www.cyberforum.ru/blogs/204791/blog5169.html

Там ни слова про такты...
Reflector писал(а):От серии зависит, F3 может за 2 такта читать с порта в память с инкрементом адреса, другие медленнее, обычно такта 4, но за 3-5 тактов можно то же самое делать при помощи DMA, обычно так осцилы/ЛА работают.

:dont_know:

Пример.
Есть AVR на 3,3 V работает от кварца или внешнего генератора (не важно) до 25 МГц.

Для примера есть простенькая программка буфер FIFO.

_1:
IN R0, PINC // Читаем Port С -1 такт
STS _x, R0 // Запись SRAM -2 такт
LDS R0, _x // Читаем SRAM -2 такт
OUT PORTD, R0 // Запись Port D -1 такт
RJMP _1 // Переход _1 -2 такт

Итого вся программа буфер FIFO крутится по кругу и занимает 8 тактов.
Всё работает.
Только один минус - частоты до 25 МГц мало.

Вопрос !!!!!!!! Можно ли такую же "фишку" сделать на STM ? На частоте скажем 60 МГц.
И столько тактов это всё займёт ?
:tea:
Ответить