Например TDA7294

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

Текущее время: Пт дек 19, 2025 16:08:01

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


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



Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 12, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 05, 2009 13:57:49 
Нашел транзистор. Понюхал.

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Пн сен 01, 2008 14:49:03
Сообщений: 151
Откуда: Казахстан
Рейтинг сообщения: 0
А что ты хочешь этим сделать????
Код:
   ldi   TMP_Y,1<<TOV0 ; здесь в регистр записыветься
   out    TIFR0,TMP_Y ; а здесь не как не перемещается и через sts тож не в какую


TIFR - это регистр флагов. В частности флаг переполнения TOV0 выставляется АППАРАТНО, при переполнении таймера. Принудительно его можно только сбросить в ноль. Причём записью в него ЕДИНИЦЫ!

зы: Даташит блин не читаем нифига.....


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 05, 2009 21:41:41 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 01:17:12
Сообщений: 690
Рейтинг сообщения: 0
почему не работает первый вариант в отличии от второго, ведь смысл один...
Код:
1) metka: sbis porta,2 ;не рабочий вариант
               rjmp metka
               ....

2) metka: in temp,pina ;рабочий вариант
               sbrs temp,2
               rjmp metka
               ....

В коде, соответственно, реализовано ожидание появления нужного лог. уровня. Делал по первому, у меня не реагировал мк на лог уровень на пин 2 порта А, а по второму варианту реагирует. Почему?


Последний раз редактировалось Alexeus Пт мар 06, 2009 12:48:56, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 06, 2009 10:08:15 
Нашел транзистор. Понюхал.

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Пн сен 01, 2008 14:49:03
Сообщений: 151
Откуда: Казахстан
Рейтинг сообщения: 0
Да фик знает.. По идее у тебя не должны работать оба варианта, ибо чтобы узнать уровень на ноге, надо читать PINA, а не PORTA.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 06, 2009 12:51:38 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 01:17:12
Сообщений: 690
Рейтинг сообщения: 0
поправил, в первом случае действительно портА, во втором пинА, описка.

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

:)


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб мар 07, 2009 21:01:45 
Вымогатель припоя
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 01:17:12
Сообщений: 690
Рейтинг сообщения: 0
AT90CAN128 не активируются прерывания.

заношу в регистры EICRA, EICRB:0x00, EIMSK, EIFR:0x01 должно быть активно INT0 по низкому уровню, разрешаю глобальные прерывания, а оно не работает...

на out EICRA... ругается, заношу через sts EICRA,temp


Код:
 
ldi temp,0
sts EICRA,temp

... типа так. Как активировать прерывания?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 08, 2009 18:18:40 
Это не хвост, это антенна
Аватар пользователя

Карма: 5
Рейтинг сообщений: 3
Зарегистрирован: Ср янв 30, 2008 17:52:55
Сообщений: 1392
Рейтинг сообщения: 0
уж не знаю ,можно ли тут задавать глупые вопросы начинающим....
но вот про регистровые пары вопрос такой - как проинициализировать пару регистров (чтоб получился 16 разрядный),
потом чтоб в него можно загрузить слово в верхнюю и нижнюю части и потом чтоб можно применить к этой паре такие команды как :DEC ,INC ,ROR,ROL ? Как организовать перенос из одного в другой ?так чтоб обращаться с парой как с 16 разрядным регистром...
нельзя ли привести коротенький пример?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 08, 2009 19:38:16 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
vistador писал(а):
уж не знаю ,можно ли тут задавать глупые вопросы начинающим.... Как организовать перенос из одного в другой ?так чтоб обращаться с парой как с 16 разрядным регистром...
нельзя ли привести коротенький пример?

Загрузить в пару регистров 16 разрядоное число легко, например

Код:
ldi r16, low(int16bit);
ldi r17, high(int16bit); где int16bit - 16-ти битная константа

Для операций, превышающих 8 бит существует флаг переноса.
комадны DEC и INC трудно использовать с 16 битными операндами, т. к. они не изменяют флаг переноса вместо них применительно к парам регистров можно использовать sbiw adiw, например
Код:
sbiw r16, 1
эквивалентно декременту 16 битного числа помещенного в регистровую пару r17:r16, с той только разницей, что данная команда изменяет флаг переноса.
ROR,ROL используются также как и с 8 ми битными числами, только приходится делать две команды напримет сдвиг влево через перенос
Код:
rol r16
rol r17
в итоге сдвинет 16 разрядное число через перенос влево на 1 разряд.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 08, 2009 21:34:30 
Это не хвост, это антенна
Аватар пользователя

Карма: 5
Рейтинг сообщений: 3
Зарегистрирован: Ср янв 30, 2008 17:52:55
Сообщений: 1392
Рейтинг сообщения: 0
smac писал(а):

Код:
ldi r16, low(int16bit);
ldi r17, high(int16bit); где int16bit - 16-ти битная константа

.

а как записать например число AF2D ? если можно пример приведите


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 08, 2009 21:55:44 
Нашел транзистор. Понюхал.

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Пн сен 01, 2008 14:49:03
Сообщений: 151
Откуда: Казахстан
Рейтинг сообщения: 0
smac писал(а):
ROR,ROL используются также как и с 8 ми битными числами, только приходится делать две команды напримет сдвиг влево через перенос
Код:
rol r16
rol r17
в итоге сдвинет 16 разрядное число через перенос влево на 1 разряд.

В этом случае в нулевом бите R16 будет мусор (точнее, содержимое переноса, зависящее от предыдущих команд). Лучше так:
Код:
lsl r16
rol r17


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 08, 2009 21:59:25 
Нашел транзистор. Понюхал.

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Пн сен 01, 2008 14:49:03
Сообщений: 151
Откуда: Казахстан
Рейтинг сообщения: 0
vistador писал(а):
а как записать например число AF2D ? если можно пример приведите

Код:
ldi r16, low(0xAF2D)
ldi r17, high(0xAF2D)


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 08, 2009 22:04:35 
Это не хвост, это антенна
Аватар пользователя

Карма: 5
Рейтинг сообщений: 3
Зарегистрирован: Ср янв 30, 2008 17:52:55
Сообщений: 1392
Рейтинг сообщения: 0
спасибо.. :)
Код:
lsl r16
rol r17

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


Последний раз редактировалось vistador Вс мар 08, 2009 22:11:32, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вс мар 08, 2009 22:08:14 
Нашел транзистор. Понюхал.

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Пн сен 01, 2008 14:49:03
Сообщений: 151
Откуда: Казахстан
Рейтинг сообщения: 0
vistador писал(а):
Как организовать перенос из одного в другой ?так чтоб обращаться с парой как с 16 разрядным регистром...

Для копирование пары регистров есть команда MOVW.
Код:
movw    r30, r24 ;копирование пары r24:r25 в пару r30:r31


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 09, 2009 00:37:29 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
YurkaM писал(а):
...Лучше так:
Код:
lsl r16
rol r17

Код:
rol r16
rol r17
- "полный аналог" команды rol, мусор будет и в случае восьмибитного числа. Вы привели сдвиг влево, который эквивалентен умножению на 2, а с помощью двух rol можно вдвинуть бит переноса в 16 битное слово, так что команда тоже полезная, я например так в одном из последовательных приемников делал.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 09, 2009 00:43:36 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
vistador писал(а):
спасибо.. :)

а как же тогда - получается что сдвиг в разные стороны? ведь я число потом собираюсь выводить последовательно на порт ...или я чтото не так понял?
сдвиг в одну сторону, просто lsl - логический сдвиг влево (в нулевой бит регистра задвигается 0, седьмой бит регистра выдвигается в перенос), а rol - сдвиг через перенос (флаг переноса задвигается в 0 бит, 7 бит выдвигается во флаг переноса).


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 09, 2009 09:39:09 
Нашел транзистор. Понюхал.

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Пн сен 01, 2008 14:49:03
Сообщений: 151
Откуда: Казахстан
Рейтинг сообщения: 0
smac писал(а):
Вы привели сдвиг влево, который эквивалентен умножению на 2, а с помощью двух rol можно вдвинуть бит переноса в 16 битное слово, так что команда тоже полезная, я например так в одном из последовательных приемников делал.

Согласен :)
Ну и похоже, vistadorу надо хотя бы заглянуть в список команд AVR...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 09, 2009 12:27:38 
Мучитель микросхем

Зарегистрирован: Вс июн 01, 2008 12:16:38
Сообщений: 459
Рейтинг сообщения: 0
YurkaM писал(а):
Ну и похоже, vistadorу надо хотя бы заглянуть в список команд AVR...


+ Много.
Прошу прощения за оффтоп и этот пост ни в коем случае не претензия к Вам YurkaM., это, если хотите, совет всем начинающим.
Я это просто устал уже всем это советовать, вообще странная ситуация, такое ощущение, что многим легче спросить и потом день ждать когда ответят, чем за 5 минут найти и разобраться в команде используя, например AVR Instruction Set - http://www.atmel.com/atmel/acrobat/doc0856.pdf


Последний раз редактировалось smac Ср мар 11, 2009 01:48:36, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 09, 2009 13:17:08 
Нашел транзистор. Понюхал.

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Пн сен 01, 2008 14:49:03
Сообщений: 151
Откуда: Казахстан
Рейтинг сообщения: 0
Эт точно, smac.
Интересно, что я например часто сам не знаю на 100% ответы на некоторые вопросы, тем не менее лезу в даташит, а иногда и перепроверю потом в симуляторе или железе, и отвечаю. Т.е. то же самое элементарно мог сделать и спрашивающий....


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 10, 2009 00:10:42 
Это не хвост, это антенна
Аватар пользователя

Карма: 5
Рейтинг сообщений: 3
Зарегистрирован: Ср янв 30, 2008 17:52:55
Сообщений: 1392
Рейтинг сообщения: 0
YurkaM писал(а):
vistador писал(а):
а как записать например число AF2D ? если можно пример приведите

Код:
ldi r16, low(0xAF2D)
ldi r17, high(0xAF2D)

а на это АВР студия ругается .....как же записать то все такии?
ПС да есть у меня список команд...смотрю я в него.. и в даташит на мегу тоже поглядываю .но все равно лучше когда опытные товарищи помогут...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 10, 2009 09:30:13 
Нашел транзистор. Понюхал.

Карма: 1
Рейтинг сообщений: 3
Зарегистрирован: Пн сен 01, 2008 14:49:03
Сообщений: 151
Откуда: Казахстан
Рейтинг сообщения: 0
Хм.. Странно! А ругается какими словами?
Кстати тут (0xAF2D) первый символ - цифра ноль. Может ты букву О написал? :shock:
Ну ещё вот такой вариант должен работать:
Код:
ldi r16, low($AF2D)
ldi r17, high($AF2D)


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 10, 2009 09:38:59 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18446
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
smac писал(а):
такое ощущение, что многим легче спросить и потом день ждать когда ответят, чем за 5 минут найти и разобраться в команде используя, например AVR Instruction Set - http://www.atmel.com/atmel/acrobat/doc0856.pdf.
тем более что даже в инет выходить не надо - отличнейший хелп по всем командам встроен в AVR Studio!

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

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


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

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


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

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


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

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


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