Например TDA7294

Форум РадиоКот • Просмотр темы - Ассемблер (ASM) для AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 10:29:15

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7597 ]     ... , , , 324, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 09, 2018 10:30:16 
Друг Кота

Карма: 60
Рейтинг сообщений: 67
Зарегистрирован: Ср янв 02, 2013 08:37:35
Сообщений: 3342
Рейтинг сообщения: 0
Да прав Demiurg, прав..

Я не настаиваю… вам профессионалам виднее…
Цитата:
Чем R16 такой особенный?

Он не особенный… дело в компиляторах.
Цитата:
Имел он ввиду, что нет аккумулятора в AVR,это ж не Z80

Где я писал, что он у AVR есть!? :facepalm: Вопрос риторический…


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 09, 2018 10:44:48 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
АСУ писал(а):
...

Все написанное вами раскрывает следующее: вы натягиваете сову на авр. У вас какие-то свои представления об этих МК, притом сопоставляющие с теми, с какими работали до авр. Также ваше недопонимание родило неверные правила работы с регистрами авр. Поясняю: у авр есть младшие регистры, r0-r15; старшие r16-r31. Их разница только в том, что с младшими регистрами не все инструкции действуют. Порядок сохранения и восстановления может быть абсолютно произвольный. Вообще покуй. Главное - последовательность действий.

Особое внимание нужно уделить регистрам r0 и r1. Во-первых, в r0 могут считываются данные из памяти программ. Во-вторых, в этих регистрах загружается результат при операции умножения.

Код:
//========
push r2 // Если этот регистр участвует в программе.
in r2, SREG
push r2
//bla-bla
pop r2
out SREG, r2
pop r2
reti // или ret, если не нужны прерывания.
//========

//========
push r16 // Если этот регистр участвует в программе.
in r16, SREG
push r16
// bla-bla
pop r16
out SREG, r16
pop r16
reti // или ret, если не нужны прерывания.
//========

//========
// Можно вообще так:
.def RSREG = r5 // И использовать этот регистр для сохранения восстановления SREG

in RSREG, SREG
//bla-bla
out SREG, RSREG
reti // или ret, если не нужны прерывания.
//========

//========
push r31
push r17
push r16
push r19
in r19, SREG
push r19
// bla-bla
pop r19
out SREG, r19
pop r19
pop r16
pop r17
pop r31
reti // или ret, если не нужны прерывания.
//========


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 09, 2018 10:56:33 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
АСУ,вот здесь, слово КАК - не в счёт
сначала никак не хотела работать, поскольку я пробовал регистры R16, R17, R18.

Регистр r16 и r17 у AVR используются как аккумулятор… для новичков их использование не рекомендуется. Тебе нужно взять в привычку при любом прерывании сохранять в стек значения регистров r16, r17 и SREG, а при выходе из прерывания возвращать из стека сохраненные значения этих регистров. Небольшой нюанс при сохранении заключается в следующем: всегда первым сохраняется регистр r16 все последующие не имеют упорядоченного значения. Извлекаются значения из стека строго в обратной последовательности (r16 последним). Таким же образом поступают и с теми регистрами, которые используются как в основном теле программы, так и задействованы в теле прерывания.

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 09, 2018 11:04:12 
Друг Кота

Карма: 60
Рейтинг сообщений: 67
Зарегистрирован: Ср янв 02, 2013 08:37:35
Сообщений: 3342
Рейтинг сообщения: 0
...

Если не уловили суть сказанного, то можно было бы просто переспросить, а не надувать щёки… всё тобой изложенное не является секретной информацией… я выше уже объяснил, что дело не в самом регистре, а в компиляторе… впрочем не важно... я не настаиваю.

Добавлено after 3 minutes 44 seconds:
АСУ,вот здесь, слово КАК - не в счёт

Понятно… :facepalm:


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 09, 2018 11:12:54 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
...

Щеки как раз вы надули. Типа вы не новичок. И написали так как вы понимаете, но не так как есть. Раздувать дальше спор и писькомеряние нет смысла.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 09, 2018 11:38:54 
Друг Кота

Карма: 60
Рейтинг сообщений: 67
Зарегистрирован: Ср янв 02, 2013 08:37:35
Сообщений: 3342
Рейтинг сообщения: 0
Щеки как раз вы надули. Типа вы не новичок.

Пусть будет по твоему, раз тебе так легче… я не программист, потому амбиций никаких… могу быть и новичком – меня это не задевает.

ЗЫ. А суть заключалась в следующем… чтобы сохранить регистр SREG в стек, необходимо дополнительно использовать рабочий регистр… как «правило» большинство используют регистр r16… тем самым его же могу использовать и в теле основной программы или в подпрограммах… если программа большая то отслеживать это проблематично… я поступаю проще, при сохранении регистра SREG в стек использую всегда только r16… предварительно сохранив его же значения в стек. Мне это помогает не наступать на грабли…


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 09, 2018 11:46:26 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
SREG вы можете сохранять в любой регистр, также отвести специальный регистр только для этой задачи. Второй метод нельзя использовать, если в обработчике прерывании вы разрешаете прерывания. В этом случае только через стек, либо если позволяет, для одного обработчика один регистр, для другого обработчика другой. Сохранение SREG в регистр уменьшает размер программы и количество тактов на обработку прерывания. 2 такта против 6.
Также нужно помнить, что в обработчике нужно сохранять только те регистры, которые используются в основном цикле.
Есть еще такой способ. Для обработчика прерывания использовать только свои регистры. Это также экономит память программ и такты. Но тут зависит от задачи и кол-ва используемых регистров.


Последний раз редактировалось Demiurg Пт фев 09, 2018 11:48:55, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 09, 2018 11:48:13 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
Просто IN [НЕИСПОЛЬЗУЕМЫЙ РЕГИСТР],SREG
Неужто все-все регистры задействованы? И в стек пихать его необязательно

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 09, 2018 12:09:05 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4221
Откуда: Ижевск
Рейтинг сообщения: 0
Можно вообще не сохранять SREG, если использовать в обработчике команды, не трогающие оный.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 09, 2018 12:16:11 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 141
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1384
Рейтинг сообщения: 0
akl писал(а):
Можно вообще не сохранять SREG, если использовать в обработчике команды, не трогающие оный.

Тоже верно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 09, 2018 14:24:14 
Открыл глаза
Аватар пользователя

Карма: 5
Рейтинг сообщений: 20
Зарегистрирован: Пн апр 20, 2015 14:00:32
Сообщений: 62
Рейтинг сообщения: 0
Мяукните! Ассемблер AVR самодостаточен и не нуждается в сторонней поддержке.

Возможно.. Для крошечных программок. Но avrasm это заброшенный проект. И таких проектов много. Вопросов к нему то же много. Если вы напишете программу в десятки тысяч строк, то сойдёте с ума. Метки на русском недопустимы.

avrasm не понимает русские имена файлов. Не разрешает пробелы в именах. Думаю это далеко не все подводные камни... То же самое и в keil.

GCC ассемблер - это единая среда для многих ядер. Весьма развитая. И это здорово упрощает работу.

_________________
NXP i.MX7D на чистом ассемблере


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 09, 2018 15:39:08 
Встал на лапы

Карма: 3
Рейтинг сообщений: 7
Зарегистрирован: Чт сен 10, 2015 06:59:03
Сообщений: 106
Откуда: Гродно, BY
Рейтинг сообщения: 0
Покажи описание на GCC ассемблер.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 09, 2018 22:08:43 
Открыл глаза
Аватар пользователя

Карма: 5
Рейтинг сообщений: 20
Зарегистрирован: Пн апр 20, 2015 14:00:32
Сообщений: 62
Рейтинг сообщения: 0
Мяф и мяф :idea:

_________________
NXP i.MX7D на чистом ассемблере


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб фев 10, 2018 12:31:30 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14062
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Как вариант компилятора GCC ассемблер заслуживает внимания...
Но не в данной ветке.
Поскольку анонсировано как "мультимикроконтроллерный" более рационально выделение в отдельную ветку с описанием приемов применения относительно разных МК, входящих в оговоренный для компилятора перечень.
Вобщем аналогия моей "винной" (viewtopic.php?f=62&t=94201) с той разницей, что у меня рассматриваются примеры относительно "стандартных" компиляторов разработчиков/изготовителей МК, а в Вашем случае должен быть упор на применение в проектах именно компилятора GCC ассемблера.
:beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср фев 14, 2018 10:36:18 
Открыл глаза

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Вс май 03, 2015 15:05:58
Сообщений: 55
Рейтинг сообщения: 0
Вот такая запись без комментариев компилируется

Код:
LookUp:
.DB $DE, \
$AD, \
$BE, \
$EF
 


А когда добавляешь комментарий - строка рвется и не компилируется

Код:
LookUp:
.DB $DE, \ //comment
$AD, \ //comment
$BE, \ //comment
$EF //comment
 


Вопрос - как сделать возможным комментирование каждой строки, при объявлении данных (во флэш) по одному байту? Есть вариант объявлять через .db в каждой строке, но тогда добавляется padding zero byte


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср фев 14, 2018 11:08:30 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4221
Откуда: Ижевск
Рейтинг сообщения: 0
Код:
                 LookUp:
00009a adde         .DB $DE,$AD //comment
00009b efbe         .DB   $BE,$EF //comment
                 ;LookUp:
                 .DB $DE, \
                 $AD, \
00009c adde      $BE, \
00009d efbe      $EF
                 ;*************************************************
Можно так.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср фев 14, 2018 12:44:37 
Открыл глаза

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Вс май 03, 2015 15:05:58
Сообщений: 55
Рейтинг сообщения: 0
Да, но так в строке объявлено 2 байта, а нужно чтоб один) Проблема в том что это некоторый довольно длинный пакет (~50 байт) в который в любой момент потребуется вносить изменения. А если объявлять по два байта в строке то, если внести изменения (например один байт) где-то между этими двумя байтами то пакет "поползет" и придется заниматься перерасстановкой.

Добавлено after 11 minutes 7 seconds:
Я кажется нашел способ

Код:
LookUp:
.DB $DE, /*comment*/\
$AD, /*comment*/\
$BE, /*comment*/\
$EF


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср фев 14, 2018 13:07:49 
Друг Кота

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4221
Откуда: Ижевск
Рейтинг сообщения: 0
Если хотите ловить варнинги когда число байт нечетное, можно и так.
Код:
                 LookUp:
                 .DB $DE, /*comment*/\
                 $AD, /*comment*/\
000090 adde      $BE, /*comment*/\
                 $EF, \
000091 efbe
 warning: .cseg .db misalignment - padding zero byte
000092 004d      77


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт фев 15, 2018 08:07:58 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Ср авг 17, 2011 23:12:30
Сообщений: 538
Рейтинг сообщения: 0
Всем привет.
Подсоединил две atmega8 по UART в симуляторе Proteus
Пытаюсь посмотреть когда срабатывает флаг PE- флаг ошибки контроля четности,но флаг все время стоит в 0.
Подскажите в чем ошибаюсь
в передатчике настройка UART:


Код:
    ;//вкл передатчик
          ldi R16,(1<<TXEN)
     out UCSRB,R16
   
     ;//зададим скорость 9600 бод
     ldi R16,0x00
     out UBRRH,R16
     ldi R16,0x34
     out UBRRL,R16
   
     ;//выберем 8 битный режим и вкл проверку на четность
          ldi R16,(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0)|(1<<UPM1)
     out UCSRC,R16


в Приемнике :

Код:
        ;//вкл приемник выберем 9 битный режим
        ldi R16,(1<<RXEN)|(1<<UCSZ2)
   out UCSRB,R16
   
   ;//зададим скорость 9600 бод
   ldi R16,0x00
   out UBRRH,R16
   ldi R16,0x34
   out UBRRL,R16
   ;//выберем 9 битный режим и вкл проверку на четность
   ldi R16,(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0)|(1<<UPM1)
   out UCSRC,R16


Пробовал в приёмнике использовать как 8 битный так и 9 битный режим

в приемнике отслеживаю посылку так

Код:
 
   MAIN:
  ;//ждем окончания приема
   sbis UCSRA,RXC
   rjmp MAIN
   in R16,UDR
   out PORTB,R16


пробовал смотреть за флагом выводя UCSRA в порт
флаг PE все время в нуле делал по разному :
1) после проверки флага RXC

Код:
 
   MAIN:
   sbis UCSRA,RXC
   rjmp MAIN
   in R16,UCSRA
   out PORTB,R16
   wait:
   rjmp wait


2) после прочтения данных

Код:
    MAIN:
    sbis UCSRA,RXC
    rjmp MAIN
    in R16,UDR
 
    in R16,UCSRA
    out PORTB,R16
    wait:
    rjmp wait



Обьясните почему флаг PE=0 всегда, отправлял числа 0x30,0x31 разницы не какой,смотрю на шине осциллографом, когда числа меняю меняется и бит четности перед стоп битом, а в приемнике флаг PE=0.
Обьясните где нужно настраивать UPM1 и UPM0 и в передатчике и приемнике?,или достаточно токо в приемнике?,обязательно ли передавать в передатчике этот 9 бит или достаточно поставить контроль четности просто в приемнике,просто флаг PE на основе чего ставиться?,на основе принятого 9 байта передатчика?,или он рассчитывается по принятому байту?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт фев 15, 2018 08:44:23 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
если контроль четности включен, то при приеме подсчитывается контрольный бит и сравнивается с тем, что принят, при несовпадении устанавливается флаг ошибки.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7597 ]     ... , , , 324, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 49


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y