Страница 290 из 400

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

Добавлено: Вс ноя 06, 2016 15:11:22
Jack_A
akl писал(а):
bondyara писал(а):... в Протеусе операция MOV Rn, Rn портит значение.
Афффигеть. :shock:
MOV_AVR.png
да, дела ... нужно срочно ревизию АВРов делать, мож и остальные полсотни команд что-нибудь где-нибудь портють :))

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

Добавлено: Вс ноя 06, 2016 15:46:44
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:

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

Добавлено: Вс ноя 06, 2016 16:06:10
COKPOWEHEU
Могу добавить пару багов в протеусе
Неправильно работает таймер в режиме fast PWM с переменным TOP = ICR
Не работает АЦП в непрерывном режиме (ADFR / ADATE)
Не работают команды bld / bst

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

Добавлено: Вс ноя 06, 2016 16:21:59
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

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

Добавлено: Вс ноя 06, 2016 17:08:41
COKPOWEHEU
Перепроверил, действительно работает. Наверное, баг был где-то в другом месте. Правда, без замены bld + bst на sbrc + ori оно не работало, но копаться во взаимоотношениях протеуса и исходного кода сейчас желания нет.

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

Добавлено: Вс ноя 06, 2016 17:11:30
Z_h_e
Ну оно могло глючить в другом МК или в определенной ситуации.

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

Добавлено: Вс ноя 06, 2016 17:22:14
COKPOWEHEU
да хз что там глючило. Тестировал на ATmega8 - конструкция bld rX, 1 + bst rY,6 не заоботала, а sbrc rX, 1 + ori rY, (1<<6) работала. Памяти и скорости они занимают одинаково, так что в недра проблемы лезть не стал.

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

Добавлено: Вс ноя 06, 2016 18:24:56
bondyara
dimmer писал(а):Когда же вы закопаете Протеус? Макетка рулит.
Собираю в отладочной. Ну и беспаечная макетка, куда же без нее? Просто иногда быстрее посмотреть в Протеусе, работает или нет, а потом уже...
COKPOWEHEU писал(а):А не секрет зачем нужен вывод на виртуальный LCD? Может проще макросами указать порты, к которым подключен реальный или написать слой абстракции?
LCD вполне реальный. Виртуальный порт для вывода данных. Назначением вирт. порта как раз и является указание какой бит на какую ногу отправлять.
А что Вы подразумеваете под слоем абстракции? По-моему, виртуальный порт и есть абстракция.
Z_h_e писал(а):Проверил нижеследующий код в шпротеусе...
Я и не настаиваю.
У меня не просто Протеус, а Протеус под Wine в Linux :facepalm:
Кстати, под Wine баг - невозможно редактировать код, компилировать. Отладка с готовым obj-файлом работает.

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

Добавлено: Вс ноя 06, 2016 19:18:18
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, да не больно-то он и нужен.

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

Добавлено: Вс ноя 06, 2016 20:03:48
bondyara
Ну в Винде я быстро перешел на написание кода в Протеусе. Он жрет меньше ресурсов, чем 7-я Студия, да и отладка под боком.
В Linux остановился на Geany + AVRA.
COKPOWEHEU писал(а):выбор куда же значение будет записано на самом деле осуществляется на этапе выполнения и может быть изменен во время работы.
Где это используется, например? Пока только изучаю (время от времени). По мне, схема устройства определяет куда и что. Так что пока вирт. порты создаю на этапе компиляции макросами, определениями, добавляю необходимые функции по условиям препроцессора.

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

Добавлено: Вс ноя 06, 2016 21:37:22
COKPOWEHEU
Где в контроллерах такое может пригодиться не знаю. Но в таком случае зачем копирование регистра в произвольный?
Мне хватает текстового редактора (kwrite), gcc, make, а отладка в протеусе.

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

Добавлено: Пн ноя 07, 2016 05:53:57
akl
Z_h_e писал(а):Кстати из глюков протеуса на avr заметил пока два... Неправильно устанавливаются флаги источника сброса, при записи 1 флаг устанавливается, при записи 0 сбрасывается. Что интересно, второй глюк присутствует и в атмел студио.
Это не глюк. Так и должно быть.
RESET_FLAG.PNG
(79.97 КБ) 477 скачиваний

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

Добавлено: Пн ноя 07, 2016 07:40:50
strengerst
Спасибо попробую

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

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

Спасибо.

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

Добавлено: Пн ноя 07, 2016 11:36:21
ptr128
bondyara писал(а): У меня не просто Протеус, а Протеус под Wine в Linux :facepalm:
Кстати, под Wine баг - невозможно редактировать код, компилировать.
Собственно говоря именно из-за этого XP в VirtualBox у меня выиграла тендер )

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

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

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

Добавлено: Пн ноя 07, 2016 12:27:01
bondyara
ptr128 писал(а): Собственно говоря именно из-за этого XP в VirtualBox у меня выиграла тендер )
ВМ память жрет. В принципе, как уже писал, отладка работает, достаточно указать в свойствах МК путь к .obj, после компиляции Протеус сам похватит обновленный файл, а код можно писать, компилировать в любом другом редакторе на свой вкус. Да и быстрее, чем прыгать между системами.

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

Добавлено: Пн ноя 07, 2016 12:49:32
akl
BOB51 писал(а):Ну насчет флагов и их сброса... Не так все однозначно...Воть, к примеру возьмем attiny2313 и флаги таймеров...Конкретно регистр TIFR...И попытаемся сбросить один из двух установившихся флагов в разных таймерах (не автоматом по исполнении прерывания, а вручную)...
Имелся в виду регистр, в котором запоминается причина сброса контроллера. У tiny2313 это регистр MCUSR у mega8 MCUCSR.

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

Добавлено: Пн ноя 07, 2016 13:02:52
BOB51
А я воть на те "сбрасываемые записью единицы" да еще в "удаленной области ОЗУ"...
ТЬХУ на оные!!!...
Флаг то скинуть - вроде не проблема, дык... вместе с тем в остальные позиции нулики вписываются...
Мозг выносит...
:cry:
НО РАБОТАЕТ...

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

Добавлено: Пн ноя 07, 2016 15:07:35
dimmer
Ну мозг выносить нам хватает желающих, но мы, мужчины с большими сердцами любим всех, и ассемблер, и женщин. Мне иногда немного жаль всяких руферов и т.п. , они не знают бедные где экстрим.