Перейти к содержанию
    

типы данных С# (AVR Studio 6)

День добрый.

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

post-17322-1373743320_thumb.jpg

 

 

Уберите птичку или добавляйте в словарь, учите его русскому.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

В меню - VAssistX - Visual Assist X Options - Advasend - Underlines - убрать галочку на - Underlines spelling errors in comments .. -

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И еще вопрос по стуктурам и их передаче функциям. чет ничего не хочет считаться

Как корректно передать переменную типа struct в функцию ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а разве самый тупой способ не проходит?

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#? Студия уже позволяет компилировать шарп для авр-ок? :)

 

ЗЫ Если все таки имелся в виду С(++), то сильно рекомендую почитать книжку...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Тоже интересно.

Краем глаза глянул в инструкцию, что- то там про интеграцию в Вижуал студию , и не только про С#, но и про Бэйсик ! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

            m_camera_byte <<= 1;
            m_lens_byte <<= 1;

 

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

 

Типы объявлял и как volatile unsigned char и как просто unsigned char. Почему-то компилятор упорно хранит из в ОЗУ. Пытался объявить их как register, компилятор ругается, что не знает такого типа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а разве самый тупой способ не проходит?

 

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

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
избыточное цитирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

            m_camera_byte <<= 1;
            m_lens_byte <<= 1;

 

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

 

Типы объявлял и как volatile unsigned char и как просто unsigned char. Почему-то компилятор упорно хранит из в ОЗУ. Пытался объявить их как register, компилятор ругается, что не знает такого типа.

оптимизация включена? сдвиг любого чара на 1 бит 40 тактов не должен требовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Как я понимаю, в AVR студии по умолчанию переменные в ОЗУ хранятся. И такты тратятся на их извлечение из ОЗУ, обработку, и запихивание обратно. Помню, переменные как-то можно register объявить. Чтобы всегда в регистрах были. Тем более что их не очень много (около 20).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, оптимизацию не включал.
Даже и не знаю - смеяться или плакать...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...