Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: типы данных С# (AVR Studio 6)
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Navovvol
День добрый.

пользуюсь AVR Studio 6. возникла необходимость передать целое значение из переменной типа Float в переменную типа INT16. И наоборот передать значение переменной типа INT16 в переменную типа FLOAT. Раньше как-то это делал, но никак не могу вспомнить и найти не могу. wacko.gif

P.S. И еще вопрос по AVR Studio 6 как выключить проверку орфографии в комментах. А то он все русские слова подчеркивает, достал.
V.K
Самое простое:

int A;
float B;

A = (float)B;
B = (int)A;
_Артём_
Цитата(Navovvol @ Jul 13 2013, 21:20) *
P.S. И еще вопрос по AVR Studio 6 как выключить проверку орфографии в комментах. А то он все русские слова подчеркивает, достал.

Пункт меню VAssistX > Visual Assist X Options >

Нажмите для просмотра прикрепленного файла


Уберите птичку или добавляйте в словарь, учите его русскому.
andries5
Цитата(Navovvol @ Jul 13 2013, 21:20) *
P.S. И еще вопрос по AVR Studio 6 как выключить проверку орфографии в комментах. А то он все русские слова подчеркивает, достал.

В меню - VAssistX - Visual Assist X Options - Advasend - Underlines - убрать галочку на - Underlines spelling errors in comments .. -
Navovvol
Спасибо. разобрался.
Navovvol
И еще вопрос по стуктурам и их передаче функциям. чет ничего не хочет считаться
Как корректно передать переменную типа struct в функцию ?
ARV
а разве самый тупой способ не проходит?
Код
float source = 3.14;
int dest = source; // здесь dest == 3;
float dest2 = dest; // здесь dest2 = 3.0

и по поводу структур:
Код
typedef struct{
   // тут что нужно
} my_struct_type;

void foo(my_struct_type var);
хотя более оптимально, наверное, будет передавать параметр в функцию по указателю
Код
void foo(my_struct_type *ptr);
Непомнящий Евгений
а причем тут C#? Студия уже позволяет компилировать шарп для авр-ок? sm.gif

ЗЫ Если все таки имелся в виду С(++), то сильно рекомендую почитать книжку...
muravei
Цитата(Непомнящий Евгений @ Jul 16 2013, 10:23) *
а причем тут C#? Студия уже позволяет компилировать шарп для авр-ок? sm.gif

Тоже интересно.
Краем глаза глянул в инструкцию, что- то там про интеграцию в Вижуал студию , и не только про С#, но и про Бэйсик ! sm.gif
vladimir_orl
А подскажите, какие типы по скорости бывают. К примеру, код:

Код
            m_camera_byte <<= 1;
            m_lens_byte <<= 1;


требует в AVR Studio5 на выполнение 40 тактов.

Типы объявлял и как volatile unsigned char и как просто unsigned char. Почему-то компилятор упорно хранит из в ОЗУ. Пытался объявить их как register, компилятор ругается, что не знает такого типа.
Navovvol
Цитата(ARV @ Jul 15 2013, 19:30) *
а разве самый тупой способ не проходит?


Спс. Лучше конечно работать по указателям. У меня проблема была внутри самой функции. Путаница с "->" и "*". Привожу работоспособный пример:
CODE

typedef struct
{
int16_t INPUT; //Number to include in average
int16_t CurIndex;// Position in Buf in which to store In
int16_t BufSize; //Maximum number of elements to include in average
int32_t Buf; // Array to store In values/ Not Array. Sum
int16_t OUTPUT; //Calculation result
bool Q; //Calculation completed flag
}MovAve;

void Moving_Average(MovAve* AVERAGE)// функция Скользящего среднего.
{
if ((AVERAGE->CurIndex)<(AVERAGE->BufSize))
{
AVERAGE->Buf+=AVERAGE->INPUT;
AVERAGE->CurIndex++;
AVERAGE->OUTPUT=(AVERAGE->Buf)/(AVERAGE->CurIndex);
if (AVERAGE->CurIndex==(AVERAGE->BufSize))
{
AVERAGE->CurIndex=0;
AVERAGE->Buf=0;
AVERAGE->Q=true;
}
else
{
AVERAGE->Q=false;
}
}
}
MovAve Sensor;

в цикле программы вызов функции:
Код
Moving_Average(&Sensor);
ARV
Цитата(vladimir_orl @ Jul 16 2013, 11:36) *
А подскажите, какие типы по скорости бывают. К примеру, код:

Код
            m_camera_byte <<= 1;
            m_lens_byte <<= 1;


требует в AVR Studio5 на выполнение 40 тактов.

Типы объявлял и как volatile unsigned char и как просто unsigned char. Почему-то компилятор упорно хранит из в ОЗУ. Пытался объявить их как register, компилятор ругается, что не знает такого типа.
оптимизация включена? сдвиг любого чара на 1 бит 40 тактов не должен требовать.
vladimir_orl
Нет, оптимизацию не включал. Когда включаю, быстрее работает. Но в дебагере при этом строки сдвигаются, нет возможности пошаговой отладки. Или это надо настройки какие-то ставить. Если знаете, подскажите.

Как я понимаю, в AVR студии по умолчанию переменные в ОЗУ хранятся. И такты тратятся на их извлечение из ОЗУ, обработку, и запихивание обратно. Помню, переменные как-то можно register объявить. Чтобы всегда в регистрах были. Тем более что их не очень много (около 20).
ARV
с регистровыми переменными далеко не все так просто, как кажется. вы наверняка пользуетесь какими-то библиотеками - вы уверены, что эти библиотеки не попортят ваши "стационарно выделенные регистры"? в AVR-GCC регистровая переменная объявляется просто register uint8_t var asm("r5"); но обычно компилятор совсем не плохо "догадывается", куда переменную поместить для получения наилучшего результата (при включенной оптимизации, разумеется). лучше сосредоточтесь на качестве исходника и включите оптимизацию.
Сергей Борщ
QUOTE (vladimir_orl @ Jul 16 2013, 11:46) *
Нет, оптимизацию не включал.
Даже и не знаю - смеяться или плакать...
vladimir_orl
Спасибо. Там код-то всего - 100 строчек. Программная реализация модифицированного SPI интерфейса. Попробую.

И опять-таки остаётся проблемка. При включенной оптимизации в дебагере сдвигаются строки.
ARV
Цитата(vladimir_orl @ Jul 16 2013, 14:38) *
И опять-таки остаётся проблемка. При включенной оптимизации в дебагере сдвигаются строки.
это потому, что компилятор делает пятком команд то, на что вы потратили 10 строк программы, в результате уже не всегда возможно догадаться, какой строке программы соответствует так или иная команда ассемблера. у некоторых после включения оптимизации все вообще перестает работать sm.gif
vladimir_orl
Включил максимальную оптимизацию - всё заработало. Да, похоже на будущее придётся ассемблер вспоминать.

Всем спасибо за помощь.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.