Для АРМов с развитой периферией уже не актуально. Поток команд может прерываться практические непредсказуемо. Синхронизация на том же СТМ32 путем “подсчета тактов” - невозможна. Шах и мат - фанаты астмы!
Да, я лишь начинающий, знаком пока только с AVR, и PIC, и то отчасти))
Он всегда такой, не обращай внимания. Мог бы знания свои и в пользу людям дать, но «корни» берут своё )))
Как по мне , всё норм)). Я понял о чём речь. В AVR периферия , за редким исключением, тактируется Clkio, а значит от проца. У ARM, похоже, больше “разнообразия”)).Да и когда у тебя большой запас по частоте CPU, уже не так актуально считать такты.
А шо я с этого буду иметь? В смысле ежели потрогать, не кантовскую “сиську в себе”, а пусть небольшую, но фейербаховскую.
Для этого и придуманы аппаратные счётчики, дешифраторы и прочая периферия.
В крайнем случае ПЛИС. Это прям ваще по жесткачу если надо наносекунды всякие.
Либо дискретная логика на рассыпухе.
Да, на асме всё просто как божий день. Но только на ТОМ асме, на том простом 8-ми битном асме, а не на современных STM32 и им подобных. На AVR, иной раз, тоже приходится подсматривать что же там Си делает в итоге.
Господи, как приятно общаться с культурным человеком. Он не просто говорит что ты не прав, и кроме сисек приводит самые простые доказательства.
И у меня есть контрдоказательства.
Задачи бывают разные- есть например программная реализация ЮСБи устройства на АВР. Так там не то что свободное время некуда девать, а даже на асме приходится хитрsе ходы выдумывать для синхронизации с протоколом.
И это на Си ну никак не реализуется.
[quote] Тактовая частота для микроконтроллера
Ассемблерные части V-USB написаны с поддержкой только таких частот:…
16 MHz: поддержка этой частоты была специально добавлена для пользователей Arduino и
других готовых плат которые имеет штатный кварц на 16 MHz. Также полезно если необходимо
повысить частоту в целях производительности. Поскольку 16 MHz не делится нацело на USB low
speed bit clock 1.5 MHz, то ассемблерная реализация для данной частоты написана с
некоторыми хитростями, применяются циклы для замедления.[/quote]
Поэтому из-за каких-то редких и ускоспециальных задач, всем нужно усраться, но писать на ассемблере абсолютно все - даже блинк.
Не просто считаю, а знаю, что вызов любого метода или функции затопчет стэк как стадо
овец, что там и смотреть будет нечего.
А вот простой код на асм
IN XL,SPL
IN XH,SPH
позволит через Х индекс просмотреть стэк от его вершины до самого дна в его первозданной невинности.
Многие Си-писатели даже не подозревают, что освобождение стэка ничего в нем не затирает в нули, а всего лишь перемещает указатель на вершину.
А вот вызов любой функции переписывает ячейки стека.
Блинк не грех и на асме написать, если места жалко или его просто нет. Сколько свободных байтов нужно чтобы вставить блинк в готовую программу? Например из всего флэша остались свободными 16 байт. Сможешь вставить в нее блинк?
А если не жалко и оно есть?
Смогу приобрести подходящий под задачу камень, в который влезет. Точно такой же, но другой и дешевле.
Я вот не подозреваю , да многие тут, мы ЗНАЕМ, нам что теперь удавится?
Или звиздабола удавить?
Просто всплакнуть, ибо “От многой мудрости много скорби”
код на C/C++
uint16_t current_SP = SP;
и просматривай данные стека хоть вдоль хоть поперёк …
Мне странно выступать на стороне C/C++, но примеры @dedivan все мимо …
как и он сам