roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 15:27

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Странности AVRStudio
СообщениеДобавлено: 03 июл 2009, 03:39 
Не в сети
Аватара пользователя

Зарегистрирован: 25 ноя 2008, 16:46
Сообщения: 33
Откуда: Томск
Уважаемые электронщики. Столкнулся со странной проблемой.
Я решил написать программу на asm для Tiny88 с использованием АЦП, но почему то в AVRStudio не получается записать хоть какое либо число в регистры ADMUX и ADCSRA(и возможно еще многие регистры). Или же установить там отдельные биты. Все время вылетает ошибка “operand l out of range”


Вот код программы.


Код:
.include "tn88def.inc"


.ORG    0x0000         
//rjmp Reset
reti
.ORG    0x001  ; IRQ0 Handler
reti
.ORG    0x002  ; IRQ1 Handler
reti
.ORG    0x003  ; PCINT0 Handler
reti
.ORG    0x004  ; PCINT1 Handler
reti
.ORG    0x005  ; PCINT2 Handler
reti
.ORG    0x006  ; PCINT3 Handler
reti
.ORG    0x007  ; Watchdog Timer Handler
reti
.ORG    0x008  ; Timer1 Capture Handler
reti
.ORG    0x009  ; Timer1 Compare A Handler
reti
.ORG    0x00A  ; Timer1 Compare A Handler
reti
.ORG    0x00B  ; Timer1 Compare B Handler
reti
.ORG    0x00C  ; Timer0 Compare A Handler
reti
.ORG    0x00D  ; Timer0 Compare B Handler
reti
.ORG    0x00E  ; Timer0 Overflow Handler
reti
.ORG    0x00F  ; SPI Transfer Complete Handler
reti
.ORG    0x010  ; ADC Conversion Complete Handler
reti
.ORG    0x011  ; EEPROM Ready Handler
reti
.ORG    0x012  ; Analog Comparator Handler
reti
.ORG    0x013  ; 2-wire Serial Interface Handler;
reti

.def temp=R16
ldi temp,$FF
out DDRB,temp         
ldi temp,$FF
out DDRD,temp       


ldi temp,$8B
out ADCSRA,temp


Она еще не дописана. Просто встрял с этими регистрами. Если кто сталкивался помогите :cry:


Последний раз редактировалось blindman 03 июл 2009, 07:37, всего редактировалось 1 раз.
Используйте тэг CODE!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Странности AVRStudio
СообщениеДобавлено: 03 июл 2009, 07:19 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
В архитектуре AVR, доступ к регистрам ввода-вывода возможен через 2 адресных пространства: пространство ввода-вывода и пространство ОЗУ. Через пространство ввода-вывода можно обращаться только к 64 регистрам, потому что в коде операций ввода-вывода под адрес порта отведено 6 битов. Если в контроллере больше 64 регистров ввода-вывода, то к старшим обращение возможно только как к ячейкам памяти, а к младшим - и как к ячейкам памяти, и как к портам ввода-вывода.

Если открыть любой даташит на AVR, в конце есть таблица "Register Summary". Там в колонке "Address" указаны 2 адреса - в пространстве ввода вывода и в скобках - в пространстве ОЗУ (эти адреса всегда различаются на 0x20). Если указан только адрес в скобках - обращение возможно только как к ОЗУ.

Например для ATtiny88 обращаться к PORTB можно так: in R24, PORTB или так: lds R24, PORTB + $20. А к ADCSRA - только как lds R24, ADCSRA. Обратите внимание - здесь нет + $20

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Странности AVRStudio
СообщениеДобавлено: 03 июл 2009, 09:07 
Не в сети
Аватара пользователя

Зарегистрирован: 25 ноя 2008, 16:46
Сообщения: 33
Откуда: Томск
Я ето понял. Но скажите пожалуйста как записать нужные мне числа в регистр ADCSRA? Допустим устновить нужный бит этого регистра в 1. Просто при конструкции
..............
ldi temp,$8B
out ADCSRA,temp
...............
вылетает ошибка
и вариант

..............
sbi ADCSRA,$8B
.............
поже ошибка. Хотя по идее в этот регистр можно записать такое число.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Странности AVRStudio
СообщениеДобавлено: 03 июл 2009, 09:13 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Цитата:
Я ето понял

Что понял?! Это что такое: out ADCSRA,temp
Я для кого всё это писал? Неужели не ясно что если нельзя применять инструкцию in, то и out тоже нельзя? А sbi/cbi вообще применима только к 32 младшим регистрам ввода-вывода.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Странности AVRStudio
СообщениеДобавлено: 03 июл 2009, 09:18 
Не в сети
Аватара пользователя

Зарегистрирован: 25 ноя 2008, 16:46
Сообщения: 33
Откуда: Томск
ой извините там
sbi ADCSRA, $5
а не $FF. Хотя все равно не работает.

Добавлено спустя 4 минуты 2 секунды:
Извините.
А нельзя привести пример записи какого-либо числа в регистр ADCSRA?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Странности AVRStudio
СообщениеДобавлено: 03 июл 2009, 09:25 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Можно конечно. Но только если ты перечитаешь все что я писал, откроешь даташит, и ответишь сам себе на вопрос: почему инструкция
sbi ADCSRA, что-угодно не компилируется. Поверь, это будет намного полезнее, чем если тебе дадут прямой ответ.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Странности AVRStudio
СообщениеДобавлено: 03 июл 2009, 10:28 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
прально blindman, нада учить людей включать голову, особенно когда ответ уже дан )

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Странности AVRStudio
СообщениеДобавлено: 03 июл 2009, 11:10 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
DK10000 писал(а):
Я решил написать программу на asm для Tiny88 с использованием АЦП
Попробуйте писать на Си - компилятор знает обчно как правильно обращаться к регистрам ну и другие "трюки". Посмотрите работу с мастером кода CVAVR ( всего 2 Мб ) - http://avr123.nm.ru/z3.htm - возможно пойдет.

Кроме того код на АСМ можно посмотреть в листинге компилятора CVAVR - файл .lst - это может помочь когда вы в тупике на АСМ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Странности AVRStudio
СообщениеДобавлено: 03 июл 2009, 11:13 
Не в сети
Аватара пользователя

Зарегистрирован: 25 ноя 2008, 16:46
Сообщения: 33
Откуда: Томск
Ну, в общем докладываю.
Как я понял к некоторым регистрам можно обращаться только как к ячейкам памяти данных.
Для этого я нашел такую команду как
st X, R(n)
Она записывает содержимое регистра R в память по адресу X. Адресный регистр X состоит из 2 байт. XL и XH причем (XL=R26, XH=R27). Следовательно, для того чтобы записать что-либо, например, в регистр ADCSRA (адрес которого 0x7A) необходимо.

.def temp=R16
ldi temp,$40 // записываем в темп то что хотели бы записать в ADCSRA

ldi R26,0x7A // поскольку адрес не больше одного байта то он полностью укладывается в младший байт адресного регистра X

ldi R27,0 // в старшем байте адресного регистра Х ничего не должно быть

st X, temp // и собственно вуаля и содержимое temp уже в ADCSRA


Спасибо тем кто помог.

Добавлено спустя 1 минуту 1 секунду:
avr123 спасибо за совет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Странности AVRStudio
СообщениеДобавлено: 03 июл 2009, 11:54 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
Меня тут уже упрекали в выдаче чересчур подробных ответов людям, которые не хотят думать сами. И все же наводящий вопрос - чем не приглянулась команда sts? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Странности AVRStudio
СообщениеДобавлено: 03 июл 2009, 12:02 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
DK10000 писал(а):
Как я понял к некоторым регистрам можно обращаться только как к ячейкам памяти данных


Ну вот и прекрасно. Только советую получше изучить систему команд и способы адресации, раз уж взялся писать на ассемблере. То же самое можно записать короче с использованием уже упомянутой команды sts:

Код:
ldi temp, 0x40
sts ADCSRA, temp

при этом используется всего один регистр вместо трёх.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Странности AVRStudio
СообщениеДобавлено: 03 июл 2009, 12:23 
Не в сети
Аватара пользователя

Зарегистрирован: 25 ноя 2008, 16:46
Сообщения: 33
Откуда: Томск
“Меня тут уже упрекали в выдаче чересчур подробных ответов людям, которые не хотят думать сами. И все же наводящий вопрос - чем не приглянулась команда sts?”


Да я же вам говорю, что я новичок :) Более менее прилично пишу на С. Вот решил освоить и асм. Я просто не знал о такой команде sts. Хотя она гораздо удобней (для данного случая).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Странности AVRStudio
СообщениеДобавлено: 03 июл 2009, 12:26 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
новичку - распечатать систему команд и держать пред глазами )

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Странности AVRStudio
СообщениеДобавлено: 03 июл 2009, 15:13 
Не в сети
Аватара пользователя

Зарегистрирован: 25 ноя 2008, 16:46
Сообщения: 33
Откуда: Томск
Знаете господа электронщики. С одной стороны конечно вы правы. Не стоит разжевывать ответ человеку, который не хочет сам до него дойти. Но с другой стороны, если человек только начинает. Может, стоит ему помочь, ведь бывают еще различные обстоятельства. А на тех, кто действительно хочет получить только все готовенькое может плюнуть. И забыть о них. А ориентироваться на тех, кто действительно хочет разобраться, но в силу неопытности нуждается в хорошем совете и т.д.

Уж извините за высказывание.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Странности AVRStudio
СообщениеДобавлено: 03 июл 2009, 15:20 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
DK10000, blindman в первом своем посте разжевал вашу проблему ) не стоит обижаться на то, что вам предлагают подумать...

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO