реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> AVR Си., Переменные, область хранения.
Kirusha
сообщение Mar 18 2011, 12:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 20-10-10
Пользователь №: 60 303



Кто-нибудь знает, как с Си для AVR переменную расположить в области регистров общего назначения?
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Mar 18 2011, 14:12
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



В общем случае с помощью прочтения документации от компилятора.

Для помощи конкретно в вашем случае надо бы указать компилятор.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Mar 18 2011, 14:13
Сообщение #3


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Для локальных переменных в теле функции зачастую это само происходит.
Для глобальных - песня отдельная и всё зависит от компилятора.
Какой компилятор?

Если честно то заниматься такой "фигнёй" не стоит вовсе...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Mar 18 2011, 14:19
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Kirusha @ Mar 18 2011, 14:28) *
Кто-нибудь знает, как с Си для AVR переменную расположить в области регистров общего назначения?


__regvar __no_init int counter @ 14;
Go to the top of the page
 
+Quote Post
TriD
сообщение Mar 18 2011, 14:23
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 29-12-04
Пользователь №: 1 728



demiurg_spb +1
Да, для локальных переменных в функции, если они объявлены не как volatile, как правило, компилятор (во всяком случае WinAvr) использует регистры.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 18 2011, 14:52
Сообщение #6


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Имеет смысл, если использовать не РОНы, а неиспользуемые периферийные регистры в качестве СОЗУ


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Kirusha
сообщение Mar 18 2011, 14:57
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 20-10-10
Пользователь №: 60 303



Компилятор CodeVision. А нужно это для увеличения быстродействия. Там так получается что на счету каждый такт. Чтобы переписать информацию из ОЗУ в регистр ввода/вывода нужно затратить больше тактов, чем если работать с РОНами.

Цитата(MrYuran @ Mar 18 2011, 17:52) *
Имеет смысл, если использовать не РОНы, а неиспользуемые периферийные регистры в качестве СОЗУ



А можно поподробней?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 18 2011, 15:26
Сообщение #8


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Kirusha @ Mar 18 2011, 18:57) *
А можно поподробней?

А Вы в курсе архитектуры AVRовской, что задаете такие вопросы? sm.gif
Go to the top of the page
 
+Quote Post
Kirusha
сообщение Mar 18 2011, 17:10
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 20-10-10
Пользователь №: 60 303



В курсе, но я не совсем понимаю, зачем использовать регистры настроек всяких UARTов, Таймеров и т.п. для хранения информации, если есть куча РОнов. Или я что-то неправильно понимаю?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 18 2011, 18:45
Сообщение #10


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Kirusha @ Mar 18 2011, 20:10) *
В курсе, но я не совсем понимаю, зачем использовать регистры настроек всяких UARTов, Таймеров и т.п. для хранения информации, если есть куча РОнов. Или я что-то неправильно понимаю?

Периферийные регистры - штука не во всех присутствующая, и максимум их аж 3 штуки. MrYuran видимо привел пример из другой архитектуры.
А в кодевижне почитайте хелп.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Mar 18 2011, 19:08
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(_Pasha @ Mar 18 2011, 20:45) *
Периферийные регистры - штука не во всех присутствующая, и максимум их аж 3 штуки. MrYuran видимо привел пример из другой архитектуры.


Разве речь шла не о регистрах типа DDRx и п.т?
Почему три штуки?
Go to the top of the page
 
+Quote Post
нечитатель
сообщение Mar 18 2011, 23:16
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 20-11-10
Пользователь №: 61 032



add, and, clr, com, inc, lsl... (0..31)
andi, cpi, ldi... (16..31)
in, out, cbi, sbi... (таких в неиспользуемой периферии найдётся несколько, но что конкретно выигрывается в сравнении с нормальным ОЗУ?)
lds, sts... (которое вот это оно и есть)

... тут про что пишут?

DDR, в принципе, тоже вариант... когда остальная периферия уже кончилась... с целью замутить чёрный ящик, который наружу абсолютно ничего не делает, зато внутри себя не дал пропасть ни одному байту рамы бесплатно, любого вида, какого там оказалась она.

Про "заниматься фигнёй", кажется, уже было.

Сообщение отредактировал нечитатель - Mar 18 2011, 23:30
Go to the top of the page
 
+Quote Post
Kirusha
сообщение Mar 19 2011, 05:46
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 20-10-10
Пользователь №: 60 303



Тут по-моему разговор ушёл куда-то не туда. По поводу "заниматься фигнёй" я кажется уже отписался: вполне вероятно, что в небольшом куске программы нужно будет экономить каждый такт. Да и вообще, я часто замечаю по переписке на форуме, что обязательно на чей-то вопрос обязательно несколько раз напишут, что он не тем занимается. Такое ощущение что тот кто спрашивает, обязательно, школьник... А вот тот, кто отвечает, тот обязательно гуру, и вообще у него дома стоит установка покруче коллайдра))) Естественно, это замечание не относится ко всем без исключения пользователям форума.
P.S.Вчера времени не было, думал здесь кто-нибудь навскидку ответит, но оказалось что ошибался. Сам разберусь... единственная мысль, которая понравилась, так это мысль про хелп)
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 19 2011, 07:29
Сообщение #14


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Kirusha @ Mar 19 2011, 08:46) *
Тут по-моему разговор ушёл куда-то не туда. По поводу "заниматься фигнёй" я кажется уже отписался: вполне вероятно, что в небольшом куске программы нужно будет экономить каждый такт.

Насчёт локальных переменных - можно и в РОНах. Хотя возможно, что компилятор сам сообразит их там разместить.
Про периферийные регистры речь шла, чтобы разместить там быстрые статические переменные.
Обращение к ним быстрее, чем к памяти, а в общих регистрах их хранить скорее всего неправильно


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
-SANYCH-
сообщение Mar 19 2011, 10:34
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 289
Регистрация: 6-12-05
Пользователь №: 11 864



Цитата
Компилятор CodeVision. А нужно это для увеличения быстродействия. Там так получается что на счету каждый такт. Чтобы переписать информацию из ОЗУ в регистр ввода/вывода нужно затратить больше тактов, чем


На мой взгляд если нужно экономить каждый такт то такую программу нужно писать на ассемблере а не на Си.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 20:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01465 секунд с 7
ELECTRONIX ©2004-2016