Например TDA7294

Форум РадиоКот • Просмотр темы - Котуинко
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Чт мар 05, 2026 22:44:44

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 2383 ]     ... , , , , 120
Автор Сообщение
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср фев 18, 2026 17:14:58 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15498
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
У АРМов не так много для того, чтоб за длительное время работы с ними изучить.
Просто подход иной требуется.
Лежат у меня материалы по тем АРМам...- да пока особой надобности в них не вижу... Просто "для коллекции".
Выдать для них чего то особо нового вряд ли ожидаемо - все возможные варианты уже были.
Да и смысл в основном на превращение ящика персонального ПК в один кристалл МК при соответствующих практических приложениях. Для иных целей явно избыточно - по сему и 8 битники будут продолжать свое существование.
Учить чего то ради "спортивного интереса" только при полном истощении возможностей уже используемого смысл есть
(если конечно это не необходимость работы - там иной подход, не для пенсика :wink: ).
:roll:
Относительно "быстрого воспоминания" - у меня все старые изученные материалы восстанавливаются в рабочее состояние за день - два (это при склерозе то)... А их аж минимум три рабочих комплекта - MCS51, PIC10/12/16(старые "среднемладшие") и AVR... Пройденный материал достаточно легко вспомнить.
8)
Теперь относительно Вашего примера...
Совсем другое "семейство" МК, совершенно иная тема приложения - сравнивать достаточно проблематично...
:dont_know:
Разве что если бы мой изначальный пример "замигайки" был бы трансформирован в аналогичный по схеме, алгоритму и результату работы пример для... той же, к примеру, Blue Pill (вроде там STM32F103C8T6), что в наборе платформ для ардуиноIDE имеется...
И в таком же сравнении - проект на "чистом ассемблере", проект под ардуиноIDE и проект в специализированной для АРМ среде разработки.
Вот тогда можно чего то и сравнивать...
Но там надо или ассемблер да доку на МК перечитать или "на скору руку" использовать встроенный в функционал адуринки millis(), что явно подпортит картинку..
А иначе - носом в даташит... ББЫРРРШШШШ... :facepalm:
Да и схемку чертить, чего то под макетку лепить - на один раз как то совсем леенькиии... Тем более не читавши доку на тот STM...
:sleep:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср фев 18, 2026 20:04:29 
Встал на лапы

Зарегистрирован: Пн фев 16, 2026 17:30:02
Сообщений: 113
Рейтинг сообщения: 0
Проект замигайки на СТМ? Ну это классика. Могу сказать, что получится такой же самый результат, поскольку у АРМ нет разницы между ОЗУ и регистрами периферии в плане работы инструкций с ними.
Вот пример для BluePill. Настройку пинов и тактирования опускаю, чтобы не мешались. Чисто переключение PС13 (светик) и задержка Delay.
Код:
void Delay(volatile uint32_t count)
{
    while(--count);
}

int main()
{
    while(true)
    {   
        GPIOC->BSRR = GPIO_BSRR_BS13; // PC13 = high
        Delay(1000);
        GPIOC->BSRR = GPIO_BSRR_BR13; // PC13 = low
        Delay(2500);
    }
}


При включении -O3 компилируется так:
Код:
20000150:    mov.w   r0, #8192   ; в r0 записывается 0x2000, (эквивалент GPIO_BSRR_BS13 ) 
20000154:   mov.w   r1, #536870912   ; в r1 записывается 0x20000000 (эквивалент GPIO_BSRR_BR13)
20000158:   ldr   r2, [pc, #20]   ; (20000170 <main+0x20>)  в r2 заносится базовый адрес регистров GPIOC

2000015a:   mov.w   r3, #1000   ; в r3 заносится задержка 1000

2000015e:   str   r0, [r2, #16] ; ---- PC13 = high! -----

20000160:   subs   r3, #1 ; Отсчет задержки, уменьшая на 1 содержимое r3, с воздействием на флаги состояния
20000162:   bne.n   20000160 <main+0x10> ; если в r3 не 0, повторить предыдущую инструкцию

20000164:    movw   r3, #2500   ; 0x9c4 ; в r3 заносится задержка 2500

20000168:   6111         str   r1, [r2, #16] ; ---- PC13 = low! ----

2000016a:   3b01         subs   r3, #1 ; Отсчет задержки, уменьшая на 1 содержимое r3
2000016c:      bne.n   2000016a <main+0x1a> ; если в r3 не 0, повторить

2000016e:    b.n   2000015a <main+0xa> ; перейти на начало цикла

20000170:    .word   0x40011000


Ядро АРМ всю арифметическую и логическую работу проводит во внутренних регистрах ядра. Их 16 штук, часть из них имеет фиксированное назначение (счетчик программ pc, указатель стека sp, линк-регистр lr). Для операций используется в основном первые 8 регистров (r0 - r7). Старшие регистры r8 - r12 задействуются только 32-битным вариантом инструкций. Самих инструкций в младшем АРМ наборе не сильно много (хотя в CM7 - в несколько раз больше, порядка 200 штук, если не изменяет память), но каждая инструкция имеет несколько вариантов. Одни и те же инструкции могут быть представлены как в 16-битной, так и в 32-битной ширине, могут иметь дополнительные суффиксы, воздействующие на флаги состояния операции. Один из операндов инструкции может содержать дополнительную составную инструкцию.

В общем, обычный базовый код на асме написать можно. А вот эффективный, такой чтобы прям ну ваще, да еще в масштабах всей программы, а не локализованного участка - вот это уже вопрос выше среднего уровня подготовки. В дополнение к тому, что прорабатываешь логику программы, приходится еще постоянно следить за низкоуровневой логикой применения инструкций. Пока там наработаешь все эти макроблоки и ассемблерные библиотеки, на это тоже будет уходить дополнительное время.
Так что нет, извините, но написание программ целиком на ассемблере, по крайней мере это не мой выбор :) Кто-то в соседней теме сказал, что дескать средней руки ассемблерщик напишет программу лучше, чем компилятор при наивысшей оптимизации. Ну-ну, пускать слова на ветер может любой. Но пусть он вначале попробует написать хотябы то, что генерит компилятор без оптимизации. В масштабах целой программы, а не отдельного кусочка, разумеется.

Я раньше тоже писал на ассемблере, и довольно долго. Но чем тяжелее становились проекты, тем сильнее росло желание спрыгнуть с ассемблера. Впрочем, повторюсь, я никого ни к чему не призываю, я просто рассказываю свой опыт. А на чем писать - дело лично каждого.


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср фев 18, 2026 21:47:51 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15498
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Так специфические особенности ядра редко замечаются (и тем более используются).
Вариант регистр-аккумуляторов аналогичный тому, что у АВРок разве что у ПИКов 24й серии некоторую аналогию имеет...
Только практически мало кто этими особенностями в полной мере пользуется.
Учитывает ли такие особенности компилятор ЯВУ - это остается под вопросом.
Множество команд достаточно обманчиво порой - разница лишь в вариантах адресации.
Плюс явно заметное предпочтение особенностям областей применения выполняемых с помощью МК(МП) задач.
Касательно "чистого ассемблера" - можно вполне и весьма крупные проекты на нем делать, единственно времени займет заметно больше, чем под ЯВУ и практическая тренировка для мозга (взаимодополнение приемов).
8)

Пы.Сы.
Замигайка моя была с неким извратом - динамической развертка 8 позиций (2 блока х4) с ШИМ при выводе данных о яркости по значениям из 8 байтового ГСЧ.
Просто интерес был побаловаться и подобие проектов посмотреть - разные языки чуток различных приемов требуют (не изменяя сути проекта). Но таки весьма полезно поиграться.
На закусь для АВРок (и адуринок с АВРками) от микрощипа апнотка:
Вложение:
doc8453_Atmel AVR4027.pdf [236.66 KiB]
Скачиваний: 7

на тему "не все делается опциями оптимизации компилятора"...
:wink:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 2383 ]     ... , , , , 120

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y