реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> типы данных С# (AVR Studio 6), работа с переменными разных типов
Navovvol
сообщение Jul 13 2013, 18:20
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080



День добрый.

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

P.S. И еще вопрос по AVR Studio 6 как выключить проверку орфографии в комментах. А то он все русские слова подчеркивает, достал.
Go to the top of the page
 
+Quote Post
V.K
сообщение Jul 13 2013, 18:25
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 6-05-06
Из: РФ
Пользователь №: 16 841



Самое простое:

int A;
float B;

A = (float)B;
B = (int)A;
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jul 13 2013, 19:22
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



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

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

Прикрепленное изображение



Уберите птичку или добавляйте в словарь, учите его русскому.
Go to the top of the page
 
+Quote Post
andries5
сообщение Jul 13 2013, 19:24
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 15-01-09
Из: Moldova
Пользователь №: 43 421



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

В меню - VAssistX - Visual Assist X Options - Advasend - Underlines - убрать галочку на - Underlines spelling errors in comments .. -
Go to the top of the page
 
+Quote Post
Navovvol
сообщение Jul 15 2013, 05:12
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080



Спасибо. разобрался.
Go to the top of the page
 
+Quote Post
Navovvol
сообщение Jul 15 2013, 13:09
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080



И еще вопрос по стуктурам и их передаче функциям. чет ничего не хочет считаться
Как корректно передать переменную типа struct в функцию ?
Go to the top of the page
 
+Quote Post
ARV
сообщение Jul 15 2013, 15:30
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



а разве самый тупой способ не проходит?
Код
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);


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jul 16 2013, 06:23
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



а причем тут C#? Студия уже позволяет компилировать шарп для авр-ок? sm.gif

ЗЫ Если все таки имелся в виду С(++), то сильно рекомендую почитать книжку...
Go to the top of the page
 
+Quote Post
muravei
сообщение Jul 16 2013, 06:54
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



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

Тоже интересно.
Краем глаза глянул в инструкцию, что- то там про интеграцию в Вижуал студию , и не только про С#, но и про Бэйсик ! sm.gif
Go to the top of the page
 
+Quote Post
vladimir_orl
сообщение Jul 16 2013, 07:36
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 191
Регистрация: 18-09-12
Из: Орёл
Пользователь №: 73 591



А подскажите, какие типы по скорости бывают. К примеру, код:

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


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

Типы объявлял и как volatile unsigned char и как просто unsigned char. Почему-то компилятор упорно хранит из в ОЗУ. Пытался объявить их как register, компилятор ругается, что не знает такого типа.
Go to the top of the page
 
+Quote Post
Navovvol
сообщение Jul 16 2013, 07:58
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 9-09-11
Пользователь №: 67 080



Цитата(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);


Сообщение отредактировал IgorKossak - Jul 16 2013, 08:22
Причина редактирования: избыточное цитирование
Go to the top of the page
 
+Quote Post
ARV
сообщение Jul 16 2013, 09:28
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(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 тактов не должен требовать.


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
vladimir_orl
сообщение Jul 16 2013, 09:46
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 191
Регистрация: 18-09-12
Из: Орёл
Пользователь №: 73 591



Нет, оптимизацию не включал. Когда включаю, быстрее работает. Но в дебагере при этом строки сдвигаются, нет возможности пошаговой отладки. Или это надо настройки какие-то ставить. Если знаете, подскажите.

Как я понимаю, в AVR студии по умолчанию переменные в ОЗУ хранятся. И такты тратятся на их извлечение из ОЗУ, обработку, и запихивание обратно. Помню, переменные как-то можно register объявить. Чтобы всегда в регистрах были. Тем более что их не очень много (около 20).
Go to the top of the page
 
+Quote Post
ARV
сообщение Jul 16 2013, 10:22
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



с регистровыми переменными далеко не все так просто, как кажется. вы наверняка пользуетесь какими-то библиотеками - вы уверены, что эти библиотеки не попортят ваши "стационарно выделенные регистры"? в AVR-GCC регистровая переменная объявляется просто register uint8_t var asm("r5"); но обычно компилятор совсем не плохо "догадывается", куда переменную поместить для получения наилучшего результата (при включенной оптимизации, разумеется). лучше сосредоточтесь на качестве исходника и включите оптимизацию.


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 16 2013, 10:30
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (vladimir_orl @ Jul 16 2013, 11:46) *
Нет, оптимизацию не включал.
Даже и не знаю - смеяться или плакать...


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 08:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01514 секунд с 7
ELECTRONIX ©2004-2016