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

Обсуждаем контроллеры компании Atmel.
Ответить
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Сообщение ILYAUL »

мк у меня tn2313а , а прерывание T1 compA дает секундные импульсы для часов.
Ну и сделайте пол-секунды,зачем два прерывания
Реклама
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

teist писал(а):и еще вопрос : в студии у меня нормальные комменты а тут крякозябры какие то?
Чтобы не было каких то крякозябров, нужно перед копированием из студии, переключиться на русскую раскладку..... всего то......
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 61
Зарегистрирован: Пт янв 01, 2010 20:43:32
Откуда: cccp

Сообщение teist »

Спасибо всем кто откликнулся! :))
Наверное придется оставить только два прерывания :beer:
и переключать раскладку :beer:
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

teist, в догонку, посмотрите вот эту тему, пара страниц всего, будет полезно.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 162
Зарегистрирован: Вс дек 09, 2012 12:14:44

Сообщение 1essor1 »

Простенькая задача: нажимаем на кнопку происходит прерывание, обработчик которого увеличивает значение в регистре на единичку. Какое прерывание подойдет? INT0, INT1? я так понимаю прерывание будет когда на ноге появится сигнал? Помогите разобраться пожалйста
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

1essor1 писал(а):Какое прерывание подойдет? INT0, INT1?
Любое, какое угодно, разницы нет.
1essor1 писал(а):я так понимаю прерывание будет когда на ноге появится сигнал?
В данном случае сигнал это:
1) перепад 1-0 или 0-1
2) низкий уровень (0).
Зависит от настройки регистра.
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 162
Зарегистрирован: Вс дек 09, 2012 12:14:44

Сообщение 1essor1 »

Engineer_Keen писал(а): В данном случае сигнал это:
1) перепад 1-0 или 0-1
2) низкий уровень (0).
Зависит от настройки регистра.
Допустим возьму я INT0 - ему соответсвует 16ая нога (PD2). я настраиваю её вывод, устанавливаю лог единицу на выходе. Затем подключаю кнопку к земле и к ноге. Нажимаем на кнопку - на ноге-0. И происходит прерывание? все верно?
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

И до кучи сгорает контроллер. А теперь подумайте, почему?
Подсказка тут
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

А зачем для банального подсчета импульсов гонять INTn?
Не проще ли подать сигнал на счетный вход таймера1 и просто получать готовый результат?
:roll:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 162
Зарегистрирован: Вс дек 09, 2012 12:14:44

Сообщение 1essor1 »

ploop писал(а):И до кучи сгорает контроллер. А теперь подумайте, почему?
Подсказка тут
Пардон, пардон) Действительно, чего это я) Нужно ведь настроить на вход с Pullup, верно? И все заработает?
BOB51 писал(а):А зачем для банального подсчета импульсов гонять INTn?
Не проще ли подать сигнал на счетный вход таймера1 и просто получать готовый результат?
:roll:
Подскажи пожалуйста начинающему, как это дело называется и с чем его едят. Просто тьма тьмушая аббривеатур, а каждая состоит еще из нескольких - просто голова кругом идет :shock:
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Нужно ведь настроить на вход с Pullup, верно? И все заработает?
Теоретически. На практике словите десяток-другой (а то и сотню) прерываний :)
Надо обработать дребезг контактов кнопки. Или программно, или на схеме, поставив RC-цепочку и триггер Шмитта.
Подскажи пожалуйста начинающему, как это дело называется и с чем его едят.
Таймер можно настроить так, чтобы он считал не импульсы тактового генератора, а импульсы, которые будут на определённой ноге. Сколько импульсов пришло - такое число и будет в таймере. Всё это будет делаться автоматически железом, а контроллер в этот момент может чем-нибудь другим заниматься.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 162
Зарегистрирован: Вс дек 09, 2012 12:14:44

Сообщение 1essor1 »

ploop писал(а): Теоретически. На практике словите десяток-другой (а то и сотню) прерываний :)
Надо обработать дребезг контактов кнопки. Или программно, или на схеме, поставив RC-цепочку и триггер Шмитта.

Таймер можно настроить так, чтобы он считал не импульсы тактового генератора, а импульсы, которые будут на определённой ноге. Сколько импульсов пришло - такое число и будет в таймере. Всё это будет делаться автоматически железом, а контроллер в этот момент может чем-нибудь другим заниматься.
Про програмные методы читал, кое-где в примеры пытался вникнуть. А аппаратные? Можно поподробнее? Я был бы безмерно счастлив если б объяснению сопуствовала небольшая схемка какого-нибудь готового решения :))
Родился
Сообщения: 19
Зарегистрирован: Пт янв 18, 2013 00:51:00

Сообщение Antony91 »

Всем доброго времени суток!
Для начала хочу сказать большое спасибо Коту за метриаллы. Очень помогли с нуля разобраться в ассемблере и микроконтроллерах AVR.
Но, дорогой Кот, столкнулся с проблемой. Собрана светодиодная матрица на МК ATmega8, на одном из портов сидят строки чесерз транзисторные ключи, на другом порту сдвигающий регистр 74HC595 на выходе которого также транзисторные ключи. При выводе появляется засветка светодиодов (очень тусклая засветка) которые должны загореться в следующем столбце. То есть вывожу чтобы загорелся второй светодиод в строке, а очень тускло горит идущий перед ним. В чем может быть проблема?
ASM-код на вывод столбца:
lds Temp1,A+2 (тут данные вида 0b01010101)
sbi ShiftRegPort,SH_CP
out PortD,Temp1
rcall Delay1
out PortD,temp4 (тут как бы 0b00000000 для выключения столбца)
cbi ShiftRegPort,SH_CP
rcall Delay2
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

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

Сообщение ploop »

А аппаратные? Можно поподробнее? Я был бы безмерно счастлив если б объяснению сопуствовала небольшая схемка какого-нибудь готового решения
Та что там объяснять? Открываете даташит на контроллер, смотрите, какой таймер может тактироваться от внешней цепи и как его настроить. Все контроллеры разные (даже одного семейства), названия таймеров - разные, биты конфигурации тоже.
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

При выводе появляется засветка светодиодов (очень тусклая засветка) которые должны загореться в следующем столбце.
Перед сменой столбца погаси разряды путем заполнения регистра 0-ми или его отключением.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

И чего все так сдвиговые регистры с 8-й мегой любят?
Неужели линий стандартных портов для матрицы 8*8 у той же atmega8 нехватает?
Да и дотошное изучение аппаратных средств МК по даташиту для ассемблериста - основа работы - это не Си, тем более для МК с громадным набором аппаратных модулей и их конфигураций.
Плюс - все имеющиеся листы обнаруженных ошибок, новые редакции даташита (вместе со старыми - хрен знает какого выпуска МК в лапы попал) и рекомендации по применению с сайта производителя периодически скачивать и в рабочий конспектик складывать.
Затем распечаточку оных со своими замечаниями на полочке держать.
:beer:
Родился
Сообщения: 19
Зарегистрирован: Пт янв 18, 2013 00:51:00

Сообщение Antony91 »

Alexeyslav писал(а):Перед сменой столбца погаси разряды путем заполнения регистра 0-ми или его отключением.
У меня приведенные коды идут последовательно. После Delay1 пробовал clr temp1 и вывод нулевого столбца. Не ушла засветка :-(
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Так гашение не по столбцам, а по строкам на время смены столбца.
гасить строку
задать новый код в сдвиговом регистре
включить следующую строку

Только вот, судя по указанной элементной базе, строка должна быть вертикальной :)
Телепатия - проблемная штука, полож схемку - мож получиш намяк, как решить 8)
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Нет разницы гасить строку или столбцы - главное чтобы на момент смены состояния светодиоды не могли зажечься.
Контактная информация:
Ответить

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