Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Gudd-Head »

Нифига себе :shock: :)))
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

Ух ты, надо попробовать...
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

Блин, РАБОТАЕТ! Это же еще проще...
Аватара пользователя
nictrace
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вс янв 11, 2009 09:29:08
Откуда: Ярославль
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение nictrace »

такой вопросик: вот посмортел я AVR200 функции умножения-деления, а в мегах аппаратное умножение... Как в них делить? Так же, или есть способ через умножитель?
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева! :)
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

Есть способ, где используется аппаратное умножение. Наталкивался на него, кажется, в книге Ревича ("Практическое программирование МК на ассемблере"), но внимания не заострял. Попробуйте найти её и раздел там - "Арифметические операции"
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

Господа, еще возникли вопросы (всё та же мега48).
Можно ли инициировать прерывание по входу PCINT5? Желательно вообще, по изменению его состояния.
В даташите что-то сказано про регистр PCMSK0, там вроде включаются. Но в векторах, разумеется, этих перываний нет. Или я что-то не так понял?
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Engineer_Keen »

Бит 0 (PCIE0) регистра PCICR вкл/выкл прерывания PCINT0...7, биты PCMSK0 устанавливают маску. Вектор, общий для всех прерываний PCINT0...7 находится по адресу 0x003 - PCINT0. Прерывание возникает при изменении лог. уровня (не настраивается на фронт или уровень как INT0, INT1).
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

Ясно, спасибо. Это то, что нужно.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

Вот еще момент, вызывающий сомнение:
Один вывод настроен на ВХОД, и имеет подтяжку снаружи к питанию. При инициализации режима мне нужно настроить его на ВЫХОД, включив высокий уровень.
Если сделать как обычно: DDR->1, затем PORT->1, не проскочит ли между этими командами "0" на порту, тем самым сформировав короткий импульс на выходе? Это было бы убийством...

Или правильней сделать PORT->1 (включится внутренняя подтяжка, не помешает), затем DDR->1?

Короче нужно из Z-состояния перевести в "1", ни в коем случае не придавив к земле.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Gudd-Head »

ploop писал(а):Или правильней сделать PORT->1 (включится внутренняя подтяжка, не помешает), затем DDR->1?

Да, думаю так. Не 1-wire случайно? :)
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

Нет, это RESET к другому контроллеру. В свете некоторых замечаний в даташите (где обычно они косяки пишут) было, правда не помню для какого именно МК, что короткий импульс на RESET способен залочить камень. Очень не хотелось бы...
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение Gudd-Head »

ploop писал(а):Нет, это RESET к другому контроллеру. В свете некоторых замечаний в даташите (где обычно они косяки пишут) было, правда не помню для какого именно МК, что короткий импульс на RESET способен залочить камень. Очень не хотелось бы...

Дык, если вам только сброс организовать, оставье порт на вход. А для ресета просто меняйте направление на выход (в порту пусть остаётся ноль). :)
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

Мля, точно... чё мудрить то...


ЗЫ: передохнуть надо :)
Аватара пользователя
nictrace
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вс янв 11, 2009 09:29:08
Откуда: Ярославль
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение nictrace »

попробовал сделать деление на Си, потом поглядел дизассемблером. Не, никак умножитель не прикрутить, winavr вставляет здоровенную процедуру...
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева! :)
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

Нашел ща ту книгу, про которую говорил.
Да, там есть пример использования аппаратного умножения для умножения многоразрядных чисел. А про деление - только хитрости, типа подгонки делителя под степень двойки (дальше деление делается обычным сдвигом). В принципе, подумав логически, и написав код не универсальный (как делает компилятор Си), а для конкретной ситуации, сама процедура очень сильно упрощается и оптимизируется по времени.
Аватара пользователя
nictrace
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вс янв 11, 2009 09:29:08
Откуда: Ярославль
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение nictrace »

это да, если делитель - константа. А если переменная... тогда - швах :(
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева! :)
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

Ну к примеру - посчитать среднее арифметическое нескольких измерений. Пусть десяти. И да, приплывём. Но если мы измерение проведём не 10, а 8 раз или 16 раз - в итоге выиграем (т.к. на эти числа будем делить). А суть-то не изменится, либо чуть больше, либо чуть меньше точность получим, но даже с большей точностью сэкономим кучу тактов и программного кода.

И таких примеров много можно придумать.
Аватара пользователя
nictrace
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вс янв 11, 2009 09:29:08
Откуда: Ярославль
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение nictrace »

еще можно в BCD перевести - тогда делить на 10 просто :)
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева! :)
Аватара пользователя
DJ_Kiridza
Мучитель микросхем
Сообщения: 458
Зарегистрирован: Пн дек 13, 2010 13:01:59
Откуда: Украина
Контактная информация:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение DJ_Kiridza »

Привета.
Подскажите пож-ста, как правильно описывать/оформлять на асме таблицу прерываний (для атмеги16)?
Если можно - простенький примерчик и буквально 2 слова описания к нему, или ткните носом в и-нете...
Мне то нужно всего-ничего, прерывание от таймера да от юсарта, но как оно правильно описывается на асме - чет в инете только таблици-списки всех возможных прерываний или я плохо ищу...
пасиб.
мысли мысли штош вы вйотесь
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сообщение ploop »

А с даташита скопировать не судьба?
Ответить

Вернуться в «AVR»