Ну и сделайте пол-секунды,зачем два прерываниямк у меня tn2313а , а прерывание T1 compA дает секундные импульсы для часов.
Ассемблер (ASM) для AVR в вопросах и ответах
- Реклама
- Сообщения: 882
- Зарегистрирован: Ср фев 22, 2012 01:25:21
Чтобы не было каких то крякозябров, нужно перед копированием из студии, переключиться на русскую раскладку..... всего то......teist писал(а):и еще вопрос : в студии у меня нормальные комменты а тут крякозябры какие то?
Спасибо всем кто откликнулся!
Наверное придется оставить только два прерывания
и переключать раскладку
Наверное придется оставить только два прерывания
и переключать раскладку
teist, в догонку, посмотрите вот эту тему, пара страниц всего, будет полезно.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
- Сообщения: 162
- Зарегистрирован: Вс дек 09, 2012 12:14:44
Простенькая задача: нажимаем на кнопку происходит прерывание, обработчик которого увеличивает значение в регистре на единичку. Какое прерывание подойдет? INT0, INT1? я так понимаю прерывание будет когда на ноге появится сигнал? Помогите разобраться пожалйста
- Реклама
Любое, какое угодно, разницы нет.1essor1 писал(а):Какое прерывание подойдет? INT0, INT1?
В данном случае сигнал это:1essor1 писал(а):я так понимаю прерывание будет когда на ноге появится сигнал?
1) перепад 1-0 или 0-1
2) низкий уровень (0).
Зависит от настройки регистра.
- Сообщения: 162
- Зарегистрирован: Вс дек 09, 2012 12:14:44
Допустим возьму я INT0 - ему соответсвует 16ая нога (PD2). я настраиваю её вывод, устанавливаю лог единицу на выходе. Затем подключаю кнопку к земле и к ноге. Нажимаем на кнопку - на ноге-0. И происходит прерывание? все верно?Engineer_Keen писал(а): В данном случае сигнал это:
1) перепад 1-0 или 0-1
2) низкий уровень (0).
Зависит от настройки регистра.
И до кучи сгорает контроллер. А теперь подумайте, почему?
Подсказка тут
Подсказка тут
А зачем для банального подсчета импульсов гонять INTn?
Не проще ли подать сигнал на счетный вход таймера1 и просто получать готовый результат?

Не проще ли подать сигнал на счетный вход таймера1 и просто получать готовый результат?
- Сообщения: 162
- Зарегистрирован: Вс дек 09, 2012 12:14:44
Пардон, пардон) Действительно, чего это я) Нужно ведь настроить на вход с Pullup, верно? И все заработает?ploop писал(а):И до кучи сгорает контроллер. А теперь подумайте, почему?
Подсказка тут
Подскажи пожалуйста начинающему, как это дело называется и с чем его едят. Просто тьма тьмушая аббривеатур, а каждая состоит еще из нескольких - просто голова кругом идетBOB51 писал(а):А зачем для банального подсчета импульсов гонять INTn?
Не проще ли подать сигнал на счетный вход таймера1 и просто получать готовый результат?
Теоретически. На практике словите десяток-другой (а то и сотню) прерыванийНужно ведь настроить на вход с Pullup, верно? И все заработает?
Надо обработать дребезг контактов кнопки. Или программно, или на схеме, поставив RC-цепочку и триггер Шмитта.
Таймер можно настроить так, чтобы он считал не импульсы тактового генератора, а импульсы, которые будут на определённой ноге. Сколько импульсов пришло - такое число и будет в таймере. Всё это будет делаться автоматически железом, а контроллер в этот момент может чем-нибудь другим заниматься.Подскажи пожалуйста начинающему, как это дело называется и с чем его едят.
- Сообщения: 162
- Зарегистрирован: Вс дек 09, 2012 12:14:44
Про програмные методы читал, кое-где в примеры пытался вникнуть. А аппаратные? Можно поподробнее? Я был бы безмерно счастлив если б объяснению сопуствовала небольшая схемка какого-нибудь готового решенияploop писал(а): Теоретически. На практике словите десяток-другой (а то и сотню) прерываний
Надо обработать дребезг контактов кнопки. Или программно, или на схеме, поставив RC-цепочку и триггер Шмитта.
Таймер можно настроить так, чтобы он считал не импульсы тактового генератора, а импульсы, которые будут на определённой ноге. Сколько импульсов пришло - такое число и будет в таймере. Всё это будет делаться автоматически железом, а контроллер в этот момент может чем-нибудь другим заниматься.
- Сообщения: 19
- Зарегистрирован: Пт янв 18, 2013 00:51:00
Всем доброго времени суток!
Для начала хочу сказать большое спасибо Коту за метриаллы. Очень помогли с нуля разобраться в ассемблере и микроконтроллерах 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
Для начала хочу сказать большое спасибо Коту за метриаллы. Очень помогли с нуля разобраться в ассемблере и микроконтроллерах 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
Самое простое и надежное из аппаратных решений - одновибратор. Схем гугл подскажет навалом!
Та что там объяснять? Открываете даташит на контроллер, смотрите, какой таймер может тактироваться от внешней цепи и как его настроить. Все контроллеры разные (даже одного семейства), названия таймеров - разные, биты конфигурации тоже.А аппаратные? Можно поподробнее? Я был бы безмерно счастлив если б объяснению сопуствовала небольшая схемка какого-нибудь готового решения
Перед сменой столбца погаси разряды путем заполнения регистра 0-ми или его отключением.При выводе появляется засветка светодиодов (очень тусклая засветка) которые должны загореться в следующем столбце.
И чего все так сдвиговые регистры с 8-й мегой любят?
Неужели линий стандартных портов для матрицы 8*8 у той же atmega8 нехватает?
Да и дотошное изучение аппаратных средств МК по даташиту для ассемблериста - основа работы - это не Си, тем более для МК с громадным набором аппаратных модулей и их конфигураций.
Плюс - все имеющиеся листы обнаруженных ошибок, новые редакции даташита (вместе со старыми - хрен знает какого выпуска МК в лапы попал) и рекомендации по применению с сайта производителя периодически скачивать и в рабочий конспектик складывать.
Затем распечаточку оных со своими замечаниями на полочке держать.

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


