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

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Аватара пользователя
Сообщения: 623
Зарегистрирован: Чт июн 11, 2009 07:25:24
Откуда: СПб

Сообщение ЮТ »

nopal писал(а):Debug - Start debbuging. (или Ctrl+shift+alt+f5). и потом каждый шаг - f11.
Вот тут

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

dec Temp1
brne Cycle
Желтая стрелочка начинает ходить вверх вниз и всё.... :dont_know:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Она так будет ходить 255 раз. :)))
Отмечаем следующую строку после цикла задержки и жмём на Toggle Breakpoint.
На против этой строки появится жирная красная точка. Потом запускаем программу клавишей F5.
Программа быстро обработает задержку и остановится на отмеченной строке. Дальше можно продолжить отладку клавишей F11
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 623
Зарегистрирован: Чт июн 11, 2009 07:25:24
Откуда: СПб

Сообщение ЮТ »

:( Все равно ходит вверх и вниз...
Родился
Сообщения: 12
Зарегистрирован: Пн мар 08, 2010 14:16:51

Сообщение nopal »

ЮТ писал(а)::( Все равно ходит вверх и вниз...
Покажи код начиная от метки cycle и до этого места.
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 623
Зарегистрирован: Чт июн 11, 2009 07:25:24
Откуда: СПб

Сообщение ЮТ »

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

;**********************************************************
Delay:
ldi Temp1,0
ldi Temp2,0

Cycle: 
dec Temp1
brne Cycle

dec Temp2
brne Cycle

dec time
brne Cycle
ret
;**********************************************************
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

А так?

Изображение
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Реклама
Родился
Сообщения: 12
Зарегистрирован: Пн мар 08, 2010 14:16:51

Сообщение nopal »

ЮТ писал(а):

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

;**********************************************************
Delay:
ldi Temp1,0
ldi Temp2,0

Cycle: 
dec Temp1
brne Cycle

dec Temp2
brne Cycle

dec time
brne Cycle
ret
;**********************************************************
если в time будет значение 0, то крутиться будет достаточно долго. Все зависит от значения которое попало в него.
судя по всему у тебя там 0. Для проверки добавь команду
ldi time,1
перед cycle, и увидишь что выйдет из цикла. А так смотри алгоритм всей программы.
Вымогатель припоя
Аватара пользователя
Сообщения: 623
Зарегистрирован: Чт июн 11, 2009 07:25:24
Откуда: СПб

Сообщение ЮТ »

:( всё равно скачет...
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Млин, ну как ещё объяснить?
В AVR Studio есть несколько режимов отладки кода.
1. Вручную.(Ctrl+Shift+Alt+F5)...(F11...) - То есть запускаем отладку и делаем каждый шаг вручную клавишей F11.
2. Autostep - это когда сам симулятор выполняет шаги, но медленно, так, чтобы программист видел. Запускается при запущенной отладке сочетанием клавиш Alt+F5.
3. Запуск программы в реальном времени. То есть мы не видим, как она выполняется, но можем остановить её точками останова(Breakpoint). После остановки мы можем продолжить отладку вручную. Запускается этот режим при запущеной отладке клавишей F5.
Что нам надо:
Запускаем отладку, сочетанием клавиш Ctrl+Shift+Alt+F5 или так, как ты её запускаешь. Без разницы. Далее прыгаем по нашей программе вручную (F11) чтобы видеть, как выполняется программа. Как дойдём до задержки, то отметим следующую, после всего цикла задержки, строку. На эту строку ставим точку останова, клавишей F9.(Просто кликаем на начало этой строчки, установив на неё курсор редактора и нажимаем F9) Напротив строчки появится жирная красная точка. После этого запускаем симуляцию в реальном времени, клавишей F5.
Симулятор отработает эту задержку и встанет на паузу на отмеченной строке, как только дойдёт до неё. Дальше можно продолжить вручную отрабатывать. Как дойдём до задержки, так снова запустим в реальном времени, чтобы быстро отработать эту задержку.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

DX168B писал(а):Млин, ну как ещё объяснить?
... DX168B каждое хорошее дело наказуемо :) ... если человек не находит времени, чтобы почитать пару страниц о работе с отладчиком, то "учить" его - занятие сомнительное ИМХО...
Вымогатель припоя
Аватара пользователя
Сообщения: 623
Зарегистрирован: Чт июн 11, 2009 07:25:24
Откуда: СПб

Сообщение ЮТ »

Проскочил он это. А дальше что делать? :(
DX168B, Спасибо.
ChipKiller, Рано или поздно такие люди как ты всегда появляются и начинают язвить...
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

Рано или поздно такие люди как ты всегда появляются и начинают язвить...
... если этого иногда не делать - форум превращается в ФЛУДИЛЬНЮ.
Вымогатель припоя
Аватара пользователя
Сообщения: 623
Зарегистрирован: Чт июн 11, 2009 07:25:24
Откуда: СПб

Сообщение ЮТ »

И всё же, как сделать так чтобы после проигрывания мелодии на ноге был 0? :dont_know:
Просто изучать что либо сейчас некогда, нужно сделать дедушке звонок. А тут учеба ещё, ЕГЭ и прочее :kill:
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

ChipKiller писал(а):
DX168B писал(а):Млин, ну как ещё объяснить?
... DX168B каждое хорошее дело наказуемо :) ... если человек не находит времени, чтобы почитать пару страниц о работе с отладчиком, то "учить" его - занятие сомнительное ИМХО...
Бывает и такое. :)))

ЗЫ: Я сам, без литературы разобрался со студией. Просто раньше имел дело со средами разработки программ. Да и сама студия до боли простая. Только однажды задал вопрос, как поменять частоту МК в отладчике, так как не мог нигде найти. :)
ЮТ
Добавь строчку в конце проигрывания:

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

cbi ПОРТ, НОМЕР НОГИ
Например:

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

cbi PORTB, 0 ;Установка лог. 0 на ноге PB0
cbi PORTB, 1 ;Установка лог. 0 на ноге PB1
cbi PORTB, 2 ;Установка лог. 0 на ноге PB2
cbi PORTB, 3 ;Установка лог. 0 на ноге PB3
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 623
Зарегистрирован: Чт июн 11, 2009 07:25:24
Откуда: СПб

Сообщение ЮТ »

Ок, завтра поколдую. Сегодня уже спать все легли...
Спасибо
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Решил побаловаться со стеком. :)))
Типа, возврат из подпрограммы совсем в другое выбранное место.
Спецов прошу не бить меня, пример приведён для новичков.
После выполнения подпрограммы PROG, мы возвращаемся уже не в LOOP, а опять в MAIN столько раз, сколько указано в регистре r17.

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

;----------------------------------------------------------------
.cseg
.org		  0x0000
;----------------------------------------------------------------
				ldi			r16,				RamEnd
				out			SP,				 r16
				ldi			r17,				0x04
;----------------------------------------------------------------
MAIN:		 nop
				nop
				nop
				nop
				rcall		 PROG
;----------------------------------------------------------------
LOOP:		 rjmp		  LOOP
;----------------------------------------------------------------
PROG:		 dec			r17
				brne		  WH_END
				ret
WH_END:	  pop			r16
				pop			r16
				ldi			r16,				Low(MAIN)
				push		  r16
				ldi			r16,				High(MAIN)
				push		  r16
				ret
;----------------------------------------------------------------
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 623
Зарегистрирован: Чт июн 11, 2009 07:25:24
Откуда: СПб

Сообщение ЮТ »

Подключил нормально питание, неужто в этом было дело? :? :cry: :(
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Не понял. Какое питание? В чём дело?
Программа симулируется в Студии и без МК. Что, отлаживал программу через программатор?
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 623
Зарегистрирован: Чт июн 11, 2009 07:25:24
Откуда: СПб

Сообщение ЮТ »

Прошил, подключил +5В а не +3,3. Сначала то от программатора питал...
Теперь нормально всё вроде бы. Спасибо :beer:
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Строчку добавил? Которую я дал? Или питанием всё решилось?

ЗЫ: Советую начать изучать МК, дело полезное и в хозяйстве пригодится. :)
Последний раз редактировалось DX168B Пн мар 28, 2011 12:53:05, всего редактировалось 1 раз.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Ответить

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