|
AVR Си., Переменные, область хранения. |
|
|
|
Mar 18 2011, 12:28
|
Участник

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

|
Кто-нибудь знает, как с Си для AVR переменную расположить в области регистров общего назначения?
|
|
|
|
|
Mar 18 2011, 14:57
|
Участник

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

|
Компилятор CodeVision. А нужно это для увеличения быстродействия. Там так получается что на счету каждый такт. Чтобы переписать информацию из ОЗУ в регистр ввода/вывода нужно затратить больше тактов, чем если работать с РОНами. Цитата(MrYuran @ Mar 18 2011, 17:52)  Имеет смысл, если использовать не РОНы, а неиспользуемые периферийные регистры в качестве СОЗУ А можно поподробней?
|
|
|
|
|
Mar 18 2011, 17:10
|
Участник

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

|
В курсе, но я не совсем понимаю, зачем использовать регистры настроек всяких UARTов, Таймеров и т.п. для хранения информации, если есть куча РОнов. Или я что-то неправильно понимаю?
|
|
|
|
|
Mar 18 2011, 23:16
|
Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
|
Mar 19 2011, 05:46
|
Участник

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

|
Тут по-моему разговор ушёл куда-то не туда. По поводу "заниматься фигнёй" я кажется уже отписался: вполне вероятно, что в небольшом куске программы нужно будет экономить каждый такт. Да и вообще, я часто замечаю по переписке на форуме, что обязательно на чей-то вопрос обязательно несколько раз напишут, что он не тем занимается. Такое ощущение что тот кто спрашивает, обязательно, школьник... А вот тот, кто отвечает, тот обязательно гуру, и вообще у него дома стоит установка покруче коллайдра))) Естественно, это замечание не относится ко всем без исключения пользователям форума. P.S.Вчера времени не было, думал здесь кто-нибудь навскидку ответит, но оказалось что ошибался. Сам разберусь... единственная мысль, которая понравилась, так это мысль про хелп)
|
|
|
|
|
Mar 19 2011, 07:29
|

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

|
Цитата(Kirusha @ Mar 19 2011, 08:46)  Тут по-моему разговор ушёл куда-то не туда. По поводу "заниматься фигнёй" я кажется уже отписался: вполне вероятно, что в небольшом куске программы нужно будет экономить каждый такт. Насчёт локальных переменных - можно и в РОНах. Хотя возможно, что компилятор сам сообразит их там разместить. Про периферийные регистры речь шла, чтобы разместить там быстрые статические переменные. Обращение к ним быстрее, чем к памяти, а в общих регистрах их хранить скорее всего неправильно
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Mar 19 2011, 10:34
|
Местный
  
Группа: Свой
Сообщений: 289
Регистрация: 6-12-05
Пользователь №: 11 864

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