roboforum.ru

Технический форум по робототехнике.

WinAvr, volatile и register

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

WinAvr, volatile и register

Сообщение Michael_K » 19 сен 2010, 14:47

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

Re: WinAvr, volatile и register

Сообщение Сергей » 19 сен 2010, 15:13

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

Re: WinAvr, volatile и register

Сообщение Michael_K » 19 сен 2010, 19:35

Прерывание оптимизирую.

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

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

Вопрос вдогонку... (первый вопрос остается в силе!!!)
Задрал меня гнусный асм... У кого-то есть опыт линковки нормального ассемблера с гнусными объектниками?
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: WinAvr, volatile и register

Сообщение blindman » 19 сен 2010, 19:59

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!

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

Re: WinAvr, volatile и register

Сообщение Michael_K » 19 сен 2010, 20:14

1. Это само собой, хотя пока использую только "безопасные" r2-r7

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

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

Добавлено спустя 10 минут 11 секунд:
Работает!
(хотя код и жутковат, впрочем ожидаемо...)
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: WinAvr, volatile и register

Сообщение blindman » 19 сен 2010, 20:18

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!

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

Re: WinAvr, volatile и register

Сообщение Michael_K » 19 сен 2010, 20:29

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

Re: WinAvr, volatile и register

Сообщение Duhas » 20 сен 2010, 08:57

Да придет АСМ и спасет всех нас от греха!

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

Re: WinAvr, volatile и register

Сообщение Michael_K » 20 сен 2010, 09:45

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

Re: WinAvr, volatile и register

Сообщение avr123.nm.ru » 20 сен 2010, 09:58

CVAVR это сила !
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: WinAvr, volatile и register

Сообщение Michael_K » 20 сен 2010, 10:02

дада... рассказывайте :)

З.Ы. Вспомнилось, как intel после сообщения о мелких глючках (даже не багах)
в ихнем ассемблере, прислала исправленную версию на почту с извинениями...
лет надцать назад...
Разве сейчас такое возможно? Ээх...
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: WinAvr, volatile и register

Сообщение Duhas » 20 сен 2010, 19:24

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

Re: WinAvr, volatile и register

Сообщение Michael_K » 20 сен 2010, 20:18

не... дело, имхо, не в интеле. А в том, что люди реально ответственно относились к своему труду.

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

Причины понятны, конечно... но "осадок остается"...
"Исторически сложилось", млин - всё объясняющие слова.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб


Вернуться в Микроконтроллеры

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

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