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

Обсуждаем контроллеры компании Atmel.
Ответить
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб

Сообщение AI_Disable »

Dexa, что вы имеете виду под "имитацией"? Если вам нужно, чтоб нажатие кнопки имитировалось не только программно, но и хардово, то просто переназначаем порт с кнопкой на выход и записываем в него 0 или 1 (в зависимости, от того на какой полюс источника питания замыкается реальная кнопка). Под "харовой имитацией" я имел виду, что на порте с кнопкой должен появиться такой лог. уровень, который появляется при нажатии реальной кнопки. Если же вам просто нужно, чтоб программа думала, что кнопка нажата, то так делать не следует. Просто добавьте к условию опроса кнопки, логическим "или", опрос какого-либо "флага" (бита переменной). Если нужно будет в какой-либо части программы имитировать нажатие кнопки, то просто установите этот флаг.
Контактная информация:
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 119
Зарегистрирован: Ср ноя 07, 2007 15:17:20

Сообщение Dexa »

Ничего не понял, но мне нужно проверить срабатывает ли прерывание, да и все программу проследить как работает. В протеусе не пашет, вот и решил прогнать в аврстудио. Кнопка весит на входе внешнего прерывания INT1, как только наступило прерывание - антидребезг кнопки, включаем реле, потом задержка на 3 секунды примерно (при этом светодиод моргает примерно каждые 0,5 секунды), потом выключили реле. Знаю задержка реализована глупо, если подскажите как лучше со сведодиодами и задержкой (а еще и научно популярно объясните) то буду только рад.

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

;AT90S2313  @  External 4Mhz
.nolist
.include "2313def.inc"
.list
;***************??????????*****************
.def	temp=R16
.def    temp1=r17
.def  temp2=r18
.def temp3=r19
.def count=r20
.def count1=r21


;***********************************************
.cseg
.org 0
rjmp RESET    ; Reset Handler
              rjmp EXT_INT0 ; IRQ0 Handler
              rjmp EXT_INT1 ; IRQ1 Handler
              rjmp TIM_CAPT1 ; Timer1 Capture Handler
              rjmp TIM_COMP1 ; Timer1 Compare Handler
              rjmp TIM_OVF1 ; Timer1 Overflow Handler
              rjmp TIM_OVF0 ; Timer0 Overflow Handler
              rjmp UART_RXC ; UART RX Complete Handler
              rjmp UART_DRE ; UDR Empty Handler
              rjmp UART_TXC ; UART TX Complete Handler
              rjmp ANA_COMP ; Analog Comparator Handler
              EXT_INT0: ret
			  TIM_COMP1: ret
			  TIM_OVF1:ret
              TIM_CAPT1 :	ret
              TIM_OVF0  : ret
              UART_RXC  : ret
              UART_DRE  : ret
              UART_TXC  : ret
              ANA_COMP  : ret
;***************?????????????*****************
RESET:   ldi temp,RamEnd	;????????????? ?????
              out SPL,temp
              cli
              ldi temp,0b11111111;????? ? ?????? ????? B
              out DDRB,temp
              ldi temp,0b10000011;????? ? ?????? ????? D
              out DDRD,temp
              ldi temp,0b00000000;????????? ????????? ????? B ? ????????
              out PortB,temp
              ldi temp,0b00000000;????????? ????????? ????? D ? ????????
              out PortD,temp
              ldi	Temp,0b11000000;????????? ?????????? INT0 ? INT1
              out	GIMSK,Temp
              ldi Temp,0b00001010; INT0 ?? ?? ?????????? ??????, INT1 ?? ?????????? ??????
              out MCUCR,Temp
              ldi Temp,0b11000000; ???????? ?????????? ?? ???????????? 1 ??????? 
              out TIMSK, Temp        
              ldi Temp,0            ;????????? ???????
              out TCNT1H,Temp
              out TCNT1L,Temp
              sei 

Start:      
             rjmp Start; ??????????? ????
EXT_INT1:
              rcall Antidrebezg
              in temp3, SREG
              push temp3
              sbi PortB,4; ??????? ?????
              rcall Zadergka
              cbi PortB,4;??????? ?????
              pop temp3
              out SREG,temp3
              reti; ????? ?? ??????????? ?????????? INT1
;*****************???????????*********************
; ??? ?????? 4 ??? ???? ?????? ????? ???????? 10 ??, ????????? ?????????? count 
;???????? 2 ??????? - ???????? 20 ??
Antidrebezg:
              push Temp1
              push Temp2
              ldi Temp1,0
              ldi Temp2,50
              ldi count,2
d11:        dec Temp1
              brne d11
              dec Temp2
              brne d11
              pop Temp2
              pop Temp1
              dec count
              brne d11
              ret

Zadergka:
              sbi PortD,0
              push Temp1
              push Temp2
              ldi Temp1,0
              ldi Temp2,0
              ldi count,11
              ldi count1,6
d12:        dec Temp1
              brne d12
              dec Temp2
              brne d12
              dec count
              brne d12;
              cbi PortD,0
              dec count1
              brne d12
              pop Temp2
              pop Temp1
              ret   
              
......aлкоголь расширяет сосуды, курение их сужает, а сдают почему-то нервы......
Контактная информация:
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 119
Зарегистрирован: Ср ноя 07, 2007 15:17:20

Сообщение Dexa »

И еще вопросик - не могу понять как загружается константа
ldi R16,(0<<ISC00)|(1<<ISC01)
Что написано после запятой?
......aлкоголь расширяет сосуды, курение их сужает, а сдают почему-то нервы......
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб

Сообщение AI_Disable »

Наступил на какие-то грабли, уж не знаю виноват сам винавр или студия, в общем при написании программы на тини2313 прерывания по таймеру иногда компилируются нерабочими(основной цикл крутится, а в прерывание мы никогда не попадаем), работоспособность прерывания нелинейно зависит от кода в основном цикле. Если то же самое компилить в CVAVR, то всё работает нормально. У меня такое уже второй раз и именно на тини2313, кто-нибудь сталкивался с подобным?
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 1
Зарегистрирован: Сб дек 12, 2009 15:16:26
Откуда: Комсомольск-на-Амуре

Сообщение Serxio »

Здравствуйте! У меня такая проблема, не могу а AVR Studio 4.17 просимулировать работу таймера 1 в режиме СТС при совпадении с регистром ICR1 (режим №12). TCCR1A=0b00000000, TCCR1B=0b00011010. Причём режим №4(СТС при совпадении с OCR1A) работает. Скачал специально новую версию Studio, а проблема так и осталась. Кстати, камень mega8.
Реклама
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пт дек 04, 2009 16:35:57

Сообщение PeLazginec »

Здраствуйте всем. Скачал программу AVRStudio 4.13,юзаю клик на установку,а он выдает ошибку вида "avrstudio 4.13 must be installed",подскажите пожалуйста с чем это связано
Вложения
-уменьшенное.jpg
(29.61 КБ) 599 скачиваний
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

To PeLazginec, скажите а у вас путь к установке или к файлам проекта не содержит кириллических названий? Очень американцы русских слофф не любят
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Пт дек 04, 2009 16:35:57

Сообщение PeLazginec »

Meteor писал(а):To PeLazginec, скажите а у вас путь к установке или к файлам проекта не содержит кириллических названий? Очень американцы русских слофф не любят
Аха,вот в чем оно дело?! Значит я сейчас беру и создаю в корневом каталоге C: папку на английском,перемещаю avrstudio 4... и запускаю с корневого. Правильно?
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

PeLazginec писал(а): Значит я сейчас беру и создаю в корневом каталоге C: папку на английском,перемещаю avrstudio 4... и запускаю с корневого. Правильно?
Да, думаю этого будет достаточно.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Пн июн 09, 2008 23:40:31

Сообщение lag1 »

Вопрос уже задавался:
"Как в отладчике частоту МК сменить?"
Был ответ:
"В режиме отладки: меню Debug-AVR Simulator Options"
Что-то не получается. Запускал в отладчике программу:

.include "tn2313def.inc"
.cseg
.org 0
ldi r31,LOW(RAMEND)
out spl,r31



ldi r31,$ff
out ddrb,r31


Loop:
SBI PORTB,1
rcall wait
CBI PORTB,1
rcall wait
rjmp Loop

wait:
ldi r17,2
m: ldi r18,2
m1: dec r18
brne m1
dec r17
brne m
ret

Светодиод (квадратик PORTB,1) мигает, но с изменением частоты в
меню Debug-AVR Simulator Options частота мигания не меняется.
Получается, что отладчик работает с постоянной небольшой частотой.
С какой? Спасибо!
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Если не ошибаюсь по умолчанию стоит 4МГц, а то что у Вас не получилось сменить тактовую - это Ваша невнимательность
Вложения
Option1.jpg
(30.85 КБ) 629 скачиваний
Option.jpg
(35.27 КБ) 653 скачивания
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Пн июн 09, 2008 23:40:31

Сообщение lag1 »

То, что я делаю что-то не так, я понимаю. Не понятно пока "что".
Последовательность нажатия кнопок:
1. Assemble and run
2. AutoStep
По скорости перемещеня курсора видно, что частотат явно не Мгц, а всего лишь несколько десятков гц.
Может я запускаю отладчик в каком-то замедленном режиме?
Программа совсем небольшая, может кто посмотрит ее в отладке и подскажет мне, что я делаю не так.
Извините за назойливость.
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

lag1 писал(а):То, что я делаю что-то не так, я понимаю. Не понятно пока "что".
Последовательность нажатия кнопок:
1. Assemble and run
2. AutoStep
По скорости перемещеня курсора видно, что частотат явно не Мгц, а всего лишь несколько десятков гц.
Может я запускаю отладчик в каком-то замедленном режиме?
Программа совсем небольшая, может кто посмотрит ее в отладке и подскажет мне, что я делаю не так.
Извините, а как Вы себе представляете АвтоШаг с частотой 4МГц? С отрисовкой состояний всех регистров, а их там до черта? Так не работают и студия так не работает. Тайминги можно смотреть там (файл). Симуляция нужна что бы посмотреть как работает до заливки. А после заливки все в железе
Вложения
simul.JPG
(49.02 КБ) 624 скачивания
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Пн июн 09, 2008 23:40:31

Сообщение lag1 »

(Извините, а как Вы себе представляете АвтоШаг с частотой 4МГц? С отрисовкой состояний всех регистров, а их там до черта? Так не работают и студия так не работает. Тайминги можно смотреть там (файл). Симуляция нужна что бы посмотреть как работает до заливки.)
Цитата.

Да, я понимаю, что при симуляции частота явно не Мгц.
Вот мне же и хотелось узнать, с какой частотой работает АвтоШаг и
можно ли именно эту частоту изменить.
И еще, если менять частоту в меню Debug-AVR Simulator Options с
1Мгц на 8Мгц, где можно увидеть эти изменения(на что они влияют)?
Можно на примере программы мигания светодиода.
Больше вопросов постараюсь не задавать, потому как чувствую, что сильно зациклился на этой теме и уже всем надоел.
Спасибо за ответы! Удачи!
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

lag1 писал(а):Вот мне же и хотелось узнать, с какой частотой работает АвтоШаг и можно ли именно эту частоту изменить.
На счет изменить скорость автошага не знаю. Такая опция есть у IAR, в студии не нашел
lag1 писал(а): И еще, если менять частоту в меню Debug-AVR Simulator Options с
1Мгц на 8Мгц, где можно увидеть эти изменения(на что они влияют)?
Я Вам выделил в предыдущем посте показания частоты и времени выполнения. Выше есть еще число циклов. Как только смените тактовую у вас поплывут и значения времени. Число циклов останется тем же (для одного и того же участка кода). Успехов!
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18682
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

lag1 писал(а):Светодиод (квадратик PORTB,1) мигает, но с изменением частоты в
меню Debug-AVR Simulator Options частота мигания не меняется.
Получается, что отладчик работает с постоянной небольшой частотой.
С какой? Спасибо!
отладчик студии - не симулятор в реальном времени, он позволяет отладить логику программы, а вовсе не насладиться миганием светодиодов. т.е. никакие временные интерваля реально не выдерживаются, только по внутренним счетчикам времени их и можно увидеть. для примера: задержку в 100 миллисекунд студия эмулирует почти минуту (зависит от процессора компа)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Родился
Аватара пользователя
Сообщения: 13
Зарегистрирован: Вс дек 20, 2009 23:03:00
Откуда: Владимир

Сообщение Himik »

Здравствуйте. Помогите пожалуйста разобраться. Скачал AVR Studio 4.18.
Написал программу с подпрограммами. Однако когда подпрограмма заканчивается, то возвращается совсем не к тому месту, откуда её вызывали. Причём это первый вызов подпрограммы.
Если кто знает, объясните пожалуйста, что не так. А то просто руки опускаются. То ли симулятор глюченый, то ли с прогой что-то не то. Но вроде всё правильно делаю, как учили.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Himik писал(а):Здравствуйте. Помогите пожалуйста разобраться. Скачал AVR Studio 4.18..
стек инициализируй!!!!

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

		ldi tmp,low(ramend)
		out SPL,tmp
		ldi tmp,high(ramend)
		out SPH,tmp
Ставим плюсы: )
Друг Кота
Аватара пользователя
Сообщения: 4793
Зарегистрирован: Пт июл 11, 2008 09:42:35
Откуда: Made in USSR

Сообщение DiGiCat »

PeLazginec писал(а):Скачал программу AVRStudio 4.13,юзаю клик на установку,а он выдает ошибку вида "avrstudio 4.13 must be installed",подскажите пожалуйста с чем это связано
Эт ругается, что сама AVR Studio еще не установлена. :) Похоже сейчас пытаешься вместо самой AVR Studio, пакет ее обновлений установить - не то ставишь сейчас, установить вместо AVR Studio, пытаешься ServicePack ( он около 40 весит, сама Studio около 100мб ). Скачивай и ставь сначала другой файл..
Родился
Аватара пользователя
Сообщения: 13
Зарегистрирован: Вс дек 20, 2009 23:03:00
Откуда: Владимир

Сообщение Himik »

Огромное, огромное спачибо ibiza11, он меня просто спас :P
Ответить

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