Например TDA7294

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





Текущее время: Ср апр 24, 2024 16:47:09

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


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



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

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4221
Откуда: Ижевск
Рейтинг сообщения: 0
Гефестион писал(а):
Переменные Read, ReadOffset, ArrCtrOffset объявлены в самом начале (до таблицы векторов прерываний) по 1 байту на каждую.
Может переменные объявлены, но не установлены?
Код:
.equ   ReadOffset=$70
.equ   ArrCtrOffset=$71
.equ   BuffSize=32

   CLR   R0
   STS   ArrCtrOffset,R0
   STS   ReadOffset,R0

TTT:
   lds R21,ArrCtrOffset
   inc R21 ; Увеличиваем ArrayCounterOffset
   cpi R21,6
   BRLO Exit
;   brne Exit
   clr R21
         
   lds R25,ReadOffset
   inc R25 ; Увеличиваем ReadOffset
   cpi R25,BuffSize
   brne Exit
;   brne Exit
   clr R25
     
Exit:   sts ArrCtrOffset,R21
   sts ReadOffset,R25

   RJMP   TTT


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

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

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


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

Карма: 11
Рейтинг сообщений: 87
Зарегистрирован: Вт фев 09, 2010 02:04:53
Сообщений: 2018
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Может переменные объявлены, но не установлены?
Код:
.equ   ReadOffset=$70
.equ   ArrCtrOffset=$71
.equ   BuffSize=32

   CLR   R0
   STS   ArrCtrOffset,R0
   STS   ReadOffset,R0

TTT:
   lds R21,ArrCtrOffset
   inc R21 ; Увеличиваем ArrayCounterOffset
   cpi R21,6
   BRLO Exit
;   brne Exit
   clr R21
         
   lds R25,ReadOffset
   inc R25 ; Увеличиваем ReadOffset
   cpi R25,BuffSize
   brne Exit
;   brne Exit
   clr R25
     
Exit:   sts ArrCtrOffset,R21
   sts ReadOffset,R25

   RJMP   TTT


У меня начало вот так выглядит:
Код:
*************** Константы *****************************************

.equ   BuffSize      = 32

*************** ОЗУ ***********************************************

.dseg

IN_buff:      .byte   32   ; Буфер приема
Read:         .byte   1   ; Указатель точки чтения из буфера
ReadOffset:      .byte   1   ; Смещение точки чтения
ArrCtrOffset:      .byte   1   ; Смещение счётчика чтения массива
Write:         .byte   1   ; Указатель точки записи в буфер

;************** Макросы *******************************************

.macro   PUSHF
push   R16
in   R16,SREG
push   R16
.endmacro
 
.macro   POPF
pop   R16
out   SREG,R16
pop   R16
.endmacro         

*******************************************************************
.cseg
.org 0

Дальше идёт таблица векторов прерывания и затем начинается программа.

Может, я макросы не там разместил? Наверное, их надо размещать после .cseg ?

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

В стек всё сохраняю. Начинаю с R16, затем SREG (написал макросы PUSHF и POPF)

Добавлено after 5 minutes 9 seconds:
Пользуйтесь симулятором в студии для отладки программ.
Кстати да, я симулятором ни разу не пользовался. Надо попробовать) Как думаете, лучше Proteus или AVR Studio?

_________________
Фак, кот грызёт провод! Сейчас его ударит либо током, либо тапком! ))


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

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

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

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4221
Откуда: Ижевск
Рейтинг сообщения: 0
Не вижу обнуления.
Код:
  CLR   R0
   STS   ArrCtrOffset,R0
   STS   ReadOffset,R0

Симулировать, на мой взгляд, лучше в студии.


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

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

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

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

Ерундой болтать изволите. Вдобавок позиционируете себя как не новичок, но вышло ровно наеборот.
1 - никакого сравнения регистров авр с другими мк. Аккумуляторы на других мк.
2 - любые регистры можно испрользовать где хочешь, как хочешь. Главное, что ты понимаешь, что делаешь. И учитываем, что у младших регистров ограничения по командам.
3 - Порядок сохранения регистров в прерываний произвольный, вот как тебе на душу ляжет. Главное правило, как правильно сохранять SREG и порядок восстановления регистров.
4 - Сохранять и восстанавливать нужно только те регистры, которые используются в обработчике прерывания.
Код:
push r16
in r16, SREG
push r16
push r17

bla-bla

pop r17
pop r16
out SREG, r16
pop r16
reti


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

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

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

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

Карма: 32
Рейтинг сообщений: 234
Зарегистрирован: Пт янв 29, 2010 10:27:40
Сообщений: 3851
Откуда: Москва
Рейтинг сообщения: 0
Как думаете, лучше Proteus или AVR Studio?

Если нужна симуляция только куска кода, то можно использовать студию, если нужно учитывать взаимодействие с другими элементами схемы, то без Протеуса будет сложно. ИМХО Протеус в любом случае удобнее студии, тем более что ничто не мешает скомпилировать проект, и моментально переключившись в протеус его запустить. Главное знать в каком симуляторе какие глюки есть!

_________________
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)


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

Зарегистрирован: Ср авг 05, 2015 19:34:20
Сообщений: 107
Рейтинг сообщения: 0
Вклинусь в беседу о симуляторе... В АВР можно пошагово проверить работу, сравнить содержимое регистров,... А в протеус - только работу: реакцию на нажатие,...
Или я не прав относительно Протеус? Было бы здорово наблюдать содержимое регистров, ставить точки останова,...


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

Карма: 32
Рейтинг сообщений: 234
Зарегистрирован: Пт янв 29, 2010 10:27:40
Сообщений: 3851
Откуда: Москва
Рейтинг сообщения: 0
Есть там и регистры и точки останова, только регистры I/O там отображаются просто таблицей как и RAM, но их можно в watch лист добавить и дать нормальные имена (причем они там уже в списке есть, только выбрать). Как например в авр студии просимулировать обмен между 2-мя (3-мя, 10-ю) контроллерами например по SPI? Или динамическую индикацию? Тыкать по битам в регистрах PINx уныло...

_________________
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)


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

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Вообще-то в протеусе есть модуль удалённой отладки. Не знаю как в новых студиях, но для 4-й есть плагин удалённого отладчика в протеусе, но он несколько неудобен - протеус запускается исключительно в рамках окна студии и "переключиться" на него проблематично. А в остальном отладка происходит в студии, а симуляция полноценной схемы(её надо нарисовать для проекта заранее и сохранить, в отладке схему изменить нельзя да и проблематично).


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

Зарегистрирован: Ср авг 05, 2015 19:34:20
Сообщений: 107
Рейтинг сообщения: 0
Значит возможность есть и я о ней не знаю (((
Всегда тыкал в флаги прерывания и руками устанавливал значения регистров (((
Видел, что в протеус можно открыть лист кода... В этом направлении всеми лапами копаться?
Proteus 8.1 SP1


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

Карма: 32
Рейтинг сообщений: 234
Зарегистрирован: Пт янв 29, 2010 10:27:40
Сообщений: 3851
Откуда: Москва
Рейтинг сообщения: 0
Суйте в модель МК в протеусе не hex, а obj-файл, во время симуляции на паузе тыкайте правой кнопкой на контроллер, внизу меню будет пункт "AVR" - вот там все что вам надо и регистры и память и код, если исходник сишный, еще и переменные можно смотреть...

_________________
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)


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

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Только там не абы какой obj-файл надо подсунуть, а скомпилированный с отладочными данными - тогда имена переменных появятся и т.д. Но заманчивей всё-таки использовать возможность удалённой отладки. Только х.з. как её настроить из последней студии... может там какой-то виртуальный отладчик ещё должен быть, через который студия сконектится к протеусу как к обычному программатору-отладчику.


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

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

со студиями я никаких дел не имею давно, но пробовал такую удаленку запускать в Eclipse. если протеус может быть запущен в качестве gdb-сервера, то всё должно быть достаточно просто - в настройках оладчика надо будет задать адрес хоста и порт, и все. но как быть с протеусом я вообще не в курсе... а без протеуса только simulavr может быть таким сервером - это крайне убогая, глючная, не симулирующая периферию приблуда... о нормальной отладке с нею речь идти не может, разве что для крайне примитивных проектов типа мигания светодиодом на задержках...

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

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


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

Зарегистрирован: Ср авг 05, 2015 19:34:20
Сообщений: 107
Рейтинг сообщения: 0
Ух ты!!! Я и не знал, но очень в этом нуждался.
Спасибо всем за ответы!
Alexeyslav, а где в AVR Studio задаются параметры компиляции (скомпилированный с/без отладочными данными)


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

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Вс май 03, 2015 15:05:58
Сообщений: 55
Рейтинг сообщения: 0
Здравствуйте!
Мега128А, 7372800 Гц, таймер в режиме СТС (№4), делитель 1024, должен переключать порт PB5(OC1A) с частотой 1 Гц (OCR1A=3599). Протеус кажет период что-то 4.4 мс, вместо положенной 1 с. Что не так? Опять прибабах протеуса?

Код:
   ldi r_temp, (0<<COM1A1)|(1<<COM1A0)|(0<<WGM11)|(0<<WGM10)
   out TCCR1A, r_temp

   ldi r_temp, 0x0F
   out OCR1AL, r_temp

   ldi r_temp, 0x0E
   out OCR1AH, r_temp

   ldi r_temp, (0<<WGM13)|(1<<WGM12)|(1<<CS12)|(0<<CS11)|(1<<CS10)
   out TCCR1B, r_temp


Добавлено after 15 minutes 26 seconds:
О Боги, каюсь, грешен! Сначала же надо записывать старший а затем младший регистры сравнения!


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

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4221
Откуда: Ижевск
Рейтинг сообщения: 0
16-разрядные регистры таймеров должны заносить в порядке старший-младший
Код:
   ldi r_temp, 0x0E
   out OCR1AH, r_temp

   ldi r_temp, 0x0F
   out OCR1AL, r_temp

   ldi r_temp, (0<<COM1A1)|(1<<COM1A0)|(0<<WGM11)|(0<<WGM10)
   out TCCR1A, r_temp

;   ldi r_temp, 0x0F
 ;  out OCR1AL, r_temp

  ; ldi r_temp, 0x0E
   ;out OCR1AH, r_temp

   ldi r_temp, (0<<WGM13)|(1<<WGM12)|(1<<CS12)|(0<<CS11)|(1<<CS10)
   out TCCR1B, r_temp



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

Карма: 5
Рейтинг сообщений: 20
Зарегистрирован: Пн апр 20, 2015 14:00:32
Сообщений: 62
Рейтинг сообщения: 0
Сделал стартовый комплект на чистом ассемблере. Для компиляции используются утилиты GCC. Для написания программ - только ваш любимый блокнот! :)

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


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

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

Читать не пробовал внимательней?
Demiurg писал(а):
1 - никакого сравнения регистров авр с другими мк. Аккумуляторы на других мк.

Не понял, что ты хочешь донести.
Demiurg писал(а):
2 - любые регистры можно испрользовать где хочешь, как хочешь. Главное, что ты понимаешь, что делаешь. И учитываем, что у младших регистров ограничения по командам.

Я разве писал, что их нельзя использовать?
Demiurg писал(а):
3 - Порядок сохранения регистров в прерываний произвольный, вот как тебе на душу ляжет. Главное правило, как правильно сохранять SREG и порядок восстановления регистров.

Вот тут ты не прав… главное правило как я уже писал: всегда первым в стек сохраняется регистр r16, а вот все последующие уже не имеют упорядоченного значения. Так как если не использовать это правило, то данные регистра r16 будут утеряны.
Demiurg писал(а):
4 - Сохранять и восстанавливать нужно только те регистры, которые используются в обработчике прерывания.

Я об этом и писал... читай внимательней.


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

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
Да прав Demiurg, прав.. Чем R16 такой особенный?
Имел он ввиду, что нет аккумулятора в AVR,это ж не Z80

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


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

Карма: 64
Рейтинг сообщений: 966
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4221
Откуда: Ижевск
Рейтинг сообщения: 0
Мяукните! Ассемблер AVR самодостаточен и не нуждается в сторонней поддержке.
Вложение:
ASM_M328P.zip [206.27 KiB]
Скачиваний: 174
Загрузить .asm в блокнот - сделать изменения - сохранить - вызвать .bat - полученный .hex и .eep записать в камень.


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

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


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

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


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

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


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