navovvol 0 13 июля, 2013 Опубликовано 13 июля, 2013 · Жалоба День добрый. пользуюсь AVR Studio 6. возникла необходимость передать целое значение из переменной типа Float в переменную типа INT16. И наоборот передать значение переменной типа INT16 в переменную типа FLOAT. Раньше как-то это делал, но никак не могу вспомнить и найти не могу. P.S. И еще вопрос по AVR Studio 6 как выключить проверку орфографии в комментах. А то он все русские слова подчеркивает, достал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
massa 0 13 июля, 2013 Опубликовано 13 июля, 2013 · Жалоба Самое простое: int A; float B; A = (float)B; B = (int)A; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 13 июля, 2013 Опубликовано 13 июля, 2013 · Жалоба P.S. И еще вопрос по AVR Studio 6 как выключить проверку орфографии в комментах. А то он все русские слова подчеркивает, достал. Пункт меню VAssistX > Visual Assist X Options > Уберите птичку или добавляйте в словарь, учите его русскому. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andries5 0 13 июля, 2013 Опубликовано 13 июля, 2013 · Жалоба P.S. И еще вопрос по AVR Studio 6 как выключить проверку орфографии в комментах. А то он все русские слова подчеркивает, достал. В меню - VAssistX - Visual Assist X Options - Advasend - Underlines - убрать галочку на - Underlines spelling errors in comments .. - Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
navovvol 0 15 июля, 2013 Опубликовано 15 июля, 2013 · Жалоба Спасибо. разобрался. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
navovvol 0 15 июля, 2013 Опубликовано 15 июля, 2013 · Жалоба И еще вопрос по стуктурам и их передаче функциям. чет ничего не хочет считаться Как корректно передать переменную типа struct в функцию ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 0 15 июля, 2013 Опубликовано 15 июля, 2013 · Жалоба а разве самый тупой способ не проходит? 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); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Johnny81 0 16 июля, 2013 Опубликовано 16 июля, 2013 · Жалоба а причем тут C#? Студия уже позволяет компилировать шарп для авр-ок? :) ЗЫ Если все таки имелся в виду С(++), то сильно рекомендую почитать книжку... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
muravei 3 16 июля, 2013 Опубликовано 16 июля, 2013 · Жалоба а причем тут C#? Студия уже позволяет компилировать шарп для авр-ок? :) Тоже интересно. Краем глаза глянул в инструкцию, что- то там про интеграцию в Вижуал студию , и не только про С#, но и про Бэйсик ! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladimir_orl 0 16 июля, 2013 Опубликовано 16 июля, 2013 · Жалоба А подскажите, какие типы по скорости бывают. К примеру, код: m_camera_byte <<= 1; m_lens_byte <<= 1; требует в AVR Studio5 на выполнение 40 тактов. Типы объявлял и как volatile unsigned char и как просто unsigned char. Почему-то компилятор упорно хранит из в ОЗУ. Пытался объявить их как register, компилятор ругается, что не знает такого типа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
navovvol 0 16 июля, 2013 Опубликовано 16 июля, 2013 (изменено) · Жалоба а разве самый тупой способ не проходит? Спс. Лучше конечно работать по указателям. У меня проблема была внутри самой функции. Путаница с "->" и "*". Привожу работоспособный пример: 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); Изменено 16 июля, 2013 пользователем IgorKossak избыточное цитирование Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 0 16 июля, 2013 Опубликовано 16 июля, 2013 · Жалоба А подскажите, какие типы по скорости бывают. К примеру, код: m_camera_byte <<= 1; m_lens_byte <<= 1; требует в AVR Studio5 на выполнение 40 тактов. Типы объявлял и как volatile unsigned char и как просто unsigned char. Почему-то компилятор упорно хранит из в ОЗУ. Пытался объявить их как register, компилятор ругается, что не знает такого типа. оптимизация включена? сдвиг любого чара на 1 бит 40 тактов не должен требовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladimir_orl 0 16 июля, 2013 Опубликовано 16 июля, 2013 · Жалоба Нет, оптимизацию не включал. Когда включаю, быстрее работает. Но в дебагере при этом строки сдвигаются, нет возможности пошаговой отладки. Или это надо настройки какие-то ставить. Если знаете, подскажите. Как я понимаю, в AVR студии по умолчанию переменные в ОЗУ хранятся. И такты тратятся на их извлечение из ОЗУ, обработку, и запихивание обратно. Помню, переменные как-то можно register объявить. Чтобы всегда в регистрах были. Тем более что их не очень много (около 20). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 0 16 июля, 2013 Опубликовано 16 июля, 2013 · Жалоба с регистровыми переменными далеко не все так просто, как кажется. вы наверняка пользуетесь какими-то библиотеками - вы уверены, что эти библиотеки не попортят ваши "стационарно выделенные регистры"? в AVR-GCC регистровая переменная объявляется просто register uint8_t var asm("r5"); но обычно компилятор совсем не плохо "догадывается", куда переменную поместить для получения наилучшего результата (при включенной оптимизации, разумеется). лучше сосредоточтесь на качестве исходника и включите оптимизацию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 16 июля, 2013 Опубликовано 16 июля, 2013 · Жалоба Нет, оптимизацию не включал.Даже и не знаю - смеяться или плакать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться