Страница 114 из 400
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт дек 27, 2011 08:50:20
Engineer_Keen
Так я ж говорю, крайний случай

Ну и через макросы так перепрыгивать конечно не стоит, можно и промахнуться

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт дек 27, 2011 11:23:11
Gudd-Head
Мне фантазии не хватает придумывать названия меткам

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт дек 27, 2011 11:58:18
ploop
Я тупо по названиям подпрограмм:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт дек 27, 2011 12:19:02
Engineer_Keen
Аналогично.
Первая часть по названию подпрограммы, вторая или число или по функциональному назначению (_LOOP, _WAIT, _RET, _POS, _NEG и т.д.)
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт дек 27, 2011 13:11:47
GP1
+1
внутри п/п пара букаф+цифирьки
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт дек 27, 2011 20:39:53
dave_elektrik
dave_elektrik писал(а): brne PC +2, иногда встречал +4 или +7.
В какой системе счисления написаны цифры (+2, +4, или +7)?
Вопрос о правильности оформления.
Как будет правильней? -
PC+0x0007 или
РС+7
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт дек 27, 2011 21:06:52
ploop
А без разницы. Хоть +7, хоть +0x07, можно и +0b00000111
Всё это константы.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт дек 27, 2011 21:07:44
GP1
здесь цифирки написаны в 10-й системе, но в принципе абсолютно без разницы.
главное правильно вычислить число шагов
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт дек 27, 2011 22:12:22
vitalik_1984
GP1 писал(а):здесь цифирки написаны в 10-й системе, но в принципе абсолютно без разницы.
главное правильно вычислить число шагов
кручу верчу запутать хочу

всё равно микроконтроллер только один вид представления понимает! там где единицы и нолики, но для нашего с вами удобства компилятор переводит всё в правильную форму представления.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт дек 27, 2011 22:23:26
pyzhman
Думаю, что из нашей неправильной формы, десятичной, он переводит в правильную, свою.

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср дек 28, 2011 16:08:26
ciph
Можно вклиниться со своей проблемой? Хочу сам написать программу для вольтметра на asm. Мограть светодиодиками по вращению переменного резистора получилось, а вот как вывести на индикаторы-проблема. Есть ли у кого пример исходника на asm?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср дек 28, 2011 16:19:48
GP1
вечером дома гляну.
зы посмотри атмеловский апноут avr204 я им пользуюсь для подготовки данных для индикатора.
зыы п/п вызывается из прерывания таймера (5мс) может отображать до 8 разрядов.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс янв 01, 2012 22:27:37
nickallass
Здравствуйте. С Новым Годом
Пытаюсь освоить микроконтроллеры и написать свою первую программу для Atmega16. Основная часть программы вроде заработала нормально и в отладчике и в Протеусе, но суть не в этом. А вот 16-ти битный таймер и прерывания никак победить не могу

Таймер в моём случае предполагается использовать для формирования прерывания раз в секунду, по которому микроконтроллер должен начинать выполнять программу с начала. Решил для этой цели использовать прерывание по переполнению таймера-счетчика 1(TIMER1 OVF). Проблема заключается в том, что в отладчике при переполнении таймера микроконтроллер переходит не к обработке прерывания по метке "TIMER1_OVF:", а перескакивает на строчку "ldi r16,0b11111111" в программе, т.е. получается замкнутый цикл

Подскажите пожалуйста что я делаю не так?
Для написания и отладки программы использую AVR Studio 5. Ниже сам код программы. Не обращайте внимание на значение коэффициент деления и регистра TCNT1, выставил так чтобы в отладчике долго не ждать
Код: Выделить всё
.cseg
.org 0
;Векторы прерываний
rjmp RESET
rjmp INT_0
rjmp INT_1
rjmp TIMER2_COMP
rjmp TIMER2_OVF
rjmp TIMER1_CAPT
rjmp TIMER1_COMPA
rjmp TIMER1_COMPB
rjmp TIMER1_OVF
;-------------------------
INT_0:
INT_1:
TIMER2_COMP:
TIMER2_OVF:
TIMER1_CAPT:
TIMER1_COMPA:
TIMER1_COMPB:
reti
RESET:
ldi r16,0b00000100 ;разрешение прерывания по переполнению
out TIMSK,r16 ;счетчика (TOIE1=1)
ldi r16,0b00000001 ;коэф. деления 1
out TCCR1B,r16 ;
ldi r16,0b11111111 ;записываем число, с которого таймер
out TCNT1H,r16 ;начинает отсчет
ldi r16,0b11001101 ;
out TCNT1L,r16 ;
sei
S: rjmp S ; бесконечный цикл
TIMER1_OVF:
rjmp RESET
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс янв 01, 2012 23:06:02
BVS
таблица прерываний не верная
rjmp на jmp поменяйте
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс янв 01, 2012 23:41:39
nickallass
BVS писал(а):таблица прерываний не верная
rjmp на jmp поменяйте
Спасибо огромное, заработало
Получается, что в статье
Таймеры и каунтеры. Бегущий огонек v2.0, которая в обучалке, тоже ошибка

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс янв 01, 2012 23:59:01
BVS
nickallass писал(а):BVS писал(а):таблица прерываний не верная
rjmp на jmp поменяйте
Спасибо огромное, заработало
Получается, что в статье
Таймеры и каунтеры. Бегущий огонек v2.0, которая в обучалке, тоже ошибка

нет там ошибки!!!
там таблица at90s2313
МК АВР у которых больше 8 кБайт флеша таблица разбита на два слова 4 байта под JMP
удостоверьтесь в документации к вашему МК
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пн янв 02, 2012 12:07:40
ciph
GP1 писал(а):вечером дома гляну...
Спасибо, бум разбираться...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс янв 15, 2012 16:00:42
ciph
Подскажите, как инициализировать 2 и больше каналов ацп?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс янв 15, 2012 16:06:24
Мастер Ломастер
ciph писал(а):Подскажите, как инициализировать 2 и больше каналов ацп?
работа с разными каналами ведется по очереди: сначала с одним, затем с другим. настройка всех каналов совершенно идентична
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс янв 15, 2012 16:28:19
ciph
хм, допустим инициализируем ацп, выставляем биты на 1-й канал. Вызывается прерывание, данные с 1-го канала очучаются в ADCL, ADCH и выводятся на индикатор. Как быть со вторым каналом, что бы данные попали уже на другой индикатор? делаю вольтамперметр, вот и заморачиваюсь