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

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Аватара пользователя
Сообщения: 551
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

Игорь_396, вместо LD R16,Z+ можно взять ADIW ZH:ZL, 1
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 58
Зарегистрирован: Сб дек 01, 2007 12:24:20

Сообщение PicNov76 »

Del
Последний раз редактировалось PicNov76 Пн июн 10, 2024 11:07:26, всего редактировалось 1 раз.
Ну что, ремонтировать будем или пусть работает?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

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

LPM   - загрузка из ячейки ПЗУ с адресом в Z в ячейку ОЗУ R0
MOV Rd,Rd  - как MOV Rd,R0
ADIW R30,K  где К=1 (R31:R30 = Z)
SBIW R30,K  где К=1
8)
AT90S2313.pdf
(1.63 МБ) 145 скачиваний
шаблон_команд_AVR_2024.pdf
(266.52 КБ) 157 скачиваний
:sleep:
Открыл глаза
Аватара пользователя
Сообщения: 58
Зарегистрирован: Сб дек 01, 2007 12:24:20

Сообщение PicNov76 »

LPM temp,Z+

Эквивалентно:

push r0
LPM
MOV temp,R0
ADIW R30,1;постинкремент
pop r0

Я вас правильно понял? Или надо еще из Z обратно 1 вычесть?
Ну что, ремонтировать будем или пусть работает?
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Правильно.
Обычно R0 и R1 в программе не используются (резервируются для спец функций в командах математики и работы с ПЗУ). Так что если таковые команды в основной программе больше нигде не применяются можно R0 в стек не засылать.
То, что в Z осталось является следующим адресом в ПЗУ. Как с ним поступить дальше зависит от Вашей основной программы.
8)
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 58
Зарегистрирован: Сб дек 01, 2007 12:24:20

Сообщение PicNov76 »

Спасибо. Все скомпилилось. R0 в программе используется как переменная. В стек ее сохраню. LPM temp,Z+ конструкция R0 не использует.
Ну что, ремонтировать будем или пусть работает?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Так LPM temp,Z+ (по факту LPM Rd,Z+ где Rd любой из регистров РОН) в перечне доступных команд из даташита на at90s2313 просто отсутствует.
8)
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

Доброго времени всем))

Прошу сильно не ругать, но вопрос по LGT8f328p (но программирование на AVRASM-е же).
Начал таки изучать LGT8f328p, а куда деваться, я всего лишь радиолюбитель.

TWI - тоже самое что и в меге.
Со SPI разобрался, хоть и не сразу. Но понравился 32-х битный буфер. Удобно с TFT дисплеями работать, тем более на Fspi=16MHz

Сейчас с E2PROM-ом тоже разобрался.. почти.
Инициализировать, писать/читать сложностей не вызвало. Но не пойму как сохранять данные при перепрошивке. EESAVE наподобии.

Сейчас у меня код как и на мегах:

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

.DSEG
.ORG SRAM_START
var: .byte 1
;
.ESEG	
EE_var: .byte 1	
;
Подскажите пожалуйста, куда и как разместить .EESEG или добавить адрес через .ORG, что бы при перепрошивке сохранялись данные.

PS
Пробовал добавить .org 0x77FF (это минус 2к от 32к, но всё равно при перепрошивке вместо записаных данных выдаёт:
0xFF - если с инициализацией
и 0x00 - если без

PS2 в интернете пробовал искать.. но сами знаете, тотальное доминирование ардуины, и никакой информации толком нет :)
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

У АВР формировался отдельный файл для ЕЕПРОМ, который шился отдельной кнопкой в АВРСтудии.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

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

Сейчас эксперементирую, е2пром если программно инициализировать, то после перепрошива данные читаются как 0хff, ну а потом пишет и читает как положенно.
А если е2пром не инициализировать программно (возможно предыдущая инициализация работает), то после перепрошива данные читаются как 0х00, и при этом опять же всё пишет и читает..

Странно всё конечно. Документации тоже нет нормальной.
А так контроллер мне понравился. С частью задач отлично справляется. Для меня основное, что среду разработки менять не нужно, а в производительности выигрыш очевиден.
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

А как у той LGT8fхххх с протоколом прошивки?
Делается теми же средствами, что и для обычных АВРок или специальными программаторами?
:roll:
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

[uquote="BOB51",url="/forum/viewtopic.php?p=4612376#p4612376"]А как у той LGT8fхххх с протоколом прошивки?
Делается теми же средствами, что и для обычных АВРок или специальными программаторами?
:roll:[/uquote]
Рекомендованный программатор от Logic Green слишком дорог для меня.
Многие шьют через ардуино со специальным скетчем.
Но это не наш метод :))
Нашёл в сети прошивку к USBASP-у.
Старая привычная AVRDUDE ругалась, поэтому поставил AVRDUDESS 2.17 (avrdude version 7.3). Но шью из консоли, точнее запускаю батник по F5 в Notepad++ , и сразу идёт компиляция и прошивка. В батнике команды к avrasm2.exe и avrdude.exe. Всё достаточно легко и просто.
Изображение

Подключение:

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

	PIN		LGT8f328	USBASP		PIN

	[5]		SWC			MOSI		[1]
	[4]		RST			RESET		[5]	
	[3]		SWD			MISO		[9]

	[1]		GND						[10]
	[2]		VCC						[2]
Ссылку на прошивку USBASP-а не сохранил к сожалению, поэтому прикладываю скаченный ранее архив. Прошитый USBASP меги шить уже не будет с этой прошивкой.. На моём фото (а я помещаю USBASP-ы в обрезки кабельканала) я просто подписал его, что бы не путаться.

Через ардуино и USBASP не единственные способы, но про остальные не интересовался.

И ещё. Понимаю, что LGT тут не совсем в тему, и на этом форуме есть уже тема по LGT8f328p, но там как обычно ардуинщики обсуждают и меняются своими "библиотеками". Хотя гораздо полезнее рассматривать алгоритмы без привязки к какой либо среде. С удовольствием бы пообщался по данному контроллеру, можно в другой теме, но без ардуино :)
Ещё есть что спросить, и уже есть чем поделиться :))

И главное. Программирую на AVRASME, как и ранее. Немного только привёл свои старые файлы в соответствие :))

Добавлено after 50 minutes 3 seconds:
Сорри, чуть не забыл. lgt8f328Pdef.inc я взял из статьи Ревича:
1-я часть
2-я часть
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Таки печалька...
:roll:
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

[uquote="BOB51",url="/forum/viewtopic.php?p=4612413#p4612413"]Таки печалька...
:roll:[/uquote] Печалька в чём? Я покупал самые дешёвые платки рублей по 80+
А с остальным проблем не возникло ))
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Программатор городить надо...
:sleep:
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

BOB51 писал(а):Программатор городить надо...
:sleep:
Есть платы с юсб-и разъёмом. Шьются через загрузчик.. Но я в этом плохо разбираюсь :))
У меня упрощёнка и ничего лишнего :))
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Это платки с бутлоадером для адуринки.
Но там соответствующие ограничения будут (согласно требованиям бутлоадера).
Да и загрузка из-под ардуино IDE...
Пока форсировать освоение ради спортивна интереса рановато... У китайцев много интересного, но основной гвоздь забивается при помощи отсутствия данных о протоколах загрузки прошивок (делает невозможным самостоятельное изготовление простых самодельных программаторов).
Да и пока тех МК не так уж и много в обозримом пространстве.
:roll:
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Вт ноя 15, 2016 12:48:20

Сообщение john1770 »

Почему ide ? дудкой только в путь.
На GitHub есть проект Братца Яна там есть протокол прошивки

Добавлено after 6 minutes 25 seconds:
Может кто знает как в Студии прикрепить к проекту бинарный файл чтобы не делать из него массив байт ?
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

[uquote="BOB51",url="/forum/viewtopic.php?p=4612450#p4612450"]делает невозможным самостоятельное изготовление простых самодельных программаторов
:roll:[/uquote] Так же шьют и при помощи копеечного преобразователя USB-TTL.
Я не рассматривал все варианты, остановился на доступном для себя.
[uquote="BOB51",url="/forum/viewtopic.php?p=4612450#p4612450"]Да и пока тех МК не так уж и много в обозримом пространстве.
:roll:[/uquote] Ну как бы скорее мег становится не много, и цена на них всё выше и выше.

Но у LGT есть озвученные баги. Это вроде как с Timmer3. Возможно ещё появятся.
Я же с 32-х битной записью в еепром так до конца и не разобрался. Но по 8 байт пишет нормально. Промониторил буржуйские сайты, информации крайне мало.

Для большинства задач чипа хватит. А мои поделки ориентированы на TFT дисплеи, и чип мне как раз кстати :) 32MHz от внутреннего RC при 3,3V и 32-х битный SPI буфер, как раз под TFT :)
Вымогатель припоя
Аватара пользователя
Сообщения: 501
Зарегистрирован: Вс окт 25, 2020 22:13:25
Откуда: Смоленск

Сообщение ДядяВован »

shonty писал(а):lgt8f328Pdef.inc я взял из статьи
Могли бы Вы выложить этот файл?
Не нахожу его в статье, может из-за отсутствия регистрации.
Ответить

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