Афффигеть.akl писал(а):bondyara писал(а):... в Протеусе операция MOV Rn, Rn портит значение.
Ассемблер (ASM) для AVR в вопросах и ответах
Re: Ассемблер (ASM) для AVR в вопросах и ответах
- Реклама
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Проверил нижеследующий код в шпротеусе 7. Что я могу сказать, пока списог багов не пополнился.
Добавлено after 2 minutes 55 seconds:
ООО. Совсем забыл написать, извиняюсь.
Афффигеть.
Код: Выделить всё
RESET: //
ldi R20,0xFF
out DDRB,R20
andi R20,0x55
mov R20,R20
OUT PORTB,R20
rjmp RESETООО. Совсем забыл написать, извиняюсь.
Афффигеть.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Могу добавить пару багов в протеусе
Неправильно работает таймер в режиме fast PWM с переменным TOP = ICR
Не работает АЦП в непрерывном режиме (ADFR / ADATE)
Не работают команды bld / bst
Неправильно работает таймер в режиме fast PWM с переменным TOP = ICR
Не работает АЦП в непрерывном режиме (ADFR / ADATE)
Не работают команды bld / bst
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Нижеследующий код сработал адекватно.
Код: Выделить всё
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 в вопросах и ответах
Перепроверил, действительно работает. Наверное, баг был где-то в другом месте. Правда, без замены bld + bst на sbrc + ori оно не работало, но копаться во взаимоотношениях протеуса и исходного кода сейчас желания нет.
- Реклама
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ну оно могло глючить в другом МК или в определенной ситуации.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: Ассемблер (ASM) для AVR в вопросах и ответах
да хз что там глючило. Тестировал на ATmega8 - конструкция bld rX, 1 + bst rY,6 не заоботала, а sbrc rX, 1 + ori rY, (1<<6) работала. Памяти и скорости они занимают одинаково, так что в недра проблемы лезть не стал.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Собираю в отладочной. Ну и беспаечная макетка, куда же без нее? Просто иногда быстрее посмотреть в Протеусе, работает или нет, а потом уже...dimmer писал(а):Когда же вы закопаете Протеус? Макетка рулит.
LCD вполне реальный. Виртуальный порт для вывода данных. Назначением вирт. порта как раз и является указание какой бит на какую ногу отправлять.COKPOWEHEU писал(а):А не секрет зачем нужен вывод на виртуальный LCD? Может проще макросами указать порты, к которым подключен реальный или написать слой абстракции?
А что Вы подразумеваете под слоем абстракции? По-моему, виртуальный порт и есть абстракция.
Я и не настаиваю.Z_h_e писал(а):Проверил нижеследующий код в шпротеусе...
У меня не просто Протеус, а Протеус под Wine в Linux
Кстати, под Wine баг - невозможно редактировать код, компилировать. Отладка с готовым obj-файлом работает.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Я имел в виду что-то вроде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Виртуальный порт мне казался полноценной абстракцией - выбор куда же значение будет записано на самом деле осуществляется на этапе выполнения и может быть изменен во время работы.
Аналогично. Впрочем, завести встроенный редактор кода мне не удалось и под winXP, win7, да не больно-то он и нужен.У меня не просто Протеус, а Протеус под Wine в Linux
Кстати, под Wine баг - невозможно редактировать код, компилировать. Отладка с готовым obj-файлом работает.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ну в Винде я быстро перешел на написание кода в Протеусе. Он жрет меньше ресурсов, чем 7-я Студия, да и отладка под боком.
В Linux остановился на Geany + AVRA.
В Linux остановился на Geany + AVRA.
Где это используется, например? Пока только изучаю (время от времени). По мне, схема устройства определяет куда и что. Так что пока вирт. порты создаю на этапе компиляции макросами, определениями, добавляю необходимые функции по условиям препроцессора.COKPOWEHEU писал(а):выбор куда же значение будет записано на самом деле осуществляется на этапе выполнения и может быть изменен во время работы.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Где в контроллерах такое может пригодиться не знаю. Но в таком случае зачем копирование регистра в произвольный?
Мне хватает текстового редактора (kwrite), gcc, make, а отладка в протеусе.
Мне хватает текстового редактора (kwrite), gcc, make, а отладка в протеусе.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Это не глюк. Так и должно быть.Z_h_e писал(а):Кстати из глюков протеуса на avr заметил пока два... Неправильно устанавливаются флаги источника сброса, при записи 1 флаг устанавливается, при записи 0 сбрасывается. Что интересно, второй глюк присутствует и в атмел студио.
- strengerst
- Вымогатель припоя
- Сообщения: 516
- Зарегистрирован: Пт янв 18, 2013 15:11:02
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Спасибо попробую
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ну вот, глюк оказался кривыми ручкамиakl писал(а):Это не глюк. Так и должно быть.
Как говорил Шарапов: "Глаз замылился". Я же несколько раз перечитал в ДШ как сбрасывается данный флаг, а оказалось читал то что ожидал увидеть, а не то что было написано.
Спасибо.
- ptr128
- Вымогатель припоя
- Сообщения: 606
- Зарегистрирован: Чт окт 06, 2016 21:12:07
- Откуда: Южное Бутово
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Собственно говоря именно из-за этого XP в VirtualBox у меня выиграла тендер )bondyara писал(а): У меня не просто Протеус, а Протеус под Wine в Linux
Кстати, под Wine баг - невозможно редактировать код, компилировать.
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ну насчет флагов и их сброса... Не так все однозначно...
Воть, к примеру возьмем attiny2313 и флаги таймеров...
Конкретно регистр TIFR...И попытаемся сбросить один из двух установившихся флагов
в разных таймерах (не автоматом по исполнении прерывания, а вручную)...
Учтемс, что SBI port,bit тут не проходит (0х38/0х58)...

Или еще интереснее...
регистр USISR (та же 2313)...
Содержит как флаги, так и USICNT3..0: Counter Value...
попытаемся вручную сбить любой из флагов, не нарушив содержимое USICNT3..0

Воть, к примеру возьмем attiny2313 и флаги таймеров...
Конкретно регистр TIFR...И попытаемся сбросить один из двух установившихся флагов
в разных таймерах (не автоматом по исполнении прерывания, а вручную)...
Учтемс, что SBI port,bit тут не проходит (0х38/0х58)...
Или еще интереснее...
регистр USISR (та же 2313)...
Содержит как флаги, так и USICNT3..0: Counter Value...
попытаемся вручную сбить любой из флагов, не нарушив содержимое USICNT3..0
Последний раз редактировалось BOB51 Пн ноя 07, 2016 12:49:22, всего редактировалось 1 раз.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
ВМ память жрет. В принципе, как уже писал, отладка работает, достаточно указать в свойствах МК путь к .obj, после компиляции Протеус сам похватит обновленный файл, а код можно писать, компилировать в любом другом редакторе на свой вкус. Да и быстрее, чем прыгать между системами.ptr128 писал(а): Собственно говоря именно из-за этого XP в VirtualBox у меня выиграла тендер )
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Имелся в виду регистр, в котором запоминается причина сброса контроллера. У tiny2313 это регистр MCUSR у mega8 MCUCSR.BOB51 писал(а):Ну насчет флагов и их сброса... Не так все однозначно...Воть, к примеру возьмем attiny2313 и флаги таймеров...Конкретно регистр TIFR...И попытаемся сбросить один из двух установившихся флагов в разных таймерах (не автоматом по исполнении прерывания, а вручную)...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
А я воть на те "сбрасываемые записью единицы" да еще в "удаленной области ОЗУ"...
ТЬХУ на оные!!!...
Флаг то скинуть - вроде не проблема, дык... вместе с тем в остальные позиции нулики вписываются...
Мозг выносит...
НО РАБОТАЕТ...
ТЬХУ на оные!!!...
Флаг то скинуть - вроде не проблема, дык... вместе с тем в остальные позиции нулики вписываются...
Мозг выносит...
НО РАБОТАЕТ...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ну мозг выносить нам хватает желающих, но мы, мужчины с большими сердцами любим всех, и ассемблер, и женщин. Мне иногда немного жаль всяких руферов и т.п. , они не знают бедные где экстрим.




