Ассемблер (ASM) для AVR в вопросах и ответах
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Нифига себе

[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ух ты, надо попробовать...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Блин, РАБОТАЕТ! Это же еще проще...
- nictrace
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вс янв 11, 2009 09:29:08
- Откуда: Ярославль
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
такой вопросик: вот посмортел я AVR200 функции умножения-деления, а в мегах аппаратное умножение... Как в них делить? Так же, или есть способ через умножитель?
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева!
LM317 - атцтой, LM2576ADJ - форева!
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Есть способ, где используется аппаратное умножение. Наталкивался на него, кажется, в книге Ревича ("Практическое программирование МК на ассемблере"), но внимания не заострял. Попробуйте найти её и раздел там - "Арифметические операции"
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Господа, еще возникли вопросы (всё та же мега48).
Можно ли инициировать прерывание по входу PCINT5? Желательно вообще, по изменению его состояния.
В даташите что-то сказано про регистр PCMSK0, там вроде включаются. Но в векторах, разумеется, этих перываний нет. Или я что-то не так понял?
Можно ли инициировать прерывание по входу PCINT5? Желательно вообще, по изменению его состояния.
В даташите что-то сказано про регистр PCMSK0, там вроде включаются. Но в векторах, разумеется, этих перываний нет. Или я что-то не так понял?
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Бит 0 (PCIE0) регистра PCICR вкл/выкл прерывания PCINT0...7, биты PCMSK0 устанавливают маску. Вектор, общий для всех прерываний PCINT0...7 находится по адресу 0x003 - PCINT0. Прерывание возникает при изменении лог. уровня (не настраивается на фронт или уровень как INT0, INT1).
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ясно, спасибо. Это то, что нужно.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Вот еще момент, вызывающий сомнение:
Один вывод настроен на ВХОД, и имеет подтяжку снаружи к питанию. При инициализации режима мне нужно настроить его на ВЫХОД, включив высокий уровень.
Если сделать как обычно: DDR->1, затем PORT->1, не проскочит ли между этими командами "0" на порту, тем самым сформировав короткий импульс на выходе? Это было бы убийством...
Или правильней сделать PORT->1 (включится внутренняя подтяжка, не помешает), затем DDR->1?
Короче нужно из Z-состояния перевести в "1", ни в коем случае не придавив к земле.
Один вывод настроен на ВХОД, и имеет подтяжку снаружи к питанию. При инициализации режима мне нужно настроить его на ВЫХОД, включив высокий уровень.
Если сделать как обычно: DDR->1, затем PORT->1, не проскочит ли между этими командами "0" на порту, тем самым сформировав короткий импульс на выходе? Это было бы убийством...
Или правильней сделать PORT->1 (включится внутренняя подтяжка, не помешает), затем DDR->1?
Короче нужно из Z-состояния перевести в "1", ни в коем случае не придавив к земле.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
ploop писал(а):Или правильней сделать PORT->1 (включится внутренняя подтяжка, не помешает), затем DDR->1?
Да, думаю так. Не 1-wire случайно?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Нет, это RESET к другому контроллеру. В свете некоторых замечаний в даташите (где обычно они косяки пишут) было, правда не помню для какого именно МК, что короткий импульс на RESET способен залочить камень. Очень не хотелось бы...
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
ploop писал(а):Нет, это RESET к другому контроллеру. В свете некоторых замечаний в даташите (где обычно они косяки пишут) было, правда не помню для какого именно МК, что короткий импульс на RESET способен залочить камень. Очень не хотелось бы...
Дык, если вам только сброс организовать, оставье порт на вход. А для ресета просто меняйте направление на выход (в порту пусть остаётся ноль).
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Мля, точно... чё мудрить то...
ЗЫ: передохнуть надо
ЗЫ: передохнуть надо
- nictrace
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вс янв 11, 2009 09:29:08
- Откуда: Ярославль
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
попробовал сделать деление на Си, потом поглядел дизассемблером. Не, никак умножитель не прикрутить, winavr вставляет здоровенную процедуру...
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева!
LM317 - атцтой, LM2576ADJ - форева!
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Нашел ща ту книгу, про которую говорил.
Да, там есть пример использования аппаратного умножения для умножения многоразрядных чисел. А про деление - только хитрости, типа подгонки делителя под степень двойки (дальше деление делается обычным сдвигом). В принципе, подумав логически, и написав код не универсальный (как делает компилятор Си), а для конкретной ситуации, сама процедура очень сильно упрощается и оптимизируется по времени.
Да, там есть пример использования аппаратного умножения для умножения многоразрядных чисел. А про деление - только хитрости, типа подгонки делителя под степень двойки (дальше деление делается обычным сдвигом). В принципе, подумав логически, и написав код не универсальный (как делает компилятор Си), а для конкретной ситуации, сама процедура очень сильно упрощается и оптимизируется по времени.
- nictrace
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вс янв 11, 2009 09:29:08
- Откуда: Ярославль
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
это да, если делитель - константа. А если переменная... тогда - швах 
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева!
LM317 - атцтой, LM2576ADJ - форева!
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ну к примеру - посчитать среднее арифметическое нескольких измерений. Пусть десяти. И да, приплывём. Но если мы измерение проведём не 10, а 8 раз или 16 раз - в итоге выиграем (т.к. на эти числа будем делить). А суть-то не изменится, либо чуть больше, либо чуть меньше точность получим, но даже с большей точностью сэкономим кучу тактов и программного кода.
И таких примеров много можно придумать.
И таких примеров много можно придумать.
- nictrace
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вс янв 11, 2009 09:29:08
- Откуда: Ярославль
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
еще можно в BCD перевести - тогда делить на 10 просто 
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева!
LM317 - атцтой, LM2576ADJ - форева!
- DJ_Kiridza
- Мучитель микросхем
- Сообщения: 458
- Зарегистрирован: Пн дек 13, 2010 13:01:59
- Откуда: Украина
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Привета.
Подскажите пож-ста, как правильно описывать/оформлять на асме таблицу прерываний (для атмеги16)?
Если можно - простенький примерчик и буквально 2 слова описания к нему, или ткните носом в и-нете...
Мне то нужно всего-ничего, прерывание от таймера да от юсарта, но как оно правильно описывается на асме - чет в инете только таблици-списки всех возможных прерываний или я плохо ищу...
пасиб.
Подскажите пож-ста, как правильно описывать/оформлять на асме таблицу прерываний (для атмеги16)?
Если можно - простенький примерчик и буквально 2 слова описания к нему, или ткните носом в и-нете...
Мне то нужно всего-ничего, прерывание от таймера да от юсарта, но как оно правильно описывается на асме - чет в инете только таблици-списки всех возможных прерываний или я плохо ищу...
пасиб.
мысли мысли штош вы вйотесь
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
Re: Ассемблер (ASM) для AVR в вопросах и ответах
А с даташита скопировать не судьба?