Например TDA7294

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

Текущее время: Пт ноя 07, 2025 11:07:41

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


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



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

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4468
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
Держи:
Код:
.include      "m32def.inc"

;*******************************************
.dseg
BUFF:         .byte         3

;*******************************************
.cseg
.org         0x0000
rjmp         RESET

.org         INT_VECTORS_SIZE

RESET:
ldi            r16,         Low(RAMend)
out            SPL,         r16
ldi            r16,         High(RAMend)
out            SPH,         r16
ldi            r18,         0

MAIN_LOOP:
mov            r16,         r18
ldi            XL,            Low(BUFF)
ldi            XH,            High(BUFF)
rcall         DECODER_BIN_10
inc            r18
rjmp         MAIN_LOOP

;*******************************************
DECODER_BIN_10:
clr            r17
DIV_10_LOOP:
cpi            r16,         10
brlo         DIV_10_END
subi         r16,         10
inc            r17
rjmp         DIV_10_LOOP
DIV_10_END:
st            X+,            r16 ;Пишем в ОЗУ результаты
mov            r16,         r17
tst            r16
brne         DECODER_BIN_10
ret

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс июн 05, 2011 15:57:29 
Родился
Аватар пользователя

Зарегистрирован: Вс июн 05, 2011 15:24:24
Сообщений: 4
Рейтинг сообщения: 0
Доброго времени суток, товарищи!
Не знаю, может надо было писать в другую тему, но всё-таки... Помогите пожалуйста с алгоритмом программной реализации заданной логической функции: (^x0+x1)(x1+x2+x3)
Написать программу я смогу, только не подскажете ли вы, как мне объявить инверсию?


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

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Lekter писал(а):
Помогите пожалуйста с алгоритмом программной реализации заданной логической функции: (^x0+x1)(x1+x2+x3)
Написать программу я смогу, только не подскажете ли вы, как мне объявить инверсию?

Дык проще простого
Если на выводе 0 - идем на метку 1, иначе на метку 2. (обезличено)

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


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

Зарегистрирован: Вс июн 05, 2011 15:24:24
Сообщений: 4
Рейтинг сообщения: 0
Meteor писал(а):
Lekter писал(а):
Помогите пожалуйста с алгоритмом программной реализации заданной логической функции: (^x0+x1)(x1+x2+x3)
Написать программу я смогу, только не подскажете ли вы, как мне объявить инверсию?

Дык проще простого
Если на выводе 0 - идем на метку 1, иначе на метку 2. (обезличено)

Это всмысле делать метки как? Имею ввиду, сначала делать x0+x1 на одной метке, а потом x1-x0 на другой? Просто я действительно "только родился" в этих делах.
И ещё вопрос: при x1+x2+x3 команда ADD или OR?


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс июн 05, 2011 18:33:27 
Друг Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Начнем с начала
что такое х0...х3?
сигналы?
байты?
числа?
в чем их мерить?

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс июн 05, 2011 18:46:30 
Родился
Аватар пользователя

Зарегистрирован: Вс июн 05, 2011 15:24:24
Сообщений: 4
Рейтинг сообщения: 0
Вообще задание такое: составить алгоритм для программной реализации заданной логической функции (^x0+x3)(x1+x2+x3). С оговоркой, что это будет выполняться в AVR.
Я так понял, что это всё-таки байты либо числа. Скорее - байты.


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

Зарегистрирован: Вс июн 05, 2011 15:24:24
Сообщений: 4
Рейтинг сообщения: 0
to Meteor. Прошу прощения, не могли бы Вы проверить мою программку? AVR к сожалению на мою 7ю винду не ставится.
Буду очень благодарен, если укажете недостатки!


Вложения:
прога.txt [269 байт]
Скачиваний: 183
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс июн 05, 2011 19:48:12 
Друг Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Чтото мне подсказывает что речь идет о сигналах - 3 логических сигналах и функция которую выполняет МК.
Уточните у преподователя. Пишите в личку.

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


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

Зарегистрирован: Пт окт 01, 2010 22:51:54
Сообщений: 59
Откуда: Украина/Умань
Рейтинг сообщения: 0
Скажу оффтоп, но я б использовал дял таких целей уже Си, а не асм.


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

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Цитата:
Скажу оффтоп, но я б использовал дял таких целей уже Си

Затроллим тему - в топку МК, прикрутим Циклон 5 или Спартан 6 для этого.
По существу - зачем такое навороченное создание как С, в функции 4х сигналов? Что бы раздуть программу из "10 строк машинного кода" по объему до нескольких килобайт? (хотя и это оффтоп)

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


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

Зарегистрирован: Пт окт 01, 2010 22:51:54
Сообщений: 59
Откуда: Украина/Умань
Рейтинг сообщения: 0
Ну вот, я ж писал про реакцию. Я написал своё мнение, не спорю, что лучше или хуже, но при дробных числах и отрицательных, меня на конференции отправили в Си.
Опять-же разводим оффтоп. Навязыватся не буду, тс всерамно делает на асме, а это, значит лучше, дял него по крайней мере.
(разве подобная ф-я в Си разрастется на несколько кб?)


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

Карма: 62
Рейтинг сообщений: 885
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6162
Откуда: Minsk
Рейтинг сообщения: 0
/Преамбула/
Если представить, что указанная задачка имеет хоть минимально-отдаленное отношение к практическим задачам, чего в учебных примерах наблюдать приходится крайне редко по причине полной оторванности учебы от жизни, то
/Амбула/
Будем считать, что поступают 4 логических сигнала в 4 младших бита порта D, которые обрабатываются, и результат решения выводится в младший бит порта B.
Код:
   in           r16,PIND
   mov   r17,r16
   mov   r18,r16
   com   r18
   lsr   r17
   lsr   r17
   lsr   r17
   or    r17,r18
   andi   r17,1    ; первый операнд
      ;
   mov   r18,r16
   andi   r18,14
   breq   _66
   ldi   r18,1    ; второй операнд
      ;
_66:   and   r17,r18
   brne       _75
   cbi          PORTB,0
   rjmp       _77
_75:   sbi          PORTB,0
_77:        ........


Скептики скажут : зачем использовать R16, можно сразу вводить в операционные регистры R17,R18. Умудренные опытом так не скажут, ибо нужна одномоментная фиксация принятого сигнала, чтобы ничего страшного не произошло, если за время обработки сигналы изменятся.
Вот так на примере мелкой задачки приходят здравые мысли. Так что микроконтроллеры - это вам не шахматы, тут думать нужно.
А потом : "забудьте как кошмарный сон то, чему вас учили в институтах, идите в цех и начинайте учиться" (С) А.Райкин


Последний раз редактировалось Jack_A Вт июн 07, 2011 11:53:10, всего редактировалось 2 раз(а).

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

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Тут особенность есть. Если х1=1, то нет смысла делать вычисления ибо (х0+1)(1+х2+х3)=1.
Еще одна, если х0=1 и х1=0, то нет смысла вычислять второй операнд ибо (не1+0)(0+х2+х3)=0.
В остальном думаю аффтор уже разобрался))

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


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

Карма: 67
Рейтинг сообщений: 1065
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19903
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Gudd-Head писал(а):
Как с помощью МК определить направление вращения энкодера, покрасивее и покомпактнее?
Энкодер двухбитный в коде Грея, т.е. последовательность 00-10-11-01 в одну сторону и 00-01-11-10 в другую.

Мдяаа, товарищи... В общем, решил я делать это табличным методом, т.е. брать 4 бита положения (2 прошлых + 2 текущих), прибавлять их к адресу начала 16-байтной таблицы и получать текущее состояние энкодера (покой или вращение по/против часовой). К слову о недавних диспутах по поводу антидребезга: его решил делать полностью программно (энкодер подключен напрямую к МК, у порты подтянуты встроенными резисторами).
В общем, почему-то работало всё примерно наполовину, не так как задумывалось. Поначалу грешил на антидребезг.
ВНИМАТЕЛЬНО изучив даташит на энкодер я наконец-то увидел, что общий вывод сбоку, а не посередине (по аналогии с переменником я почему-то был уверен что он там :) ).
Но! Кардинально это ничего не улучшило. В процессе отладки я понял, что даташит ввёл меня в заблуждение, а конкретно вот эта картинка:
Изображение
Я предполагал, что каждом положении энкодера возможно любое из состояний (00/01/10/11).
Как оказалось, неподвижный энкодер в любом положении выдаёт "11" (видимо, на это и намекает пунктирная линия с буквой D на рисунке), а замыкание на "землю" (изменение состояний 11-10-00-01-11 или 11-01-00-10-11) происходит только в момент поворота.
Так что задача сильно упрощается: если порт (к к-рому подключен энкодер) читается как "01", то вращение в одну сторону; "10" — в другую.


Вложения:
Безымянный.GIF [3.17 KiB]
Скачиваний: 1099

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср июн 08, 2011 11:35:13 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4468
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
Gudd-Head обратите внимание на диаграмму:

Изображение

Ложняков в направлении вращения не будет?
Может сделать так: Сначала получаем первичные биты, например 01. Уходим в первую ветку п\программы опроса и ждём там биты 10, как подтверждающие. После подтверждения выполняем действия. При вращении в обратную сторону получаем 10, потом уходим во вторую ветку программы и за тем ждём там биты 01 в подтверждение, после чего выполняем действия.
В ветках опроса, помимо ожидания подтверждения, можно устроить цикл такого рода: Если 256 раз прочиталось 11 или 00, то выйти из ветки в начало программы опроса.

Может это и изврат, но кажется, что для обычного энкодера этого должно хватить.

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


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

Карма: 67
Рейтинг сообщений: 1065
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19903
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
DX168B писал(а):
Ложняков в направлении вращения не будет?

Я вот тоже уже подумал что не всё так просто, если к этой диаграмме пририсовать дребезг:
Изображение
Так что либо подбирать задержку так, чтобы чётко попадать в установившиеся состояния "10-00-01", либо ждать следующих "11".


Вложения:
Безымянный.GIF [3.38 KiB]
Скачиваний: 1097

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср июн 08, 2011 12:25:47 
Друг Кота
Аватар пользователя

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт июн 09, 2011 12:01:37 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Вт фев 16, 2010 12:10:38
Сообщений: 268
Откуда: Воронеж, Россия
Рейтинг сообщения: 0
Gudd-Head писал(а):
Мдяаа, товарищи... В общем, решил я делать это табличным методом, т.е. брать 4 бита положения (2 прошлых + 2 текущих), прибавлять их к адресу начала 16-байтной таблицы и получать текущее состояние энкодера (покой или вращение по/против часовой).
ИМХО, все значительно проще и рассмотрение инкрементального энкодера в статике не имеет смысла.
Еще в очень давние времена делал счетчик для намотки катушек: D триггер определял направление счета реверсивного счетчика.
Вложение:
D_trig.jpg [15.7 KiB]
Скачиваний: 931
В данной схеме фиксируется лог. уровень сигнала A по положительному фронту сигнала B. А по сему однозначно: при вращении по часовой стрелке на выходе будет "1", против часовой "0". Обратите внимание, что дребезг для данной схемы не имеет значения. Для счета импульсов необходимо сформировать одиночный импульс по фронту сигнала B, длительностью немного больше "дребезга" на этой шине. В жесткой логике это легко решается одновибратором, ну а в мягкой ест. программно.
Полагаю, что такой алгоритм работы легко можно реализовать программно, например по прерыванию или иным способом. Как говорится, дело вкуса и предпочтений.Изображение


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

Карма: 67
Рейтинг сообщений: 1065
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19903
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
IM1 писал(а):
А по сему однозначно: при вращении по часовой стрелке на выходе будет "1", против часовой "0".

А если энкодер не вращается?

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


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

Зарегистрирован: Вт фев 16, 2010 12:10:38
Сообщений: 268
Откуда: Воронеж, Россия
Рейтинг сообщения: 0
Gudd-Head писал(а):
А если энкодер не вращается?
???
А что Вы хотите делать с невращающимся энкодером? Скорее всего, ждать продолжения процесса.
Весь его смысл в том, чтобы вращать ручку влево или вправо. Схема определяет направление по каждому приходящему импульсу, а Вы этот импульс либо суммируйте, либо вычитайте, либо обрабатывайте по какому-либо хитрому закону.


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

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


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

Сейчас этот форум просматривают: GARMIN и гости: 21


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

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


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