Kirusha 0 18 марта, 2011 Опубликовано 18 марта, 2011 · Жалоба Кто-нибудь знает, как с Си для AVR переменную расположить в области регистров общего назначения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 18 марта, 2011 Опубликовано 18 марта, 2011 · Жалоба В общем случае с помощью прочтения документации от компилятора. Для помощи конкретно в вашем случае надо бы указать компилятор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 18 марта, 2011 Опубликовано 18 марта, 2011 · Жалоба Для локальных переменных в теле функции зачастую это само происходит. Для глобальных - песня отдельная и всё зависит от компилятора. Какой компилятор? Если честно то заниматься такой "фигнёй" не стоит вовсе... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 18 марта, 2011 Опубликовано 18 марта, 2011 · Жалоба Кто-нибудь знает, как с Си для AVR переменную расположить в области регистров общего назначения? __regvar __no_init int counter @ 14; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TriD 0 18 марта, 2011 Опубликовано 18 марта, 2011 · Жалоба demiurg_spb +1 Да, для локальных переменных в функции, если они объявлены не как volatile, как правило, компилятор (во всяком случае WinAvr) использует регистры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 29 18 марта, 2011 Опубликовано 18 марта, 2011 · Жалоба Имеет смысл, если использовать не РОНы, а неиспользуемые периферийные регистры в качестве СОЗУ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kirusha 0 18 марта, 2011 Опубликовано 18 марта, 2011 · Жалоба Компилятор CodeVision. А нужно это для увеличения быстродействия. Там так получается что на счету каждый такт. Чтобы переписать информацию из ОЗУ в регистр ввода/вывода нужно затратить больше тактов, чем если работать с РОНами. Имеет смысл, если использовать не РОНы, а неиспользуемые периферийные регистры в качестве СОЗУ А можно поподробней? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 18 марта, 2011 Опубликовано 18 марта, 2011 · Жалоба А можно поподробней? А Вы в курсе архитектуры AVRовской, что задаете такие вопросы? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kirusha 0 18 марта, 2011 Опубликовано 18 марта, 2011 · Жалоба В курсе, но я не совсем понимаю, зачем использовать регистры настроек всяких UARTов, Таймеров и т.п. для хранения информации, если есть куча РОнов. Или я что-то неправильно понимаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 18 марта, 2011 Опубликовано 18 марта, 2011 · Жалоба В курсе, но я не совсем понимаю, зачем использовать регистры настроек всяких UARTов, Таймеров и т.п. для хранения информации, если есть куча РОнов. Или я что-то неправильно понимаю? Периферийные регистры - штука не во всех присутствующая, и максимум их аж 3 штуки. MrYuran видимо привел пример из другой архитектуры. А в кодевижне почитайте хелп. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 18 марта, 2011 Опубликовано 18 марта, 2011 · Жалоба Периферийные регистры - штука не во всех присутствующая, и максимум их аж 3 штуки. MrYuran видимо привел пример из другой архитектуры. Разве речь шла не о регистрах типа DDRx и п.т? Почему три штуки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_noise 0 18 марта, 2011 Опубликовано 18 марта, 2011 (изменено) · Жалоба add, and, clr, com, inc, lsl... (0..31) andi, cpi, ldi... (16..31) in, out, cbi, sbi... (таких в неиспользуемой периферии найдётся несколько, но что конкретно выигрывается в сравнении с нормальным ОЗУ?) lds, sts... (которое вот это оно и есть) ... тут про что пишут? DDR, в принципе, тоже вариант... когда остальная периферия уже кончилась... с целью замутить чёрный ящик, который наружу абсолютно ничего не делает, зато внутри себя не дал пропасть ни одному байту рамы бесплатно, любого вида, какого там оказалась она. Про "заниматься фигнёй", кажется, уже было. Изменено 18 марта, 2011 пользователем нечитатель Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kirusha 0 19 марта, 2011 Опубликовано 19 марта, 2011 · Жалоба Тут по-моему разговор ушёл куда-то не туда. По поводу "заниматься фигнёй" я кажется уже отписался: вполне вероятно, что в небольшом куске программы нужно будет экономить каждый такт. Да и вообще, я часто замечаю по переписке на форуме, что обязательно на чей-то вопрос обязательно несколько раз напишут, что он не тем занимается. Такое ощущение что тот кто спрашивает, обязательно, школьник... А вот тот, кто отвечает, тот обязательно гуру, и вообще у него дома стоит установка покруче коллайдра))) Естественно, это замечание не относится ко всем без исключения пользователям форума. P.S.Вчера времени не было, думал здесь кто-нибудь навскидку ответит, но оказалось что ошибался. Сам разберусь... единственная мысль, которая понравилась, так это мысль про хелп) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 29 19 марта, 2011 Опубликовано 19 марта, 2011 · Жалоба Тут по-моему разговор ушёл куда-то не туда. По поводу "заниматься фигнёй" я кажется уже отписался: вполне вероятно, что в небольшом куске программы нужно будет экономить каждый такт. Насчёт локальных переменных - можно и в РОНах. Хотя возможно, что компилятор сам сообразит их там разместить. Про периферийные регистры речь шла, чтобы разместить там быстрые статические переменные. Обращение к ним быстрее, чем к памяти, а в общих регистрах их хранить скорее всего неправильно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
*ZEVS* 0 19 марта, 2011 Опубликовано 19 марта, 2011 · Жалоба Компилятор CodeVision. А нужно это для увеличения быстродействия. Там так получается что на счету каждый такт. Чтобы переписать информацию из ОЗУ в регистр ввода/вывода нужно затратить больше тактов, чем На мой взгляд если нужно экономить каждый такт то такую программу нужно писать на ассемблере а не на Си. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться