А у меня sprintf() сожрало больше килобайта (!) флэш-памяти
А так и должно быть. Даже за два может перевалить, если полная поддержка всех форматов сделана. Стека — зависит от реализации, в avr-gcc он есть байт двадцать в варианте без плавающих форматов и байт сорок с плавающими.
*printf по сути интерпретаторы простого языка управления выводом. Если они используются только с форматными строками вида "%d", а место во флеше жмёт, то лучше itoa() использовать или вообще вручную. *printf становятся интересными когда кило-два флеша не жалко, чтобы позволить себе писать
put_str( "foo = " ); put_int( var1 ); // да, тут ещё надо как-то объяснить, что короткие числа надо дополнять до 5 знаков пробелами put_str( " (" ); put_hex( var1 ); // а тут нужно вывести старшие незначащие нули до ширины поля 4 знака put_str( "), moo = " ); put_int( var2 ); // а тут пробелами дополнять не надо, но если число положительное, то перед ним тоже надо знак нарисовать put_char( 'V');
Я уже не говорю про
Код:
int a; printf( "%*c", a, 'I');
которое означает приблизительно
Код:
if( a > 0 ) { int b = a; // a ещё будет нужно ниже do put_char( ' ' ); while( --b); } put_char( 'I' ); if( a < 0 ) { do put_char( ' ' ); while( ++a); }
Да, не всегда нужно аж такое, но программируемую ширину поля вывода я иногда использую
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19693 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Maximka_18 писал(а):
А мне кто нить поможет?
А зачем?
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Код приведён не полностью. Стиль хороший, читабельный. Прерывание по переполнению таймера задействовано. Присутствует излишество в описании типов переменных, но это не портит общее восприятие программы.
Много магических чисел. Что такое 40? А 200? Нужно определить константы типа MIN_SPEED и т.д. Ну и очень круто написано вот это "0x000000001 << scan_idx" Почему не "1 << scan_idx"?
Много магических чисел. Что такое 40? А 200? Нужно определить константы типа MIN_SPEED и т.д. Ну и очень круто написано вот это "0x000000001 << scan_idx" Почему не "1 << scan_idx"?
вот поэтому я и жду комментариев, чтобы понять что лишнее. Спасибо)
Много магических чисел. Что такое 40? А 200? Нужно определить константы типа MIN_SPEED и т.д. Ну и очень круто написано вот это "0x000000001 << scan_idx" Почему не "1 << scan_idx"?
вот поэтому я и жду комментариев, чтобы понять что лишнее. Спасибо)
если подключаете interrupt.h, то signal.h подключать не надо. более того, макрос SIGNAL "снаят с производства" и рекомендуется использовние макроса ISR. все "сигналы" - устаревшее, сохранено только для совместимости со старыми проектами
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
uint8_t New; //есть переменная uint8_t Data; New = PINB & 0x03; //известно что будут приниматься байты 0х01, 0х10,0х11,0х00 for (i=0;i<=3;i++) { Data = ? ; //как зделать так чтоб значение data было в таком виде 0b01101100 или в 0x6C }
_________________ Мастер на все руки, кручу, кручу, кручу и матерюсь Повелитель паяльной станции, лома, и пинцета!!!
Что делать с ????? Fatal Error[Pe035]: #error directive: "Endianess undefined! Please define LITTLE_ENDIAN=1 or BIG_ENDIAN=1." S:\WORK\MicroSD_FAT_XMEGA128A3_USART_CP2102_USB\MSDFXUCU_002_port_sd_raw\byteordering.h 69.
(про прямой и обратный порядок данных я понял). ТАК КАКОЙ выбрать LITTLE_ENDIAN=1 or BIG_ENDIAN=1??
shurikss123 Тип переменой какой ???? Если int32 вам читать про LITTLE_ENDIAN=1 or BIG_ENDIAN=1.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения