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

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

roman.com писал(а):Кто писал на Ассемблере на STM32?
Не имеет смысла.
GCC нормально оптимизирует код.
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

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

Сообщение parovoZZ »

Так что выгоднее таки?
выгоднее тинька, которая стоит 80 рублей. Правда, в доковидную эпоху стоила она 40 рублей.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

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

Сообщение roman.com »

[uquote="Мурик",url="/forum/viewtopic.php?p=4057742#p4057742"]
roman.com писал(а):Кто писал на Ассемблере на STM32?
Не имеет смысла.
GCC нормально оптимизирует код.[/uquote]
Оптимизирует с точностью до машинного такта ? ))
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

parovoZZ писал(а):выгоднее тинька, которая стоит 80 рублей.
Раньше STM32F030P4T6 на Ами можно было купить на 0.24$. STM8 и того дешевле, около 0.10 за штуку. Так что тинька слишком дорогая учитывая ее скромные возможности.
roman.com писал(а):Оптимизирует с точностью до машинного такта ?
Зачем это нужно?
Все равно прерывания не позволят точно определить время выполнения. Для измерения времени есть таймеры/счетчики. Кое-что можно сделать аппаратными средствами, без участия процессора.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15549
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Из того, с чем на практике приходилось сталкиваться именно с дотошным подсчетом тактов -
ногодрыг для обмена с далласовскими микроLAN да ногодрыг с WS2812 - подобными...
Эти протоколы в варианте ногодрыг-примитива иначе не реализовать.
Остальное в принципе пока вполне вписывается в любом ленивом варианте.
А вот протоколы ИК связи да радиоканал для дистанционного управления без аппаратной поддержки...
Скорее всего таки или к ассемблеру или к специализированным (возможно самодельным) ИС приведут...
:roll:
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

BOB51 писал(а):ногодрыг для обмена с далласовскими микроLAN да ногодрыг с WS2812 - подобными...
Можно сделать аппаратно без участия процессора. Проц только загружает новые данные в буфер или извлекает прочитанные. Причем не побайтно, а скажем по килобайту. Это значит что у процессора есть много времени на другие дела, а если их нет, можно остановить ядро уменьшив потребление.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

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

Сообщение roman.com »

ассемблер позволяет задавать любые задержки с точностью до такта проца и с кварцевой стабильностью....
например для какого-нибудь генератора импульсов с длительность импульсов наносекунды... тут ассемблеру равных нет))
Всякие протоколы ИК связи прекрасно работают на Си (там скорость маленькая), а радиоканал только на отдельной ИС...
Но меня больше интересует Ethernet на МК. Сейчас это самый востребованный протокол связи.
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

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

Сообщение parovoZZ »

Так что тинька слишком дорогая учитывая ее скромные возможности.
ЦАП, АЦП (даже два), навороченный таймер с внешними паузами, оконный вачдог, система событий, две ячейки FPGA, аппаратный умножитель....это всё скромные возможности?
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

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

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

Сообщение muravei_ »

roman.com писал(а):Оптимизирует с точностью до машинного такта ? ))
Легко! Кеил точно.
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

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

Сообщение parovoZZ »

Все это (кроме FPGA) и даже больше (например 32-ух битный таймер, RTC, внутрисхемная отладка и др.) есть в STM32F030P4T6, который в 2019 году стоит 0.24$. Сейчас цены на электронику выросли.
Там, где тинька встаёт без проблем, для СТМ надо городить обвяз. Например, батареечное или аккумуляторное питание.
Тинька 1-ой серии.
У AVR 4 такта на уход на прерывание, у СТМ - 12 что ле.. И так во всём. Так что вычислительные мощности примерно совпадают. Ну и СТМ, видимо, умышленно демпинговал цены.
0.24 - это где? Цены алика это не показатель, так как мало связаны с действительностью и отражают стоимость отбраковки, а не настоящих приборов.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="parovoZZ",url="/forum/viewtopic.php?p=4058939#p4058939"]У AVR 4 такта на уход на прерывание, у СТМ - 12 что ле..[/uquote]
Современная замена тинек - это 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, что все затормозит еще сильнее.
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

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

Сообщение roman.com »

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:
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

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

А у STM сколько тактов ?
Ни кода не работал с STM...
Аппаратно! https://www.cyberforum.ru/blogs/204791/blog5169.html
Процессор может выполнять другие задачи.
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

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

Сообщение parovoZZ »

Частота у STM32 выше минимум в 3 раза
Вот только тинька имеет RC на 20МГц, а СТМ всего 16. Либо городим внешний кварц -> деньги.
кварц на новые AVR поставить нельзя
всё ставится.
12-ти битным TCD еще сложнее.
а он вообще под другое заточен. Это таймер для управления мостом или полумостом с регулируемым deadtime
TCB - чисто событийный таймер.
Современная замена тинек - это STM32G0
да никакая это не замена. Сижу на аккуме, где напряжение от 2.7 и до 4.2. Тиньку посадил и всё. С СТМ надо городить преобразователь -> деньги.
В тиньке на борту EEPROM. У СТМ городить внешнюю флеш -> деньги. Нет, что там и там можно прямо во флеш писать, но долго ли?
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="roman.com",url="/forum/viewtopic.php?p=4058984#p4058984"]Чё ???

В жизни не городил никаких преобразователей уровней )) AVR на 3,3 V при 20MHz тактовой летает прекрасно))[/uquote]
Это на старье и в разгоне, на новые 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:
[uquote="parovoZZ",url="/forum/viewtopic.php?p=4059000#p4059000"]Вот только тинька имеет RC на 20МГц, а СТМ всего 16. Либо городим внешний кварц -> деньги.[/uquote]
У 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 во флеше зависит от того сколько флеша не жалко под это дело выделить....
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

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

Сообщение parovoZZ »

далеко не все сидят на аккумах и т.д
Ну так далеко не все сидят с энкодерами и дисплеями. Мне если надо совсем долго сидеть на батарейке, я вообще беру MSP430FR. Время жизни от батарейки в этом случае зависит от самой батарейки, ибо в паузе тикает только таймер и потребление на уровне 500 нА.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="parovoZZ",url="/forum/viewtopic.php?p=4059027#p4059027"]Ну так далеко не все сидят с энкодерами и дисплеями.[/uquote]
Большая часть современной периферии 3-х вольтовая, даже если какой-то модуль сделали специально под ардуину, то там скорее всего LDO стоит.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15549
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Ну и ....
:)))
Кстати... совсем про ПИКи подзабыли - а там весьма много новенького - и "улучшенная среднемладшая" (гибрид среднемладшей и 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:
roman.com
Друг Кота
Сообщения: 9147
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

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

Сообщение roman.com »

[uquote="Reflector",url="/forum/viewtopic.php?p=4059004#p4059004"]От задач зависит.[/uquote]
задача сложная.))
быстродействующие коммутаторы...
обработчики потокового аудио и видео...
внешняя ОЗУ на МК...
и т.д.
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:
Ответить

Вернуться в «Arduino»