AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1946
Зарегистрирован: Сб сен 11, 2010 13:45:01
Откуда: Екатеринбург

Сообщение sergeys »

Спасибо! Работает!
Ко мне можно на "ты", так даже лучше!
Реклама
Встал на лапы
Сообщения: 95
Зарегистрирован: Вс авг 22, 2010 09:23:08

Сообщение svs39 »

не могу найти- как включить нумерацию строк в редакторе AVRstudio?
Реклама
Вымогатель припоя
Сообщения: 541
Зарегистрирован: Вт фев 09, 2010 17:52:26

Сообщение codenamehawk »

yokimbe писал(а):а подскажите кто нибудь.. можно ли в Avr studio сделать нумерацию строк (ато достает иногда копировать всю писанину в notepad ++ и искать на что ругается компилятор)
В списке ошибок, нажмите на нужную вам ошибку и она, в верхнем окне будет выделена.

С WinAVR идет Programmers Notepad, рекомендую.
Там удобней писать код.
н.п. вместо того, чтобы вставить объявленную ранее переменную, достаточно написать пару букв и CRTL+Пробел
если освоите Makefile то и компиляцию будете там сразу делать и ошибки поправлять.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 362
Зарегистрирован: Вс окт 10, 2010 17:43:48
Откуда: Воронеж

Сообщение Necroteeth »

точно не знаю, сюда вопрос постить или все-таки в мелкие вопросы... :oops:
в общем, вопрос следующий: при симуляции в AVR Studio моей программы не меняется значение TCNT0 в окошке I/O View, а указатель выполнения программы бегает только от RJMP Reset до этого самого обработчкика по метке Reset. все, что по листингу ниже обработчика прерываний Reset не выполняется. подскажите, пожалуйста, где ошибка - в коде или в настройках симуляции
Вложения
First.asm
(3.08 КБ) 561 скачивание
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Ну и напутано у вас с прерываниями. :)))
Что должно выполниться при совпадении значений TCNT0 и OCR0 ?
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 362
Зарегистрирован: Вс окт 10, 2010 17:43:48
Откуда: Воронеж

Сообщение Necroteeth »

DX168B писал(а):Ну и напутано у вас с прерываниями. :)))
Что должно выполниться при совпадении значений TCNT0 и OCR0 ?
прерывание Timer_tick
а что напутано-то? объясните нерадивому новичку... :oops:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Сейчас отправлю Вам исправленный исходник и Вы увидите свою ошибку. :)
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 362
Зарегистрирован: Вс окт 10, 2010 17:43:48
Откуда: Воронеж

Сообщение Necroteeth »

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

Сообщение DX168B »

Вот весь проект
Да, забыл. Добавь инициализацию стека и больше не забывай про неё.
Там, где метка 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!
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

в основном цикле(начинающемся с метки reset) вместо reti поставьте rjmp Inf.

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

Сообщение DX168B »

Да есть там это. RETI вообще выкинуть надо было. Таблица небыла задействована вообще.
Обработчик прерывания вообще выполнялся в основной программе. И когда нарывался на RETI всё уходило в перезагрузку.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

а почему вы обработчик прерывания вверх перенесли?по моему, это не обязательно.
Ставим плюсы: )
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 362
Зарегистрирован: Вс окт 10, 2010 17:43:48
Откуда: Воронеж

Сообщение Necroteeth »

DX168B писал(а):Вот весь проект
Да, забыл. Добавь инициализацию стека и больше не забывай про неё.
Там, где метка RESET, перед настройкой портов. То есть получается, что это должно производиться первым в программе.
т.е. ошибка была в том, что выходить можно из любых прерываний кроме Reset?
только я так и не понял, значение таймера при симуляции должно меняться или нет? TCNT0 упорно сидит в нулях и не шевелится :cry:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Да, из Reset выходить не нужно.
Так вы предделитель поставили 1024. чтобы значение таймера изменилось, нужно чтобы прошло 1024 такта =) поставьте брейкпоинт(breakPoint) на первую команду в обработчике прерывания и нажмите F5(Run) в режиме симуляции.когда стрелка окажется на брейкпоинте программа остановится, тогда в счетчике циклов контроллера можно посмотреть их кол-во и в том же окне, заодно посмотреть прошедшее время. (Время будет правильным, если выставленная частота будет совпадать с частотой тактового генератора в реальной конструкции) Частота выставляется в режиме отладки из меню: Debug-Simulator Options.
Ставим плюсы: )
Друг Кота
Аватара пользователя
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)

Сообщение DX168B »

Когда срабатывает прерывание, указатель программы прыгает на ту строку в таблице, которая соответствует тому или иному прерыванию. От туда она перепрыгивает к указанной подпрограмме и выполняется эта подпрограмма. Когда указатель дойдёт до reti то он перепрыгнет к месту, от куда его прервали.

Таймер не дёргается потому, что тактовая частота у Вас делится на 1024. Это означает, что вам надо нажать грубо 1204 раза на Step, чтобы он увеличился на единицу.
Чтобы проверить работу прерывания таймера, надо прогнать программу до основного цикла и щёкнуть мышкой по квадратику(биту\флагу) OCF0 в регистре TIFR чтобы вручную сэмулировать переполнение и вызвать прерывание таймера.
Или сделать так, как подсказал ibiza11
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 362
Зарегистрирован: Вс окт 10, 2010 17:43:48
Откуда: Воронеж

Сообщение Necroteeth »

спасибо за помощь!
остался один только вопрос: можно ли в студии замутить hex-файл из проекта, чтобы потом через PonyProg сунуть в саму железку? а то я пока все делал только так: код в notepad++, hex делаем через tavrasm, шьем через PonyProg пятью проводками. а в данном случае есть откровенная конфузия - tavrasm не хочет принимать строчку

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

.ORG   INT_VECTORS_SIZE 
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

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

Сообщение DX168B »

Так Студия и делает hex файл, когда Вы жмёте кнопку Assemble (F7). Он должен быть в папке с проектом. :)
Последний раз редактировалось DX168B Вс янв 16, 2011 22:31:29, всего редактировалось 1 раз.
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 362
Зарегистрирован: Вс окт 10, 2010 17:43:48
Откуда: Воронеж

Сообщение Necroteeth »

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

Сообщение DX168B »

Necroteeth писал(а):вот что называется epic fail :))) :))) :)))
урррряяяяяя!!! я теперь могу не пользоваться tavrasmом!!!! да снизойдет благодать джедайская на всех, кто помог мне узреть свет истины :music:
Удачи Вам в начинаниях. :beer:
ibiza11 писал(а):а почему вы обработчик прерывания вверх перенесли?по моему, это не обязательно.
Тогда его надо, либо в конце ставить, либо между подпрограммами, либо перепрыгивать его.
Но я себя приучил ставить обработчики прерываний сразу после таблицы. :)
I am DX168B and this is my favourite forum on internet!
Контактная информация:
Ответить

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