Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Вопросы по С/С++ (СИ)

Сообщение shads »

HHIMERA писал(а):Песши ысчо, сказочник-непрофессионал!!! :))) :)))
Доказывай, что ТЫ умнее Микрочипа, повесели всех!!! :)))
Не знаю как других, но меня ты больше всех веселиш. Тебе тут не приплачивают случайно, за роль шута.
Реклама
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение avreal »

avreal писал(а):Перевести сразу в целое с умножением на вплоть до миллиона нет проблем, так как в long (на 8-16-32-битниках) сидят числа до грубо ±2e9, а во float до ±3e38, так что запас разрядности есть.
«Тьху, ну как обычно»™
Это если смотреть в сторону «не переполним float этим умножением если число изначально могло влезть во float».
А если смотреть, чтобы 7 c мелочью значащих десятичных цифр после умноженя влазило в девять с мелочью десятичных цифр long, то точка зрения меняется.

Диапазон чисел конкретной задачи и утаптывание его в минимальные по размеру переменные это каждый раз отдельная песня.

________________
Что для нас «какабычна» — то для них bullshit. И наоборот — для них «bullshit», а нам вроде и «какабычна»
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Реклама
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Вопросы по С/С++ (СИ)

Сообщение HHIMERA »

shads писал(а):Не знаю как других, но меня ты больше всех веселиш.
Ну так... будь серьёзным, расскажи avreal'у, почему Микрочип предпочитает глобальные переменные... сможешь? :))
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Chip115 »

HHIMERA писал(а):
avreal писал(а):частично оставлена только их любовь к глобальным переменным
Песши ысчо, сказочник-непрофессионал!!! :))) :)))
Доказывай, что ТЫ умнее Микрочипа, повесели всех!!! :)))
А на чем основан сей сарказм? На абсолютном убеждении что производитель не может ошибиться? У TI регулярно выходят иераты для их МК. А этот производитель куда серьезнее чем микрочип.
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение avreal »

HHIMERA писал(а):расскажи avreal'у, почему Микрочип предпочитает глобальные переменные... сможешь?
1) Не нужно, я знаю. Хотя с compiled stack про неё уже можно было бы и забыть.
2) Какая разница, в чём причина этой любви? Она есть и её следы в исправленном мной коде остались. О чём предупредил, так как для большинства других процессоров это явное ухудшение.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Реклама
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение urry »

Что-то я не понял сакральный смысл всех этих преобразований с принтф. Не поддерживает флоат - ну и бог с ним, передать как 4 бинарных байта, на той стороне склеить - получится полноценный флоат без всех округлений. Хочется текста - ну будет 8 байт, что здесь копья ломать на ерунде...
Реклама
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Вопросы по С/С++ (СИ)

Сообщение HHIMERA »

avreal писал(а): 1) Не нужно, я знаю. Хотя с compiled stack про неё уже можно было бы и забыть.
Вот видишь, не знаешь, а сказки про Микрочип рассказываешь... :))
2) Какая разница, в чём причина этой любви? Она есть и её следы в исправленном мной коде остались. О чём предупредил, так как для большинства других процессоров это явное ухудшение.
А причём здесь другие процессоры??? Разговор про Микрочип, МСС18 в частности.
Ты просто ТРЕПЛО!!! Ты объявил Микрочип в дилетанстве и от этого пытался сам себя поднять до небес??? Браво!!! Ты "проффесионал"!!! :))
Да и с другими процессорами не всё так просто, как ты рассказываешь... Или ты тоже этого не знаешь???
Может поэтому твоя тема с треском провалилась??? :))
Микрочип создал свой МСС18, худо, бедно, со своими тараканами, но работающий... Учитывая особенности архитектуры им это далось нелегко, о чём они и предупредили, а тебя понесло... :))
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение avreal »

urry писал(а):Что-то я не понял сакральный смысл всех этих преобразований с принтф. Не поддерживает флоат - ну и бог с ним, передать как 4 бинарных байта, на той стороне склеить - получится полноценный флоат без всех округлений. Хочется текста - ну будет 8 байт, что здесь копья ломать на ерунде...
Я лично не умею четыре двоичных байта (как? в HEX?) в окне терминала или на ЖКИ-индикаторе переводить во float в своей голове :dont_know:
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Вопросы по С/С++ (СИ)

Сообщение HHIMERA »

urry писал(а):Что-то я не понял сакральный смысл всех этих преобразований с принтф. Не поддерживает флоат - ну и бог с ним...
Совершенно верно...
В стареньких HT STD с printf тоже было не всё гладко, и ведь работали без printf, и ничего...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение urry »

union {
float f;
unsigned char arr[4];
}un_f;

for(i=0;i<4;i++)
{
fn_send(un_f.arr;
}

///
на стороне компа

#pragma pack(push,1)
union
{
float f;
unsigned char arr[4];
}un_f;
#pragma pack(pop)
принимаем эти 4 байта и получаем свой флоат
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение avreal »

urry писал(а):принимаем эти 4 байта и получаем свой флоат
Это я прекрасно понимаю и при необходимости делаю. Но это касается программы в компьютере, которая потом всё покажет.
Речь шла о терминале, т.е. об интерфейсе непосредственно с человеком.
illarionovsp писал(а):Хотел так на гипертерминал плавующую посылать:
Вот я и говорю, что я не умею в голове двочиные данные переводить в текстовое представление float.
Увы, но мне при выводе числа -344.9876 нужно на терминале/ЖКИ видеть -344.99, а не C3AC7E6A и тем более не -344.-98, как выдаст в UART тот мирочиповский пример.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Вопросы по С/С++ (СИ)

Сообщение HHIMERA »

avreal писал(а): Вот я и говорю, что я не умею в голове двочиные данные переводить в текстовое представление float.
Да пофигу... чего ты не умеешь... :))
Увы, но мне при выводе числа -344.9876 нужно на терминале/ЖКИ видеть -344.99, а не C3AC7E6A и тем более не -344.-98, как выдаст в UART тот мирочиповский пример.
И пофигу, что тебе надо... И микрочиповский пример (ведь это всего лишь пример, никто никого не обязывает его к применению) тоже пофигу... :))
И Микрочип с Атмэлом - пофигу...

"Каждый проц под свою задачу!"(С)
Вот на основе этой задачи и выбирается проц, софт к нему и элементная база...
Написал Микрочип, что у МСС18 несварение желудка от printf, значит, либо писать своё в МСС18, либо юзать Hi-Tech, либо уйти на PIC24, либо вообще на АВР или STM32...
В где эта проблема с printf??? :))
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Аlex »

HHIMERA, завязывай :))
Аватара пользователя
DruidCat
Встал на лапы
Сообщения: 116
Зарегистрирован: Чт май 03, 2012 06:27:23
Откуда: Челябинск

Re: Вопросы по С/С++ (СИ)

Сообщение DruidCat »

Химера как обычно панос разводит на форуме. Так взрослые люди не разговаривают. Только подростки пытающиеся само утвердиться за счет других.
Кот должен прожить жизнь без сожаления.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Вопросы по С/С++ (СИ)

Сообщение HHIMERA »

"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Аlex »

Кстати, а что за квалификатор far ? Чёто гугол молчит, или я туплю... :(
Можно просто своими словами в пару строк :)
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Вопросы по С/С++ (СИ)

Сообщение HHIMERA »

Да брось...
Гугль... MCC18 far... куча ссылок...

Из MPLAB-C18-Getting-Started в папке doc ...
Code Model – This sets program memory pointer default size as 16 or 24 bits. This
can be overridden for each variable by declaring the pointer as near (16 bits) or far
(24 bits). Using 16-bit pointers (small code model) results in more efficient code, but if
pointers are used for program memory data (romdata) in devices with more than
64 Kbytes of program data, 24-bit pointers (large code model) should be employed.

Data Model – Default data sections (idata and udata) are located in Access RAM
(small data model) or banked RAM (large data model). The location of a particular
variable can be overridden on each variable by declaring it near or far and creating
a section in the correct memory region.
5.4.4 Pointers
Pointers in MPLAB C18 can be used to point to data in ROM or RAM. This
demonstration uses three pointers, showing how they are used in the PIC18
architecture.
The source code is shown in Example 5-5. Enter this in a a new file in MPLAB IDE and
save it as “pointers.c” in the “More Projects” folder.

EXAMPLE 5-5: POINTERS CODE
ram char * ram_ptr;
near rom char * near_rom_ptr;
far rom char * far_rom_ptr;
char ram_array[] = "this is RAM";
rom char rom_array[] = "this is ROM";
void main (void)
{
ram_ptr = &ram_array[0];
near_rom_ptr = &rom_array[0];
far_rom_ptr = (far rom char *)&rom_array[0];
while (1);
}
FAQ-4 Why is “Warning [2066] type qualifier mismatch in assignment”
being issued?
The libraries distributed with MPLAB C18 are compiled using the large code model
(-ml command-line option). By default, MPLAB IDE and the compiler compile applications
for the small code model. For example, the printf function distributed with the
compiler expects to receive a “const far rom char *”, but the application is
actually sending a “const near rom char *” to the printf function when the large
code model is not selected for the application. This difference between far and near
is causing the “type qualifier mismatch in assignment” warning. To get rid of these
warnings, do one of three things:
1. Recompile the libraries distributed with MPLAB C18 using the small code model
(only recommended if all applications will be using the small code model);
2. Enable the large code model in the IDE for the particular application (may
increase code size); or
3. Cast the constant character string to a constant far rom character pointer, as in:
printf ((const far rom char *)”This is a test\n\r”);
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Аlex »

Учитывая, что я в буржуйском полный "0", твой пост оказался для меня малоинформативен :))
Я так понял, far укладывает данные в RAM ?
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Вопросы по С/С++ (СИ)

Сообщение HHIMERA »

Ну извини... я не думал, что всё настолько плохо....
near и far - квалификаторы ближней и дальней памяти...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Аlex »

всё настолько плохо....
Ну уж не на столько, на сколько ты подумал... :)
Просто не встречался с ними ни разу. Встречусь - разберусь :)
Ответить

Вернуться в «Разные вопросы по МК»