Например TDA7294

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

Текущее время: Пн авг 25, 2025 01:50:44

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


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



Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 76, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт мар 04, 2011 02:40:20 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4468
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
Необязательно самоизменяться в процессе хода всей программы. Полиморфность можно применить в программах к устройствам, в которых реализован интерфейс конфигурации. Например в охранных устройствах, или в чём-нибудь другом, имеющим интерфейс взаимодействия с пользователем. Самоизмениться программе достаточно один раз при изменении конфигурации устройства. В следствии этого мы не потеряем производительность на проверках всевозможных байтов конфигурации и прочего в ходе работы программы. Так, что команда SPM сделана не только для всевозможных бутлоадеров и как дополнение к EEPROM.

ЗЫ: На работе есть несколько приборов, сделанных на 2313 тиньке. В интерфейсе куча настроек (over 300), при этом присутствует сложная логика работы устройства и при этом очень шустро работает. Как-то поинтересовался у разработчиков с центрального офиса, мол как они ухитрились так быстро проверять столько конфигов, и как они засунули всё это туда? Ответ - полиморфизм в программе.
Да я и не удивился ответу, там такие спецы сидят, что HEX или BIN файл вручную набить смогут.

_________________
I am DX168B and this is my favourite forum on internet!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт мар 04, 2011 08:30:31 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2117
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18404
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
думаю, слово "полиморфизм" - это типа тумана :) самопрограммирование в плане самомодификации программы МК AVR - это из области фантастики даже для больших мег с памятью 64 и более килобайт, а про тини и говорить нечего. дело в том, что невозможно ЗАПИСЫВАТЬ в область кода и одновременно ИСПОЛНЯТЬ код из записываемой области. именно поэтому область ЗАГРУЗЧИКА отделена от области ПРОГРАММЫ - читайте даташиты. таким образом, код из области загрузчика может изменять код программы, но сам себя не может ни тот, ни другой. значит, для "полиморфизма" программа должна иметь несколько кодов загрузчика в разных областях памяти и умело переключаться между ними - стоит произойти одному-единственному сбою, и вся память окажется похереной полностью.

к тому же в тини довольно мало памяти для того, что бы реализовать этот самый алгоритм полиморфизма - тут на ПК для этих целей приходится страшные извраты делать, а уж в МК и подавно. поэтому разработчики вашего девайса, скорее всего, все эти 300 настроек (даже не представляю, какие именно это могут быть настройки - не компьютер же с Windows на тини2313 они сделали!) на ПК компилируются в новую прошивку (вот вам и полиморфизм), которая затем грузится в МК при помощи тривиального bootloader-а.

это мое скромное мнение :)

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

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


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

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4468
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
Нет, это не ПК на тиньке, а диагностический прибор с семисегментным индикатором и 16 кнопками. Меню конфигурации там огромное - 20 пунктов, по 8 настроек в каждом пункте. 300 - это я конечно преувеличил. Несложно конфигуратор засунуть в область бутлоадера. Тем более там, чтобы войти в настройки, надо нажать на отдельную кнопку и удерживая её включить питание. К ПК ничего не подключается. Это полностью автономный прибор для теста акустических охранных датчиков.
Полностью менять весь код тоже нет смысла. Достаточно хотя-бы менять адреса меток в условиях, заранее наготовив шаблонов. Тем более тинька это позволяет в альтернативном режиме. То есть можно считать определённую область, сделать изменения, затереть старое и записать изменённое. При осмотре схемы я заметил, что вывод в индикатор работает через SPI и опрос кнопок происходит через дешифратор. Генерация звука скорее всего реализована таймером в PWM режиме. Фиг знает, как они сделали, но мне сказали, что конфигурация сделана методом полиформизма.

_________________
I am DX168B and this is my favourite forum on internet!


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

Зарегистрирован: Пт фев 18, 2011 20:37:34
Сообщений: 31
Рейтинг сообщения: 0
Здравствуйте, возникла проблема с подавлением дребезга контактов. Программа по таймеру выводит бегущую единицу в порт А, при нажатии на кнопку на 0 пине порта В, сбрасывается или устанавливается (в зав. от предыдущего состояния) бит разрешающий прерывание таймера. Код сброса/установки работает нормально, а вот обработка нажатия косячит. Иногда после сброса горит несколько светодиодов, иногда МК реагирует со второго нажатия. Пробовал разные интервалы задержки но не помогло. В чем может быть проблема?


Вложения:
Комментарий к файлу: код и схема в протеусе
Timer.zip [37.66 KiB]
Скачиваний: 172
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс мар 06, 2011 13:23:04 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Ср янв 05, 2011 16:25:15
Сообщений: 1163
Рейтинг сообщения: 0
Skyer писал(а):
Здравствуйте, возникла проблема с подавлением дребезга контактов.
.. опрос контактов ведут в прерывании и задержку делают там-же путем введения счетчика.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс мар 06, 2011 13:42:19 
Первый раз сказал Мяу!

Зарегистрирован: Пт фев 18, 2011 20:37:34
Сообщений: 31
Рейтинг сообщения: 0
А без таймера разве не обойтись? Там же только одна кнопка.

P.S. начал разбирать динамическую индикацию, вопрос: почему пример из обучалки выводит цифры по очереди, должно же быть одновременно (для глаза)? Ставил разные значения задержки, но результат одинаковый. Код и схему приложил


Вложения:
Комментарий к файлу: код и схема в протеусе
DynamicIndication.zip [61.19 KiB]
Скачиваний: 201
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс мар 06, 2011 14:28:59 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Ср янв 05, 2011 16:25:15
Сообщений: 1163
Рейтинг сообщения: 0
Skyer писал(а):
А без таймера разве не обойтись?
... можно, только зачем???
Skyer писал(а):
Программа по таймеру выводит бегущую единицу в порт ..
... если хотите занять все время МК опросом - можете делать это в основном цикле, но как ИМХО сделать лучше - написал выше...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс мар 06, 2011 14:59:54 
Первый раз сказал Мяу!

Зарегистрирован: Пт фев 18, 2011 20:37:34
Сообщений: 31
Рейтинг сообщения: 0
то есть, каждую секунду по прерыванию таймера проверять состояние порта? я правильно понял? А насчет первого способа, где может быть ошибка то?


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

Зарегистрирован: Вс фев 27, 2011 01:01:11
Сообщений: 86
Откуда: Республика Крым
Рейтинг сообщения: 0
Доброго времени суток!
Просмотрел всю тему, но ответа на возникший вопрос не нашел. Поэтому сам вопрос:
Имеется ли в ассемблере AVRStudio возможность условного компилирования.
Код:
; Например, определяю константу
.equ digit = 4
...
; Если Digit = 4 то компилируется участок кода
...
; Иначе компилируется следующий участок кода
...

Почитал про директивы ассемблера в Евстифееве и Ревиче, но особо полезного для решения данного вопроса там ничего не обнаружил... :-(
Думаю это должно как-то решаться, но с необходимыми для этого директивами асма, если таковые существуют, пока не встречался.
Может кто-нить что подскажет?

_________________
Опыт и мудрость приходят с годами... К некоторым годы приходят одни...


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

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Ср янв 05, 2011 16:25:15
Сообщений: 1163
Рейтинг сообщения: 0
VirZh писал(а):
Почитал про директивы ассемблера в Евстифееве и Ревиче, но особо полезного для решения данного вопроса там ничего не обнаружил... :-(
... ИМХО такие ответы лучше искать в help_e к компилятору. :)
сделать можно так:
Код:
.equ digit = 5

.if digit == 4
// если = 4
 .............
.elif digit == 5
// если = 5
 .............
.elif digit == 6
// если = 6
 .............
.else
// если другое значение
 .............
.endif


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

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Ср янв 05, 2011 16:25:15
Сообщений: 1163
Рейтинг сообщения: 0
Skyer писал(а):
то есть, каждую секунду по прерыванию таймера проверять состояние порта? я правильно понял?
для того чтобы не было заметно мерцание таймер настроим например на 1КГц. Внутри прерывания переменная-счетчик count увеличивает свое значение на 1 при обнаружении факта нажатия и обнуляется при отпускании. При достижении count заданного значения (например 250) - сбрасываем count в 0 и считаем что нажатие было.... (факт нажатия в данном случае регистрируется при удержании кнопки 250/1000=1/4 сек)


Последний раз редактировалось ChipKiller Пн мар 07, 2011 13:19:52, всего редактировалось 1 раз.

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

Зарегистрирован: Вс фев 27, 2011 01:01:11
Сообщений: 86
Откуда: Республика Крым
Рейтинг сообщения: 0
ChipKiller писал(а):
... ИМХО такие ответы лучше искать в help_e к компилятору. :)
сделать можно так:
Код:
.equ digit = 5

.if digit == 4
// если = 4
 .............
.elif digit == 5
// если = 5
 .............
.elif digit == 6
// если = 6
 .............
.else
// если другое значение
 .............
.endif


Большое Мяу!!! :-) Очень помогло. Теперь попытаюсь с помощью этого облегчить себе жизнь при использовании различных индикаторов, клавиатур и прочего дополнительного железа

_________________
Опыт и мудрость приходят с годами... К некоторым годы приходят одни...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн мар 07, 2011 13:25:55 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Ср янв 05, 2011 16:25:15
Сообщений: 1163
Рейтинг сообщения: 0
VirZh писал(а):
... попытаюсь с помощью этого облегчить себе жизнь при использовании различных индикаторов, клавиатур и прочего дополнительного железа
.. обычно для этого хватало связки .include и .equ, но с помощью директив условной получится, возможно, более гибко....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн мар 07, 2011 14:42:37 
Первый раз сказал Мяу!

Зарегистрирован: Пт фев 18, 2011 20:37:34
Сообщений: 31
Рейтинг сообщения: 0
Понятно, вечером попробую. А что может быть с динамической индикацией? В протеусе использовал модель индикатора с 4 цифрами, работает без сильного мерцания, а при использовании отдельных индикаторов (по одной цифре) косячит. В железе использую два индикатора, с тремя цифрами каждый.


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

Зарегистрирован: Вс фев 27, 2011 01:01:11
Сообщений: 86
Откуда: Республика Крым
Рейтинг сообщения: 0
ChipKiller писал(а):
.. обычно для этого хватало связки .include и .equ, но с помощью директив условной получится, возможно, более гибко....

Думаю это избавит от необходимости держать кучу inc файлов...

_________________
Опыт и мудрость приходят с годами... К некоторым годы приходят одни...


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

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Ср янв 05, 2011 16:25:15
Сообщений: 1163
Рейтинг сообщения: 0
Skyer писал(а):
В протеусе использовал модель индикатора с 4 цифрами, работает без сильного мерцания, а при использовании отдельных индикаторов (по одной цифре) косячит
... протеусом не пользуюсь - нет необходимости. Думаю "косячит" из-за того, что модели индикатора с 4 цифрами и отдельных индикаторов отличаются - не стоит забывать, что это всего-лишь модель....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн мар 07, 2011 22:17:41 
Встал на лапы
Аватар пользователя

Зарегистрирован: Вс фев 27, 2011 01:01:11
Сообщений: 86
Откуда: Республика Крым
Рейтинг сообщения: 0
Skyer писал(а):
Понятно, вечером попробую. А что может быть с динамической индикацией? В протеусе использовал модель индикатора с 4 цифрами, работает без сильного мерцания, а при использовании отдельных индикаторов (по одной цифре) косячит. В железе использую два индикатора, с тремя цифрами каждый.


Протеус не показывает все в реальном времени. Поэтому не стоит смотреть на то есть там мерцание или нет. Из опыта, мерцание не наблюдается если соблюдать следующее:
- засветка по очереди всех знаков должна происходить за время не более 20 мс (период сканирования <=20мс)
- При сканировании сначала гасим все знаки (0 на общие аноды или 1 - на общие катоды), затем выставляем нужные сегменты, после чего засвечиваем нужный разряд.

В реале делал максимум до 10 знаков (больше не было необходимости) Работает без мерцаний.
Кстати, в протеусе можно уменьшить тактовую частоту контроллера, например, раз в 50-100 по сравнению с реальной. и тогда ты увидишь, где идет неправильное переключение сегментов или разрядов, которое и вызывает мерцание

_________________
Опыт и мудрость приходят с годами... К некоторым годы приходят одни...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср мар 09, 2011 14:57:12 
Первый раз сказал Мяу!

Зарегистрирован: Пт фев 18, 2011 20:37:34
Сообщений: 31
Рейтинг сообщения: 0
Всем спасибо, помогло


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср мар 16, 2011 08:13:18 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 101
Зарегистрирован: Ср фев 24, 2010 19:16:07
Сообщений: 680
Рейтинг сообщения: 0
Кто нить может дать работающих код по самопрограммированию меги ?
интересует мега64...
нужно организовать хранение некоторых переменных в памяти программ..

p.s. по примерам что находил не совсем понятно :-( в частности как зоны RWW и NRWW задаются и где лучше что размещать...


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

Карма: 1
Рейтинг сообщений: 101
Зарегистрирован: Ср фев 24, 2010 19:16:07
Сообщений: 680
Рейтинг сообщения: 0
Еще один вопрос а можно ли организовать чтение из программной памяти при помощи индексной индексации ?
LDD r16 , X + 10 - походу дела читает из RAM, а мне нужно из FLASH.. причем чтобы значение X после выполения чтения не терялось...

p.s. пока приходиться сохранять значение в стек, и инкрементировать регистр сложением.. - и долго и как то коряво.. - может быть есть какое то другое решение ?


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

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


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

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


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

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


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