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

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

Сообщение Engineer_Keen »

Так я ж говорю, крайний случай :) Ну и через макросы так перепрыгивать конечно не стоит, можно и промахнуться :kill:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

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

Сообщение ploop »

Я тупо по названиям подпрограмм:

Код: Выделить всё

print:
  pr01:
  pr02:
  pr03 ...
ret
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Аналогично.
Первая часть по названию подпрограммы, вторая или число или по функциональному назначению (_LOOP, _WAIT, _RET, _POS, _NEG и т.д.)
Реклама
Эиком - электронные компоненты и радиодетали
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

:))
+1
внутри п/п пара букаф+цифирьки
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 33
Зарегистрирован: Чт янв 27, 2011 05:43:01
Откуда: СНГ

Сообщение dave_elektrik »

dave_elektrik писал(а): brne PC +2, иногда встречал +4 или +7.
В какой системе счисления написаны цифры (+2, +4, или +7)?
Вопрос о правильности оформления.
Как будет правильней? -
PC+0x0007 или
РС+7
[size=85]Я знаю немного, но то, что знаю, — знаю в совершенстве.[/size]
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

А без разницы. Хоть +7, хоть +0x07, можно и +0b00000111
Всё это константы.
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

здесь цифирки написаны в 10-й системе, но в принципе абсолютно без разницы.
главное правильно вычислить число шагов
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

GP1 писал(а):здесь цифирки написаны в 10-й системе, но в принципе абсолютно без разницы.
главное правильно вычислить число шагов
кручу верчу запутать хочу :) всё равно микроконтроллер только один вид представления понимает! там где единицы и нолики, но для нашего с вами удобства компилятор переводит всё в правильную форму представления.
В поисках истины человек развивается.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Думаю, что из нашей неправильной формы, десятичной, он переводит в правильную, свою. :)
Docendo discimus
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 111
Зарегистрирован: Вт окт 05, 2010 08:11:41
Откуда: г. Петрозаводск

Сообщение ciph »

Можно вклиниться со своей проблемой? Хочу сам написать программу для вольтметра на asm. Мограть светодиодиками по вращению переменного резистора получилось, а вот как вывести на индикаторы-проблема. Есть ли у кого пример исходника на asm?
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

вечером дома гляну.

зы посмотри атмеловский апноут avr204 я им пользуюсь для подготовки данных для индикатора.

зыы п/п вызывается из прерывания таймера (5мс) может отображать до 8 разрядов.
Вложения
s16_dsp.rar
(1.19 КБ) 150 скачиваний
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Родился
Сообщения: 3
Зарегистрирован: Вс янв 01, 2012 20:39:42

Сообщение nickallass »

Здравствуйте. С Новым Годом :beer:
Пытаюсь освоить микроконтроллеры и написать свою первую программу для Atmega16. Основная часть программы вроде заработала нормально и в отладчике и в Протеусе, но суть не в этом. А вот 16-ти битный таймер и прерывания никак победить не могу :( Таймер в моём случае предполагается использовать для формирования прерывания раз в секунду, по которому микроконтроллер должен начинать выполнять программу с начала. Решил для этой цели использовать прерывание по переполнению таймера-счетчика 1(TIMER1 OVF). Проблема заключается в том, что в отладчике при переполнении таймера микроконтроллер переходит не к обработке прерывания по метке "TIMER1_OVF:", а перескакивает на строчку "ldi r16,0b11111111" в программе, т.е. получается замкнутый цикл :cry: Подскажите пожалуйста что я делаю не так?
Для написания и отладки программы использую 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
BVS
Потрогал лапой паяльник
Сообщения: 336
Зарегистрирован: Пн май 23, 2011 18:27:41

Сообщение BVS »

таблица прерываний не верная

rjmp на jmp поменяйте
Родился
Сообщения: 3
Зарегистрирован: Вс янв 01, 2012 20:39:42

Сообщение nickallass »

BVS писал(а):таблица прерываний не верная

rjmp на jmp поменяйте
Спасибо огромное, заработало :))

Получается, что в статье Таймеры и каунтеры. Бегущий огонек v2.0, которая в обучалке, тоже ошибка :?
BVS
Потрогал лапой паяльник
Сообщения: 336
Зарегистрирован: Пн май 23, 2011 18:27:41

Сообщение BVS »

nickallass писал(а):
BVS писал(а):таблица прерываний не верная

rjmp на jmp поменяйте
Спасибо огромное, заработало :))

Получается, что в статье Таймеры и каунтеры. Бегущий огонек v2.0, которая в обучалке, тоже ошибка :?
нет там ошибки!!!
там таблица at90s2313
МК АВР у которых больше 8 кБайт флеша таблица разбита на два слова 4 байта под JMP
удостоверьтесь в документации к вашему МК
Встал на лапы
Аватара пользователя
Сообщения: 111
Зарегистрирован: Вт окт 05, 2010 08:11:41
Откуда: г. Петрозаводск

Сообщение ciph »

GP1 писал(а):вечером дома гляну...
Спасибо, бум разбираться...
Встал на лапы
Аватара пользователя
Сообщения: 111
Зарегистрирован: Вт окт 05, 2010 08:11:41
Откуда: г. Петрозаводск

Сообщение ciph »

Подскажите, как инициализировать 2 и больше каналов ацп?
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город

Сообщение Мастер Ломастер »

ciph писал(а):Подскажите, как инициализировать 2 и больше каналов ацп?
работа с разными каналами ведется по очереди: сначала с одним, затем с другим. настройка всех каналов совершенно идентична
битва с дураками проиграна, победители торжествуют. слава победителям!
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 111
Зарегистрирован: Вт окт 05, 2010 08:11:41
Откуда: г. Петрозаводск

Сообщение ciph »

хм, допустим инициализируем ацп, выставляем биты на 1-й канал. Вызывается прерывание, данные с 1-го канала очучаются в ADCL, ADCH и выводятся на индикатор. Как быть со вторым каналом, что бы данные попали уже на другой индикатор? делаю вольтамперметр, вот и заморачиваюсь
Ответить

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