Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Jack_A »

akl писал(а):
bondyara писал(а):... в Протеусе операция MOV Rn, Rn портит значение.
Афффигеть. :shock:
MOV_AVR.png

да, дела ... нужно срочно ревизию АВРов делать, мож и остальные полсотни команд что-нибудь где-нибудь портють :))
Изображение
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Z_h_e »

Проверил нижеследующий код в шпротеусе 7. Что я могу сказать, пока списог багов не пополнился.

Код: Выделить всё

RESET:  //
ldi R20,0xFF
out DDRB,R20

andi R20,0x55
mov R20,R20

OUT PORTB,R20

rjmp RESET


Добавлено after 2 minutes 55 seconds:
ООО. Совсем забыл написать, извиняюсь.

Афффигеть. :shock:
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение COKPOWEHEU »

Могу добавить пару багов в протеусе
Неправильно работает таймер в режиме fast PWM с переменным TOP = ICR
Не работает АЦП в непрерывном режиме (ADFR / ADATE)
Не работают команды bld / bst
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Z_h_e »

Нижеследующий код сработал адекватно.

Код: Выделить всё

RESET:  //
ldi R20,0xFF
out DDRB,R20

andi R20,0x55
mov R20,R20

bst R20,0
bld R20,1

OUT PORTB,R20

rjmp RESET
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение COKPOWEHEU »

Перепроверил, действительно работает. Наверное, баг был где-то в другом месте. Правда, без замены bld + bst на sbrc + ori оно не работало, но копаться во взаимоотношениях протеуса и исходного кода сейчас желания нет.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Z_h_e »

Ну оно могло глючить в другом МК или в определенной ситуации.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение COKPOWEHEU »

да хз что там глючило. Тестировал на ATmega8 - конструкция bld rX, 1 + bst rY,6 не заоботала, а sbrc rX, 1 + ori rY, (1<<6) работала. Памяти и скорости они занимают одинаково, так что в недра проблемы лезть не стал.
bondyara
Встал на лапы
Сообщения: 139
Зарегистрирован: Сб май 07, 2011 17:00:42
Откуда: Оттуда

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение bondyara »

dimmer писал(а):Когда же вы закопаете Протеус? Макетка рулит.

Собираю в отладочной. Ну и беспаечная макетка, куда же без нее? Просто иногда быстрее посмотреть в Протеусе, работает или нет, а потом уже...
COKPOWEHEU писал(а):А не секрет зачем нужен вывод на виртуальный LCD? Может проще макросами указать порты, к которым подключен реальный или написать слой абстракции?

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

Я и не настаиваю.
У меня не просто Протеус, а Протеус под Wine в Linux :facepalm:
Кстати, под Wine баг - невозможно редактировать код, компилировать. Отладка с готовым obj-файлом работает.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение COKPOWEHEU »

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

Код: Выделить всё

#define LCD_D0 B,0
#define LCD_D1 B,1
#define LCD_D2 B,2
#define LCD_D3 B,3
#define LCD_RS B,4
#define LCD_E B,5

а дальше пусть компилятор подставляет в код "драйвера" сразу нужные порты. Примерно так (только на Си) работает мой самописный драйвер. При желании, те же макросы можно использовать в gnu-assembler, там с макросами гораздо лучше, чем avr-assembler.
Виртуальный порт мне казался полноценной абстракцией - выбор куда же значение будет записано на самом деле осуществляется на этапе выполнения и может быть изменен во время работы.
У меня не просто Протеус, а Протеус под Wine в Linux :facepalm:
Кстати, под Wine баг - невозможно редактировать код, компилировать. Отладка с готовым obj-файлом работает.

Аналогично. Впрочем, завести встроенный редактор кода мне не удалось и под winXP, win7, да не больно-то он и нужен.
bondyara
Встал на лапы
Сообщения: 139
Зарегистрирован: Сб май 07, 2011 17:00:42
Откуда: Оттуда

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение bondyara »

Ну в Винде я быстро перешел на написание кода в Протеусе. Он жрет меньше ресурсов, чем 7-я Студия, да и отладка под боком.
В Linux остановился на Geany + AVRA.
COKPOWEHEU писал(а):выбор куда же значение будет записано на самом деле осуществляется на этапе выполнения и может быть изменен во время работы.

Где это используется, например? Пока только изучаю (время от времени). По мне, схема устройства определяет куда и что. Так что пока вирт. порты создаю на этапе компиляции макросами, определениями, добавляю необходимые функции по условиям препроцессора.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение COKPOWEHEU »

Где в контроллерах такое может пригодиться не знаю. Но в таком случае зачем копирование регистра в произвольный?
Мне хватает текстового редактора (kwrite), gcc, make, а отладка в протеусе.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение akl »

Z_h_e писал(а):Кстати из глюков протеуса на avr заметил пока два... Неправильно устанавливаются флаги источника сброса, при записи 1 флаг устанавливается, при записи 0 сбрасывается. Что интересно, второй глюк присутствует и в атмел студио.
Это не глюк. Так и должно быть.
RESET_FLAG.PNG
(79.97 КБ) 473 скачивания
Аватара пользователя
strengerst
Вымогатель припоя
Сообщения: 516
Зарегистрирован: Пт янв 18, 2013 15:11:02

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение strengerst »

Спасибо попробую
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Z_h_e »

akl писал(а):Это не глюк. Так и должно быть.
Ну вот, глюк оказался кривыми ручками :(.
Как говорил Шарапов: "Глаз замылился". Я же несколько раз перечитал в ДШ как сбрасывается данный флаг, а оказалось читал то что ожидал увидеть, а не то что было написано. :o

Спасибо.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
ptr128
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ptr128 »

bondyara писал(а):У меня не просто Протеус, а Протеус под Wine в Linux :facepalm:
Кстати, под Wine баг - невозможно редактировать код, компилировать.

Собственно говоря именно из-за этого XP в VirtualBox у меня выиграла тендер )
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15549
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение BOB51 »

Ну насчет флагов и их сброса... Не так все однозначно...
Воть, к примеру возьмем attiny2313 и флаги таймеров...
Конкретно регистр TIFR...И попытаемся сбросить один из двух установившихся флагов
в разных таймерах (не автоматом по исполнении прерывания, а вручную)...
Учтемс, что SBI port,bit тут не проходит (0х38/0х58)...
:roll:
Или еще интереснее...
регистр USISR (та же 2313)...
Содержит как флаги, так и USICNT3..0: Counter Value...
попытаемся вручную сбить любой из флагов, не нарушив содержимое USICNT3..0
:roll:
Последний раз редактировалось BOB51 Пн ноя 07, 2016 12:49:22, всего редактировалось 1 раз.
bondyara
Встал на лапы
Сообщения: 139
Зарегистрирован: Сб май 07, 2011 17:00:42
Откуда: Оттуда

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение bondyara »

ptr128 писал(а):Собственно говоря именно из-за этого XP в VirtualBox у меня выиграла тендер )

ВМ память жрет. В принципе, как уже писал, отладка работает, достаточно указать в свойствах МК путь к .obj, после компиляции Протеус сам похватит обновленный файл, а код можно писать, компилировать в любом другом редакторе на свой вкус. Да и быстрее, чем прыгать между системами.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение akl »

BOB51 писал(а):Ну насчет флагов и их сброса... Не так все однозначно...Воть, к примеру возьмем attiny2313 и флаги таймеров...Конкретно регистр TIFR...И попытаемся сбросить один из двух установившихся флагов в разных таймерах (не автоматом по исполнении прерывания, а вручную)...
Имелся в виду регистр, в котором запоминается причина сброса контроллера. У tiny2313 это регистр MCUSR у mega8 MCUCSR.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15549
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение BOB51 »

А я воть на те "сбрасываемые записью единицы" да еще в "удаленной области ОЗУ"...
ТЬХУ на оные!!!...
Флаг то скинуть - вроде не проблема, дык... вместе с тем в остальные позиции нулики вписываются...
Мозг выносит...
:cry:
НО РАБОТАЕТ...
dimmer
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Сб сен 17, 2016 18:56:30

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение dimmer »

Ну мозг выносить нам хватает желающих, но мы, мужчины с большими сердцами любим всех, и ассемблер, и женщин. Мне иногда немного жаль всяких руферов и т.п. , они не знают бедные где экстрим.
Ответить

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