Не удивлен. Все верно. Легко, а и работает и результаты имеют достаточную точность (и ресурс есть) - отлично.
Старшее поколение видит в этом пробелы ( ). Для меня это тоже не упущение. Оптимизируем, когда нужно (или по какой-то причине). Иначе - как бывает.
veso74, чего Вы пытаетесь от читающей публики добиться? Каждый решает свою задачу как может, универсальности тут не может быть. Не усложняйте
Любая программа начинает писаться от задачи до быстрого достижения поставленной цели, как только результат (цель) будет достигнут, начнется оптимизация, процесс вполне нормальный.
veso74,
Вот. Если заменить "открывать велосипед", на "учиться ездить на велосипеде", будет взляд на процесс под новым углом, возможно более правильным. Открытый код, это да, бесценный клад, и может даже к лучшему, что с гитхаба редко что-то можно скопипастить не включая мозг.
Скрытый текст
"Сторговаться", это значит договориться в цене на базаре (рынке), где торгуют. Используется как "прийти к компромиссу". Это как если сказать "Минималистский код, он в некоторых случаях важен, а в некоторых нет. Вы согласны?", но более живо. Язык у меня формировался на Урале, в простой среде, там за вопрос, - "Здравствуйте, чем занимаетесь?" точно не нальют, нужно делать лицо проще и говорить - "Ко, робите?" А литературный он или разговорный, кто ж его разберет? (:
На фотке Маргарет Хамильтон, которая "слетала" на Луну на несколько дней раньше астронавтов, просто герои должны выглядеть брутально и произносить в нужный момент по телеку, - "И гигантский шаг для человечества". Ну, а рядом с Маргарет стопка с "прошивкой" Аполлона.
ozforester, скопипастить можно, только это не поможет если не разобрать до косточек то, что скопипастили.
Любой язык написания кода это просто инструмент.... понятно, что на готовых решениях можно учится, но каждый учится по разному - один копирует тупо, другой разбирает, мол почему так, а не иначе.
Скрытый текст
Копипащенье, это и не обучение, а скорее верховая езда. К гитхабу "на хромой козе" (: У айтишников раньше был термин "эникийщики".
Готовый, проверенный, стабильный код для энкодера (механического)? (в ATtiny13A). Любимый код "Rotary encoder handler for arduino v1.1, 2011 Ben Buxton" (simple state machine) собирается в память вместе с Si5351, но места для индикатора нет .
Последний раз редактировалось veso74; 30.06.2022 в 21:08.
Спрятал под спойлер, так как до прошивки дело не дошло (:
Скрытый текст
Расчет и загрузка по даташиту регистров целочисленной конфигурацией синтезатора и дробной конфигурацией фапч.
Остальные "поглотители памяти" с говорящими названиями были подтянуты gcc из либ при сборке. Можно найти на гитхабе список рутин gcc для программной плавающей точки (sf) и прочих.Код:$ avr-nm --size-sort math 00000004 T __divsf3 00000004 T __mulsf3 00000006 T __fp_nan 0000000a T __subsf3 0000000c T __fp_inf 0000000e T _Z8twi_initv (инициализация i2c) 0000000e T __fp_pscA 0000000e T __fp_pscB 0000000e T __fp_zero 00000010 T _Z9twi_starth (i2c старт) 00000014 T _Z8twi_stopv (i2c стоп) 0000001c T _Z8load_reghh (загрузка одного регистра по i2c) 00000022 T __fp_round 0000003e T _Z9twi_writeh (i2c отправка байта данных) 00000044 T __fp_split3 00000044 T __udivmodsi4 00000058 T __fixunssfsi 0000007a T __floatunsisf 000000ae T _Z10synth_regsm (вычисление регистров для синтезатора) 000000c0 T __addsf3x 000000cc T __divsf3x 000000d2 T __mulsf3x 00000134 T main (оно и в Африке main) 0000019e T _Z8pll_regsd (вычисление регистров для фапч)
mmcu=attiny13, включен -Og, не принципиально, c -Os -flto будет 1732 байта, I2C на фоне математики ничтожен.Код:$ avr-nm --size-sort math | awk -n '{ sub("0","0x0",$1); sum+=$1;}END{print sum}' 2100
Есть и хорошая новость - мне пока не надо париться с дисплеем и энкодером.
Добрый вечер! Прошу помощи старших Товарищей! Есть два светодиода подключенные к порту микроконтроллера Атмега16, которые должны гореть попеременно один включился другой выключился с заданным интервалом переключения. Для начала сделал на задержке __delay(10000); вроде хорошо работает, но не то. Дальше стал делать функцию которая принимает аргумент и тут затык! Не могу понять как можно в функцию отправить (аргумент) тоетсь временной интервал переключения светодиода. Дайте совет, или пример! Как можно сделать чтобы длительность переключения менять за счет входных параметров в функцию! спасибо! P.S. Вся операция выполняется в прерываний таймера Т1 частота прерывания 1секунда.
Не знаю задача какая: кто-то напишет код для Вас для конкретного задания или Вы сами выясняете, как писать код для действия таймера/функции?
Вариант:
Напишите прерывание на таймере (Т1?) и времени, кратный запрошенному, напp. на 100 ms.
Напишите функция с вх. аргумент -> коэффициент вызванное время, напр. 10 (10 * 100 ms = 1 s) и если счет больше 10, то напр. поднять флаг (и/или действие с LED?).
Я би добавил действия LED-a с флаг: в основной программе следить за флагом и если да -> делаем действие (со LED), убирая флаг после действия.
(Действие должно быть быстрее, чем изменение одной единицы времени, иначе потеряете отчет для время).
В других компиляторах/микроконтроллерах таймер уже построен и считает время (micros(), millis(), get_ticks()...), остается только следить n*t и выполнять задачу.
Последний раз редактировалось veso74; 31.08.2022 в 21:31.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)