roboforum.ru

Технический форум по робототехнике.
Текущее время: 13 янв 2026, 17:34

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




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: WinAvr, volatile и register
СообщениеДобавлено: 19 сен 2010, 14:47 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Кто знает, как в WinAVR из основной программы передать переменную в прерывание через регистр?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WinAvr, volatile и register
СообщениеДобавлено: 19 сен 2010, 15:13 
Не в сети

Зарегистрирован: 29 дек 2004, 23:15
Сообщения: 3744
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей
Требуется на асме или на Си? Чем не устраивает вариант глобальной static volatile?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WinAvr, volatile и register
СообщениеДобавлено: 19 сен 2010, 19:35 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Прерывание оптимизирую.

Если использовать volatile, то получается ЖУТКИЙ код.
Мало того, что обращение к переменной занимает лишние 5 тактов (и регистр), так еще и этих обращений становится не в меру много. Кроме того, прерывание распухает за счет пушей и попов и т.д.
Регистров навалом - грех не использовать!

Программа пишется на си... прерывание возможно позже перепишу на асме, пока вроде си хватает, но не все бантики еще привязаны.

Вопрос вдогонку... (первый вопрос остается в силе!!!)
Задрал меня гнусный асм... У кого-то есть опыт линковки нормального ассемблера с гнусными объектниками?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WinAvr, volatile и register
СообщениеДобавлено: 19 сен 2010, 19:59 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
1. Переменную объявить как регистровую во всех компилируемых модулях
2. В прерывании это работает, вне прерываний оптимизатор обращения к такой переменной может выкинуть (volatile не поможет). Можно сделать так:
Код:
// R4:R5
#define variable (*((volatile int*)4))

3. Про использование внешних библиотек, в том числе стандартных, можно забыть

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

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



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WinAvr, volatile и register
СообщениеДобавлено: 19 сен 2010, 20:14 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
1. Это само собой, хотя пока использую только "безопасные" r2-r7

2. Вот он их и выкидывает, собака...
Спасибо, сейчас попробую.

3. Ну... это только теоретически (на "безопасные" регистры никто вроде бы не покушается :))
(проверяю lss)

Добавлено спустя 10 минут 11 секунд:
Работает!
(хотя код и жутковат, впрочем ожидаемо...)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WinAvr, volatile и register
СообщениеДобавлено: 19 сен 2010, 20:18 
Не в сети
Аватара пользователя

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

Еще как покушается. А завтра компилятор обновите, и ваще все накроется :)

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

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



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WinAvr, volatile и register
СообщениеДобавлено: 19 сен 2010, 20:29 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Ну, в любом случае, деваться некуда :)
Компиляторы я храню с проектами - знаем мы эти приколы,
когда порядок передачи аргументов "вдруг" меняется на противоположный...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WinAvr, volatile и register
СообщениеДобавлено: 20 сен 2010, 08:57 
Не в сети
Аватара пользователя

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

звиняйте, не удержался :crazy:

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WinAvr, volatile и register
СообщениеДобавлено: 20 сен 2010, 09:45 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Гнусный асм спасет только ручная компиляция... :crazy:
Они меня даже на багзилле "забанили", а потом багзиллу винавровскую и вовсе закрыли :)
опенсорсники, млин - все через коленку :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WinAvr, volatile и register
СообщениеДобавлено: 20 сен 2010, 09:58 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
CVAVR это сила !

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WinAvr, volatile и register
СообщениеДобавлено: 20 сен 2010, 10:02 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
дада... рассказывайте :)

З.Ы. Вспомнилось, как intel после сообщения о мелких глючках (даже не багах)
в ихнем ассемблере, прислала исправленную версию на почту с извинениями...
лет надцать назад...
Разве сейчас такое возможно? Ээх...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WinAvr, volatile и register
СообщениеДобавлено: 20 сен 2010, 19:24 
Не в сети
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WinAvr, volatile и register
СообщениеДобавлено: 20 сен 2010, 20:18 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
не... дело, имхо, не в интеле. А в том, что люди реально ответственно относились к своему труду.

Я не думаю, что сегодня даже интел ответит лично (да еще и извинится за потраченное тобой время),
максимум ответит что-то вроде "ваша заявка принята, если нам захочется, то может быть когда-нибудь мы на нее посмотрим"... а то и вообще ничего...
И уж точно никто не кинется исправлять баги или высылать тебе исправленное на почту.

Причины понятны, конечно... но "осадок остается"...
"Исторически сложилось", млин - всё объясняющие слова.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

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


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

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


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

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