AVR studio в вопросах и ответах
Вот.
p.s. хотел пропустить задержку 4 секунды, но появилась ошибка AVR Simulator: Invalid opcode 0xffff at address 0x000200, что это может быть?
Да и вообще я так понял при команде run на точку останова программа сразу перейдет при определенном количестве операторов? Пропуская таким образом некоторые мелкие задержки приходилось run запускать несколько раз. Вообще можно бы закоментировать задержку, но не в моем случае, мне надо проверить как работает таймер. В реальном устройстве кое-что не срабатывает.
p.s. хотел пропустить задержку 4 секунды, но появилась ошибка AVR Simulator: Invalid opcode 0xffff at address 0x000200, что это может быть?
Да и вообще я так понял при команде run на точку останова программа сразу перейдет при определенном количестве операторов? Пропуская таким образом некоторые мелкие задержки приходилось run запускать несколько раз. Вообще можно бы закоментировать задержку, но не в моем случае, мне надо проверить как работает таймер. В реальном устройстве кое-что не срабатывает.
- Вложения
-
- prog4.asm
- (11.11 КБ) 513 скачиваний
......aлкоголь расширяет сосуды, курение их сужает, а сдают почему-то нервы......
Вопрос снят, ошибка была наиглупейшая. Хотя не совсем снят. Ошибка была в том, что иногда надо было выходить из обработчика прерываний по метке. Сейчас код такой:
А раньше метка Konec1 была на против команды reti, т.е. восстановление sreg прописал, а использовать забыл
Но после выхода из обработчика флаг z тоже установлен, а не должен быть. Почему?
Но с программой так и не научился работать. В studio в окне programm counter стоит число (1С) - адрес следующей команды в основной программе. А в stack pointer вершина стека (или то что там сейчас лежит сверху?) - число DF. Перейдя в обработчик прерывания в содержимое PC естественно меняется, а содержимое SP равно DD...хм, значит так можно проследить стековую память, на сколько она заполена и по какому адресу будет хранится следующий байт в стеке, но не его содержимое. А мне надо найти в стеке именно 1С, т.е. адрес куда надо вернуться.
При помощи меню View тоже не понял как смотреть.
Код: Выделить всё
m7: rcall clear;
rjmp konec1
............
............
...........
konec1: pop temp3
out SREG,temp3
pop temp3
reti
А раньше метка Konec1 была на против команды reti, т.е. восстановление sreg прописал, а использовать забыл
Но с программой так и не научился работать. В studio в окне programm counter стоит число (1С) - адрес следующей команды в основной программе. А в stack pointer вершина стека (или то что там сейчас лежит сверху?) - число DF. Перейдя в обработчик прерывания в содержимое PC естественно меняется, а содержимое SP равно DD...хм, значит так можно проследить стековую память, на сколько она заполена и по какому адресу будет хранится следующий байт в стеке, но не его содержимое. А мне надо найти в стеке именно 1С, т.е. адрес куда надо вернуться.
При помощи меню View тоже не понял как смотреть.
......aлкоголь расширяет сосуды, курение их сужает, а сдают почему-то нервы......
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Внимательнее надо со стеком работать. В пределах обработки число загрузок в стек должно быть равно числу выгрузок из него. Тогда гарантирован выход на правильную область программы. Читать программно, на мой взгляд - бестолку. В коде 2 команды pop, а где push'ы?
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
На днях мой AVR STUDIO 4 начал непонятно глючить. При попытке открыть HEX-файл или просто нажать кнопку "открыть файл", выдается сообщение ERROR 196 , и программа либо закрывается, либо входит в полный ступор. Переустановки программы ничего не дали, вирусов нет. Кто нибудь сталкивался с такой проблемой?
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
создаете проект для конкретного контроллера. добавляете в проект все файлы, которые написаны в исходнике (.asm) в проект. создаете файл с названием проекта, копируете туда свой файл (.asm). нажимаете F7. в папке с проектом появится файл .hexThrasher писал(а):Здравствуйте! Имеется прога AVRStudio 4 как с помощью неё перевести код из asm в hex???
Заранее извиняюсь за глупый вопрос-но никак не могу разобраться![]()
![]()
Ставим плюсы: )
начал осваивать атмеловские контроллеры и авр студию, раньше писал для пиков в мплабе, так вот что-то не могу понять, чего не хватает - в симуляторе не срабатывает прерывание по переполнению таймера 0, хотя флаг переполнения загорается. подскажите, что не так?
может, где-то надо глобально разрешить прерывания (вроде GIE в пиках), но что-то в доках не нашел этого...
Код: Выделить всё
.include "m48def.inc"
.org 0
rjmp _start
.org 0x10
rjmp _T0OF_int
_start:
LDi r16,$2
out TCCR0B,r16 ;çàïóñê òàéìåðà, f= clk/8
ldi r16,$1
sts TIMSK0,r16 ;ðàçðåøèòü ïðåðûâàíèå ïî ïåðåïîëíåíèþ
_mainloop:
rjmp _mainloop
_T0OF_int:
nop
reti
может, где-то надо глобально разрешить прерывания (вроде GIE в пиках), но что-то в доках не нашел этого...
Последний раз редактировалось stas00n Сб фев 27, 2010 13:50:44, всего редактировалось 1 раз.
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
При попытке что либо открыть, программа выдает ошибку 196 и ступорит, или не закрывается больше. Приходится комп перезагружать.
Что делать? как от этого избавиться? мне надо просто через студию сегодня же зашить файл в МК avr isp mk2, а этот программатор поддерживает только одна программа - студия... помогите пожалуйста
Что делать? как от этого избавиться? мне надо просто через студию сегодня же зашить файл в МК avr isp mk2, а этот программатор поддерживает только одна программа - студия... помогите пожалуйста
Не умеешь - не берись, но не взявшись не научишься...