Обсуждаем контроллеры компании Atmel.
Ответить

Re: AVR studio в вопросах и ответах

Пт апр 05, 2019 11:59:57

Я Си не перевариваю. Ассемблер рулит!

Re: AVR studio в вопросах и ответах

Пт апр 05, 2019 13:24:49

Да. Переменная не объявлена volatile. Попробую, отпишусь. Спасибо!
PS Работает! Спасибо большое за дельный совет.

Re: AVR studio в вопросах и ответах

Вт апр 09, 2019 21:46:38

Кто может подучить по ASM в виде комментариев к командам. Вот на примере. Что там вообще происходит. Что можете сказать по данному коду?

А вот еще. Мне это тоже нужно разобрать.

Re: AVR studio в вопросах и ответах

Ср апр 10, 2019 05:11:53

Кто может подучить по ASM в виде комментариев к командам.

Вам нужно описание команд почитать, там все подробно расписано. Вот: http://www.gaw.ru/html.cgi/txt/doc/micr ... /start.htm
Или PDF: https://yadi.sk/i/m4ztj2m8SLot6w

Re: AVR studio в вопросах и ответах

Ср апр 10, 2019 06:30:21

Это я читал. Я не могу понять какой алгоритм для приходящего байта написал автор. Код я конечно перевел. Например out. Зачем автор из регистра отправляет в порт данные если он принимает байт портом. Вообще алгоритм не понятен

Re: AVR studio в вопросах и ответах

Ср апр 10, 2019 06:42:15

mixon46 писал(а): Что можете сказать по данному коду?
mixon46 писал(а):interrupt [PCINT0] void pin_change_isr(void)
данный формат описания обработчика прерывания, как и формат ассемблерной вставки, не характерен для Atmel Studio (и для AVR Studio тоже), поэтому вопрос задан не в той теме.

Re: AVR studio в вопросах и ответах

Ср апр 10, 2019 10:49:27

Это вставка asm в codevishion avr. Но мне надо понимать что происходит в asm коде. Что он выполняет

Re: AVR studio в вопросах и ответах

Ср апр 10, 2019 10:54:32

mixon46 писал(а):Это вставка asm в codevishion avr
о чем я и написал - не та тема.
mixon46 писал(а):Например out. Зачем автор из регистра отправляет в порт данные если он принимает байт портом
потому как каждый порт имеет наименование - вы по адресу порта определили, что это за порт? а ведь это не просто порт...
замените адреса их соответствующими наименованиями (в даташите наваш МК все есть!), и вы поймете, с какой периферией идет работа. зная это вы сможете расписать значение каждого бита в константах, которые в эти самые "порты" выводятся - и тогда станет понятно, что на самом деле происходит

Re: AVR studio в вопросах и ответах

Ср апр 10, 2019 11:26:42

Еще раз. Пример.

In r16, 0x3F


Тут 0x3F адрес периферии? Адрес регистра периферии?

Re: AVR studio в вопросах и ответах

Ср апр 10, 2019 11:32:00

mixon46 писал(а):Тут 0x3F адрес периферии? Адрес регистра периферии?
вы хотите, чтобы я за вас сходил в даташит и нашел там этот адрес, а затем сказал вам, какому регистру периферии он соответствует? ;)

Re: AVR studio в вопросах и ответах

Ср апр 10, 2019 11:40:47

Нет что вы. Это я могу сделать сам. Единственное скажите там где 0x00 это всегда адрес?

Ну вот.

In r16, 0x3F // загрузить данные из порта I/O в регистр. То есть данные из SREG в переменную r16. Или не так понял.

А это.

Ldi r16, 0x00 // загрузить непосредственное значение. 0x00 по таблице просто зарезервирован и не имеет никакой функции. Или как понять.? Я только в codevishion avr могу что нибудь написать. Asm не понимаю. Хотя очень надо понять как выполняется эта программа
Последний раз редактировалось mixon46 Ср апр 10, 2019 11:57:49, всего редактировалось 1 раз.

Re: AVR studio в вопросах и ответах

Ср апр 10, 2019 11:57:34

mixon46 писал(а):Единственное скажите там где 0x00 это всегда адрес?
не всегда.
команды ассемблера могут быть без операндов (например, cli), с оним операндом (ser r0) или с двумя операндами (out port, r16)
как правило, если один операнд в команде, то это регистр (даже не вспомню сразу - есть ли исключения?)
а вот у двухоперандных команд только один из операндов может быть (а может и не быть) адресом, а второй, всегда регистр.
но все вышесказанное вы можете узнать по описанию команд ассемблера AVR, о чем вам уже говорили.
находите команду, читаете её описание, узнаете, какие у неё операнды, а затем по этим операндам разбираетесь, что это - адрес или что-то иное.

Re: AVR studio в вопросах и ответах

Ср апр 10, 2019 12:25:54

похоже я понял что я ничего не понял. Не ну я понял что вы написали. Я не понял вот это

ldi r16, 0x00 \\ 0x00 это адрес РОН R1. Я так понял. Загрузить данные из R1 в R16. А зачем?

Re: AVR studio в вопросах и ответах

Ср апр 10, 2019 14:08:11

LDI Rd, K Load Immediate Rd ← K - команда ldi записывает константу в регистр.
В каждом datasheet имеется раздел Instruction Set Summary в котором расписаны команды и их особенности для конкретного микроконтроллера.

Добавлено after 7 minutes 50 seconds:
У меня другой, непонятный мне вопрос:
Написанный мной код в студии версии 6.0 отказывается работать в студии 7-й версии.
При отладке получаю, что участок кода:
stack1_new[count_task_save] = SP;
предназначенный сохранить текущий адрес стека по счетчику в массив сохраняет в ячейку watch stack1_new[0] значение 1096 при значении адреса стека 0x448.
Вот участок дизассемблера:

Строка IRAM

Как быть в такой ситуации - не знаю, т.к. код не работает в 7-й студии от слова совсем.
PS Сам дурак! Представление данных в watch в десятичном виде!

Добавлено after 1 hour 16 minutes 34 seconds:
Может кому будет важно. При миграции проекта в Атмел Студио 7 из 6-й версии проект отказывался работать.
После создания нового проекта в 7-й студии и переносе кода пришлось немножко пошаманить и код заработал.

Re: AVR studio в вопросах и ответах

Чт апр 11, 2019 06:31:56

dr.doc писал(а):При миграции проекта в Атмел Студио 7 из 6-й версии проект отказывался работать.
После создания нового проекта в 7-й студии и переносе кода пришлось немножко пошаманить и код заработал
это очень информативное замечание. я уверен, что ни у кого вот вообще никаких вопросов не возникло - все же знают о проблеме, да и шаман тут каждый первый.

Re: AVR studio в вопросах и ответах

Вс апр 14, 2019 22:11:40

Я тут подробно расписал инициализацию принятого байта. Из того кода на asm что бы понять что происходит. Я практически понял весь смысл его.




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

Re: AVR studio в вопросах и ответах

Чт апр 18, 2019 14:29:54

Объясните мне пожалуйста как работает этот программный uart. Не могу дать ладу. Зачем автор записывает значение таймера счетчика TCNT в РОН. Затем он вычитает из этого значения 194. Затем идет сравнение с числом 124. И если 124 больше чем значение TCNT-194 то записывает в регистр сравнения получившиеся число. А если меньше то вычитает 124 и записывает в регистр сравнения. Если в регистр сравнения должно быть записано число 124. Так как судя из ф ормулы для расчета скорости передачи uart и кварцем на 9.6 мнц и председателем на 8. Должно быть занесено в регистр сравнения число 124 что является в свою очередь прерыванием каждые 104 мкс и равно скорости 9600 бод в секунду. Зачем сделано так. Не пойму.

Объясните если например TCNT был 43 например. И мы вычитаем 194. 43-194. Мк посчитает что равно нулю или равно 104 будет. Потом будет сравнение. Константа 124 будет больше чем 104. И запишет в регистр сравнения 104. Что за бред.

Re: AVR studio в вопросах и ответах

Вс май 19, 2019 07:54:50

В редакторе - код внутри { } можно сворачивать. Можно как то в последней студии свернуть сразу весь код на странице?

Re: AVR studio в вопросах и ответах

Вт май 21, 2019 11:42:59

я запомнил только [Ctrl]+[M]+[L]. Хотя есть еще комбинации клавиш. Может еще кто чего подскажет?

Тоже вопрос есть. Как вернуть вкладку VA Outline? Нечаянно закрыл, а где она включается найти теперь не могу. На одном компе она есть, на другом нет :(

Re: AVR studio в вопросах и ответах

Ср май 22, 2019 14:58:32

Здравствуйте. Есть вопрос, не совсем в тему но все же. Смотрите - есть Atmega128, в допотопной железяке. Есть предполагаемый разьем для программирования. Но на этот разьем выведены пины PDI, не спи, не житаг. Шилось это все каким-то програматором фирменным - корпус как у MkII, но интерфейс COM. Но старики хрестятся что и юсбшным МК2 шьется. Только вот студия не конектится, да и нет там варианта подключения по ПДИ к такому камню. Может кто внести ясность что это такое? Так же есть в распоряжении Atmel ICE, но выбрав его в студии так же не появляется варианта по ПДИ. Нам надо стащить с чипа прошивку, и прошить аналогичную железяку. Это типа нашего производства, только ему лет 15 и уже никто ничего не помнит :)))
Ответить