Перейти к содержанию

Вопросы от начинающих по МК


Рекомендуемые сообщения

12 минут назад, snn_krs сказал:

Программа уже считана

Не факт. То, что удалось что то прочитать, не обязательно является тем, что было записано записано.

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 8,9т
  • Создана
  • Последний ответ

Топ авторов темы

5 часов назад, snn_krs сказал:

Пусть биты защиты будут называться фьюзе битами. Однако в АВР это не одно и тоже.

Причем тут АВР? 

Термин "фьюзы" подразумевает конфигурационную флеш память. В составе этой памяти есть не только биты защиты.

И АРМы тут не исключение. Откройте рефмануал на любое семейство АРМ любого производителя в параграфе Option Bytes и ознакомьтесь с назначением. Вы не найдете отличий от "фьюзов' у АВР и "конфига" у ПИКов.

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

  • 4 недели спустя...

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Чего-то я не понимаю, как именно работают операторы условного перехода типа BRCC. В даташите на тиньку написано, что формат команды BRCC k, в результате чего PC получает значение PC+k+1:

188537841_.png.050d3c11d35062bd680a5d38abbadba1.png

То есть если условие не выполнено, то счётчик команд увеличивается на единицу, если выполнено - на к+1.

По факту же получается, что "BRCC pointer" переводит выполнение программы на метку pointer, а "BRCC 1" не увеличивает счётчик команд на два и перепрыгивает через следующую команду, как можно ожидать из описания оператора, а отправляет к команде по адресу 1 - то есть в таблицу векторов прерываний. Вместо PC=PC+k+1 получается PC=k. В даташите неправильно описана команда, или я что-то не так делаю?

Изменено пользователем Огонёк
Ссылка на комментарий
Поделиться на другие сайты

Справка к АВР студио тоже ясности в вопрос не внесла:

Цитата

Conditional relative branch. Tests the Carry flag (C) and branches relatively to PC if C is cleared. This instruction branches relatively to PC in either direction (PC - 63 ≤ destination ≤ PC + 64). The parameter k is the offset from PC and is represented in two's complement form. (Equivalent to instruction BRBC 0,k).

Operation:

If C = 0 then PC <- PC + k + 1, else PC <- PC + 1 

Syntax:               Operands:                     Program Counter:

BRCC k                -64 ≤ k ≤ +63                 PC <- PC + k + 1

                                                    PC <- PC + 1, if condition is false

И там же:

Цитата

Example:

add  r22,r23               ; Add r23 to r22

brcc nocarry               ; Branch if carry cleared

...

nocarry:   nop                        ; Branch destination (do nothing)

В описании операнд - константа, в примере - метка.

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Огонёк сказал:

По факту же получается

Откуда такой факт?

1 минуту назад, Огонёк сказал:

В описании операнд - константа, в примере - метка.

Это чтобы вы сами константу не вычисляли.

Ссылка на комментарий
Поделиться на другие сайты

 

Пошаговое выполнение в симуляторе АВР студио. Да и в справке по ассемблеру тоже пример с меткой приведён - см. мой пост выше.

Изменено пользователем Огонёк
Ссылка на комментарий
Поделиться на другие сайты

@Огонёк ассемблер вычисляет константу по указанной метке и вставляет в код константу.

1 час назад, Огонёк сказал:

"BRCC 1" не увеличивает счётчик команд

Здесь вы указали адрес перехода, а не константу.

Ссылка на комментарий
Поделиться на другие сайты

@Гость_Григорий_Т. как работает оператор с меткой я понимаю, с этим можно работать. Мне непонятно, почему и в справке, и в даташите указан другой алгоритм работы: не вычисление адреса по имени метки, а изменение счётчика команд на величину, заданную операндом.

То есть

Цитата

Operation:

If C = 0 then PC <- PC + k + 1, else PC <- PC + 1 

Syntax:               Operands:                     Program Counter:

BRCC k                -64 ≤ k ≤ +63                 PC <- PC + k + 1

                                                    PC <- PC + 1, if condition is false

не стыкуется с

Цитата

brcc nocarry               ; Branch if carry cleared

...

nocarry:   nop                        ; Branch destination (do nothing)

Разные же конструкции, разве нет? Получается, что операнд К и алгоритм изменения счётчика команд в описании команды упомянуты не пойми зачем, так как в программе всё равно надо использовать метку. Это меня слегка озадачило.

Изменено пользователем Огонёк
Ссылка на комментарий
Поделиться на другие сайты

12 минут назад, Гость_Григорий_Т. сказал:

Не путайте ассемблер с командой процессора.

Если будете писать машинный код, то будете вычислять константу сами, как описано в системе команд процессора. 

3 минуты назад, Огонёк сказал:

в программе всё равно надо использовать метку

Можете и константу сами вставить, только делайте это правильно.

Ссылка на комментарий
Поделиться на другие сайты

BRCC k - переход на метку k, если не было переноса (переполнения). Например:

add r18,r19

brcc label_k  // будет пропущен, если было переполнение (установлен флаг переноса С)

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, Огонёк сказал:

так как в программе всё равно надо использовать метку.

тебе Григорий ясно сказал, что метка используется компилятором для вычисления значения операнда в этих командах.

метка подсказывает компилятору адрес, на который нужно сделать переход при выполнении условия.

или ты хочешь "на пальцах" самостоятельно вычислить величину операнда для перехода на нужный тебе адрес?

Мудрость приходит вместе с импотенцией...

Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.

Ссылка на комментарий
Поделиться на другие сайты

9 минут назад, Гость_Григорий_Т. сказал:

Если будете писать машинный код, то будете вычислять константу сами

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

3 минуты назад, Starichok сказал:

или ты хочешь "на пальцах" самостоятельно вычислить величину операнда для перехода на нужный тебе адрес?

Была такая идея после прочтения даташита. Сейчас программа на таком-то адресе, в зависимости от условия дальше либо выполняем следующую строку PC <- PC + 1, либо перепрыгиваем через неё: PC <- PC + k + 1

 

Изменено пользователем Огонёк
Ссылка на комментарий
Поделиться на другие сайты

7 минут назад, Starichok сказал:

самостоятельно вычислить величину операнда для перехода на нужный тебе адрес

Собственно, а какие ещё выводы должен сделать человек, прочитавший это:

188537841_.png.050d3c11d35062bd680a5d38abbadba1.png

 

Только что, Гость_Григорий_Т. сказал:

можно и назад скакнуть

Это уже частности, сама идея та же - смотри, куда собрался, и считай расстояние К.

Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, _abk_ сказал:

почему нельзя просто воспользоваться инструкцией?

Так а я чем пользуюсь? Instruction Set Summary из даташита к микроконтроллеру.

2 минуты назад, _abk_ сказал:

счетчик команд из программы не доступен

Я и не пытаюсь менять его напрямую, как меняют значения в регистрах.

Ссылка на комментарий
Поделиться на другие сайты

Тогда непонятно, в чем вопрос. Ставьте метки и операторы перехода в соответствии с вашим алгоритмом и не вспоминайте про счетчик команд, это не ваша забота.

Почитатайте книгу А.В. Евстифеева - обобщенный перевод даташитов на русский язык с исчерпывающими пояснениями.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...