Короче подскажите функцию смещения одного бита из числа)
Надо поменять местами 2 бита в числе?
Вот кратко охарактеризовал мою проблемму ,надо 9 бит записать в 15 - как это сделать, чтобы остальное число неменялось)
или точнее надо чтобы 15 бит был такойже как и 9.
//устанавливает бит с номером N в массиве ARR
#define set_bit_by_number(ARR,N) ((ARR)[(N) / 8]|=(1<<((N) % 8)))
//очищает бит с номером N в массиве ARR
#define clear_bit_by_number(ARR,N) ((ARR)[(N) / 8]&=~(1<<((N) % 8)))
...
uint8_t array[10];
...
set_bit_by_number(array,12); //устанавливает двенадцатый бит в массиве; то есть, во втором (12 / 8) байте будет записано 0x10 (пятый бит, 12 % 8)
...
clear_bit_by_number(array,70); //снимает семидесятый бит в массиве; то есть, в восьмом (70 / 8) байте будет снят шестой (70 % 8) бит
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Я правильно понимаю, что если пользоваться «typedef unsigned char u08», то
unsigned char
и
u08
для компилятора всё равно не одно и то же (варнингами ругается на несоответствие типов)?
Проблема в юникоде - русская буква занимает 2 байта. Варианта решения 2: либо включить CP1251 в редакторе (если возможно), либо записывать строки в виде HEX.
Всем привет! У меня один вопрос: "Как уйти от быдлокодинга?"
Надо писать прошивку для контроллера. Пишу на сях. Задействованы два UART, ADC, DAC, PWM (до шести каналов). Проблема в том, что опыта мало. До этого делал всякую мелочь типа термометров, вольтметров и прочей мелочи. Сейчас продумываю структуру программы. Думал заюзать FreeRTOS, но кажется не встанет. У контроллера 16к флешки и 4к срама.
Читал статьи ДиХалта о структуре программ. Решил остановиться идее межзадачного взаимодействия посредством флагового автомата. Естественно всё (в идеале) будет крутиться в прерываниях... . Еще грамотно приоритеты расставить. Но кажется такая структура будет неповоротливая и может рухнуть под собственным весом. Можете посоветовать какую нить статью про структуру программ? Какой структуры придерживаетесь вы, когда работаете над серьёзным проектом?
Chip115 писал(а):Всем привет! У меня один вопрос: "Как уйти от быдлокодинга?"
Если абстрактно, то:
0. Сначала - пишете понятный код - и только потом - оптимизируете (если вообще нужно!!). Не надо переносить в Си стиль написания программ на ассемблере.
1. Пишите понятный код. Если вас разбудить на следующее утро после кодирования, вы должны быть в состоянии ответить что делает случайно взятая строчка из кода. Это значит
а) давайте переменным, функциям и макросам понятные имена
б) если из-за требований получается непонятно, даже после попытки рефакторинга - пишите подробные комментарии
2. Не торопитесь. Делайте программу последовательно, проверяя каждый шаг.
3. Каждая функция должна фокусироваться на строго одной задаче.
4. не забывайте о KISS и DRY.
Какую структуру программы бы вы ни выбрали, всегда можно написать хороший код.
Последний раз редактировалось blackx Вт окт 15, 2013 07:11:24, всего редактировалось 1 раз.
FreeRTOS замечательная вещь. Используем активно, но на контроллере с 512кб флеш и 32кб рам.
Не зная задачи, трудно говорить о необходимости и адекватности использования ОС. И что будет крутиться в прерываниях? В ОС этого как раз я бы избегал. Если речь не идет о драйверной части. Был бы контроллер пожирнее, я бы рекомендовал С++ для большого проекта. Но если нет опыта, все же нужно начинаться с Си.
Все же, чуть конкретнее о задаче и контроллере, тогда можно будет что-то посоветовать
В этом МК, если я не ошибаюсь 128кБ флэш и 8кБ ОЗУ. Звучали другие цифры ранее На этом МК вполне можно запустить freertos.
PS: А о проекте так и не сказали. Клещами тащить надо ?
Но в общем-то, дело хозяйское
Доброго времени суток, господа!
Тут такое дело. Хочется заюзать printf для вывода отладочной инфы й UART.
Так вот он работает только с настройками формата printf Tyny, выводя целые числа. Как мне заставить работать printf в формате Full, что бы вывести не целое число?
При других настройках формата выводится только первый символ.
Вот код для отладки отладочной функциональности О_о Замеряю напругу на входе АЦП и хочу вывести величину измеренного напряжения в UART.
Среда разработки IAR 6.40.2
Камень: STM32F100C4T6B
кто ж придирался то. В двух верхних постах присутствует слово "может" - это вводное слово, указывает на вероятность события вероятно, по-видимому. Насчет printf мне интересно, когда то начинал с LPC2101 возиться - применил printf, то отгрызло чуть ли не пол памяти, а как сейчас - может лучше стало. Интересно какой компилятор.