AVR studio в вопросах и ответах
Re: AVR studio 4 в вопросах и ответах
не могу найти- как включить нумерацию строк в редакторе AVRstudio?
-
codenamehawk
- Вымогатель припоя
- Сообщения: 528
- Зарегистрирован: Вт фев 09, 2010 17:52:26
Re: AVR studio 4 в вопросах и ответах
yokimbe писал(а):а подскажите кто нибудь.. можно ли в Avr studio сделать нумерацию строк (ато достает иногда копировать всю писанину в notepad ++ и искать на что ругается компилятор)
В списке ошибок, нажмите на нужную вам ошибку и она, в верхнем окне будет выделена.
С WinAVR идет Programmers Notepad, рекомендую.
Там удобней писать код.
н.п. вместо того, чтобы вставить объявленную ранее переменную, достаточно написать пару букв и CRTL+Пробел
если освоите Makefile то и компиляцию будете там сразу делать и ошибки поправлять.
- Necroteeth
- Потрогал лапой паяльник
- Сообщения: 362
- Зарегистрирован: Вс окт 10, 2010 17:43:48
- Откуда: Воронеж
Re: AVR studio 4 в вопросах и ответах
точно не знаю, сюда вопрос постить или все-таки в мелкие вопросы...
в общем, вопрос следующий: при симуляции в AVR Studio моей программы не меняется значение TCNT0 в окошке I/O View, а указатель выполнения программы бегает только от RJMP Reset до этого самого обработчкика по метке Reset. все, что по листингу ниже обработчика прерываний Reset не выполняется. подскажите, пожалуйста, где ошибка - в коде или в настройках симуляции
в общем, вопрос следующий: при симуляции в AVR Studio моей программы не меняется значение TCNT0 в окошке I/O View, а указатель выполнения программы бегает только от RJMP Reset до этого самого обработчкика по метке Reset. все, что по листингу ниже обработчика прерываний Reset не выполняется. подскажите, пожалуйста, где ошибка - в коде или в настройках симуляции
- Вложения
-
- First.asm
- (3.08 КБ) 561 скачивание
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
Ну и напутано у вас с прерываниями.
Что должно выполниться при совпадении значений TCNT0 и OCR0 ?
Что должно выполниться при совпадении значений TCNT0 и OCR0 ?
I am DX168B and this is my favourite forum on internet!
- Necroteeth
- Потрогал лапой паяльник
- Сообщения: 362
- Зарегистрирован: Вс окт 10, 2010 17:43:48
- Откуда: Воронеж
Re: AVR studio 4 в вопросах и ответах
DX168B писал(а):Ну и напутано у вас с прерываниями.![]()
Что должно выполниться при совпадении значений TCNT0 и OCR0 ?
прерывание Timer_tick
а что напутано-то? объясните нерадивому новичку...
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
Сейчас отправлю Вам исправленный исходник и Вы увидите свою ошибку. 
I am DX168B and this is my favourite forum on internet!
- Necroteeth
- Потрогал лапой паяльник
- Сообщения: 362
- Зарегистрирован: Вс окт 10, 2010 17:43:48
- Откуда: Воронеж
Re: AVR studio 4 в вопросах и ответах
DX168B писал(а):Сейчас отправлю Вам исправленный исходник и Вы увидите свою ошибку.
почему-то уже чувствую, как меня носом окунают в что-то неприглядное...
но буду крайне признателен за помощь!
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
Вот весь проект
Да, забыл. Добавь инициализацию стека и больше не забывай про неё.
Там, где метка RESET, перед настройкой портов. То есть получается, что это должно производиться первым в программе.
Да, забыл. Добавь инициализацию стека и больше не забывай про неё.
Там, где метка RESET, перед настройкой портов. То есть получается, что это должно производиться первым в программе.
Код: Выделить всё
RESET: ldi Data,Low(ramend)
out SPL, Data
ldi Data, High(ramend)
out SPH, Data
I am DX168B and this is my favourite forum on internet!
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AVR studio 4 в вопросах и ответах
в основном цикле(начинающемся с метки reset) вместо reti поставьте rjmp Inf.
PS. Опоздал
кстати про стек правильно заметили - не забываем!
PS. Опоздал
Ставим плюсы: )
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
Да есть там это. RETI вообще выкинуть надо было. Таблица небыла задействована вообще.
Обработчик прерывания вообще выполнялся в основной программе. И когда нарывался на RETI всё уходило в перезагрузку.
Обработчик прерывания вообще выполнялся в основной программе. И когда нарывался на RETI всё уходило в перезагрузку.
I am DX168B and this is my favourite forum on internet!
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AVR studio 4 в вопросах и ответах
а почему вы обработчик прерывания вверх перенесли?по моему, это не обязательно.
Ставим плюсы: )
- Necroteeth
- Потрогал лапой паяльник
- Сообщения: 362
- Зарегистрирован: Вс окт 10, 2010 17:43:48
- Откуда: Воронеж
Re: AVR studio 4 в вопросах и ответах
DX168B писал(а):Вот весь проект
Да, забыл. Добавь инициализацию стека и больше не забывай про неё.
Там, где метка RESET, перед настройкой портов. То есть получается, что это должно производиться первым в программе.
т.е. ошибка была в том, что выходить можно из любых прерываний кроме Reset?
только я так и не понял, значение таймера при симуляции должно меняться или нет? TCNT0 упорно сидит в нулях и не шевелится
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AVR studio 4 в вопросах и ответах
Да, из Reset выходить не нужно.
Так вы предделитель поставили 1024. чтобы значение таймера изменилось, нужно чтобы прошло 1024 такта =) поставьте брейкпоинт(breakPoint) на первую команду в обработчике прерывания и нажмите F5(Run) в режиме симуляции.когда стрелка окажется на брейкпоинте программа остановится, тогда в счетчике циклов контроллера можно посмотреть их кол-во и в том же окне, заодно посмотреть прошедшее время. (Время будет правильным, если выставленная частота будет совпадать с частотой тактового генератора в реальной конструкции) Частота выставляется в режиме отладки из меню: Debug-Simulator Options.
Так вы предделитель поставили 1024. чтобы значение таймера изменилось, нужно чтобы прошло 1024 такта =) поставьте брейкпоинт(breakPoint) на первую команду в обработчике прерывания и нажмите F5(Run) в режиме симуляции.когда стрелка окажется на брейкпоинте программа остановится, тогда в счетчике циклов контроллера можно посмотреть их кол-во и в том же окне, заодно посмотреть прошедшее время. (Время будет правильным, если выставленная частота будет совпадать с частотой тактового генератора в реальной конструкции) Частота выставляется в режиме отладки из меню: Debug-Simulator Options.
Ставим плюсы: )
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
Когда срабатывает прерывание, указатель программы прыгает на ту строку в таблице, которая соответствует тому или иному прерыванию. От туда она перепрыгивает к указанной подпрограмме и выполняется эта подпрограмма. Когда указатель дойдёт до reti то он перепрыгнет к месту, от куда его прервали.
Таймер не дёргается потому, что тактовая частота у Вас делится на 1024. Это означает, что вам надо нажать грубо 1204 раза на Step, чтобы он увеличился на единицу.
Чтобы проверить работу прерывания таймера, надо прогнать программу до основного цикла и щёкнуть мышкой по квадратику(биту\флагу) OCF0 в регистре TIFR чтобы вручную сэмулировать переполнение и вызвать прерывание таймера.
Или сделать так, как подсказал ibiza11
Таймер не дёргается потому, что тактовая частота у Вас делится на 1024. Это означает, что вам надо нажать грубо 1204 раза на Step, чтобы он увеличился на единицу.
Чтобы проверить работу прерывания таймера, надо прогнать программу до основного цикла и щёкнуть мышкой по квадратику(биту\флагу) OCF0 в регистре TIFR чтобы вручную сэмулировать переполнение и вызвать прерывание таймера.
Или сделать так, как подсказал ibiza11
I am DX168B and this is my favourite forum on internet!
- Necroteeth
- Потрогал лапой паяльник
- Сообщения: 362
- Зарегистрирован: Вс окт 10, 2010 17:43:48
- Откуда: Воронеж
Re: AVR studio 4 в вопросах и ответах
спасибо за помощь!
остался один только вопрос: можно ли в студии замутить hex-файл из проекта, чтобы потом через PonyProg сунуть в саму железку? а то я пока все делал только так: код в notepad++, hex делаем через tavrasm, шьем через PonyProg пятью проводками. а в данном случае есть откровенная конфузия - tavrasm не хочет принимать строчку
остался один только вопрос: можно ли в студии замутить hex-файл из проекта, чтобы потом через PonyProg сунуть в саму железку? а то я пока все делал только так: код в notepad++, hex делаем через tavrasm, шьем через PonyProg пятью проводками. а в данном случае есть откровенная конфузия - tavrasm не хочет принимать строчку
Код: Выделить всё
.ORG INT_VECTORS_SIZE - ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AVR studio 4 в вопросах и ответах
Ну вы, Батенька, извращенец!
в папке с проектом при нажатии F7 появлется файл с названием проекта с расширением .hex
Ставим плюсы: )
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
Так Студия и делает hex файл, когда Вы жмёте кнопку Assemble (F7). Он должен быть в папке с проектом. 
Последний раз редактировалось DX168B Вс янв 16, 2011 22:31:29, всего редактировалось 1 раз.
I am DX168B and this is my favourite forum on internet!
- Necroteeth
- Потрогал лапой паяльник
- Сообщения: 362
- Зарегистрирован: Вс окт 10, 2010 17:43:48
- Откуда: Воронеж
Re: AVR studio 4 в вопросах и ответах
вот что называется epic fail
урррряяяяяя!!! я теперь могу не пользоваться tavrasmом!!!! да снизойдет благодать джедайская на всех, кто помог мне узреть свет истины
урррряяяяяя!!! я теперь могу не пользоваться tavrasmом!!!! да снизойдет благодать джедайская на всех, кто помог мне узреть свет истины

- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
Necroteeth писал(а):вот что называется epic fail![]()
![]()
![]()
урррряяяяяя!!! я теперь могу не пользоваться tavrasmом!!!! да снизойдет благодать джедайская на всех, кто помог мне узреть свет истины
Удачи Вам в начинаниях.
ibiza11 писал(а):а почему вы обработчик прерывания вверх перенесли?по моему, это не обязательно.
Тогда его надо, либо в конце ставить, либо между подпрограммами, либо перепрыгивать его.
Но я себя приучил ставить обработчики прерываний сразу после таблицы.
I am DX168B and this is my favourite forum on internet!