|
|
![]() ![]() |
|
|
![]() ![]() ![]() ![]() |
|
Опции темы | Поиск в этой теме |
![]() ![]() |
![]() ![]() |
Увлеченный
Регистрация: 29.04.2015 Последняя активность: 06.05.2018 12:38 Адрес: Краснодар
Сообщений: 117
Сказал(а) спасибо: 27
Поблагодарили: 5 раз(а) в 4 сообщениях
|
![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 09.05.2016 Последняя активность: 31.10.2020 16:52 Адрес: Новосибирск
Сообщений: 2339
Сказал(а) спасибо: 78
Поблагодарили: 919 раз(а) в 607 сообщениях
|
![]()
Ну, хотя бы полгода он же ж должен светить...
|
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
Увлеченный
Регистрация: 29.04.2015 Последняя активность: 06.05.2018 12:38 Адрес: Краснодар
Сообщений: 117
Сказал(а) спасибо: 27
Поблагодарили: 5 раз(а) в 4 сообщениях
|
![]()
А сколько Тамагочевская прошивка тянет? Там moon_loop() на delay_ms(1) зациклен...
Кстати, кто-нибудь "для себя" менял задержки на WDT+sleep_cpu? И наблюдение: использование sleep_cpu() в ней это самообман, поскольку АЦП настроен на непрерывное измерение и его прерывание_по_готовности срабатывает с частотой в несколько КГц. Какой уж тут сон?! |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
сволочь фонарёвки
Регистрация: 27.05.2011 Последняя активность: Сегодня 22:10 Адрес: Россия, Пермский край
Сообщений: 38302
Сказал(а) спасибо: 5968
Поблагодарили: 32877 раз(а) в 15248 сообщениях
|
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
Увлеченный
Регистрация: 29.04.2015 Последняя активность: 06.05.2018 12:38 Адрес: Краснодар
Сообщений: 117
Сказал(а) спасибо: 27
Поблагодарили: 5 раз(а) в 4 сообщениях
|
![]()
Я имел в виду "сколько светит в мунлайте, в неделях, месяцах?"
|
![]() |
![]() ![]() |
![]() |
![]() ![]() |
сволочь фонарёвки
Регистрация: 27.05.2011 Последняя активность: Сегодня 22:10 Адрес: Россия, Пермский край
Сообщений: 38302
Сказал(а) спасибо: 5968
Поблагодарили: 32877 раз(а) в 15248 сообщениях
|
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
Увлеченный
Регистрация: 29.04.2015 Последняя активность: 06.05.2018 12:38 Адрес: Краснодар
Сообщений: 117
Сказал(а) спасибо: 27
Поблагодарили: 5 раз(а) в 4 сообщениях
|
![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
сволочь фонарёвки
Регистрация: 27.05.2011 Последняя активность: Сегодня 22:10 Адрес: Россия, Пермский край
Сообщений: 38302
Сказал(а) спасибо: 5968
Поблагодарили: 32877 раз(а) в 15248 сообщениях
|
![]()
практические цифры за счет какой НЕХ должны отличаться от расчетных , с погрешностью, достойной внимания?
за все время существования форума лишь один человек сподобился измерить рантайм мунлайта зебры. а вы хотите чтобы кто-то заморачивался с перепрошитым конвоем? да и какая ценность такого опыта будет без привязки к току, а на такой скважности ток, измеренный обычным мультиметрои и трурмс уже существенно отличается, емнип. |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
|
Ветеран Фонарёвки
Регистрация: 08.10.2011 Последняя активность: 30.03.2024 21:54 Адрес: 哈尔滨
Сообщений: 8013
Сказал(а) спасибо: 934
Поблагодарили: 5193 раз(а) в 2784 сообщениях
|
![]() Цитата:
В чем обман? |
|
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
Увлеченный
Регистрация: 29.04.2015 Последняя активность: 06.05.2018 12:38 Адрес: Краснодар
Сообщений: 117
Сказал(а) спасибо: 27
Поблагодарили: 5 раз(а) в 4 сообщениях
|
![]()
КПД энергосбережения получается низкий, поскольку измерения будят процессор каждые несколько десятков тактов.
Вот здесь Код:
static INLINE void moon_loop(void) // MOONMODE { mode_saver = 0xAA; OCR0A = ramping_reg; #ifndef FREQMOON_OFF cpu_div(); #endif while(1) { sleep_cpu(); if (IsOffMode()) pwr_down(); delay_ms(1); } } |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 08.10.2011 Последняя активность: 30.03.2024 21:54 Адрес: 哈尔滨
Сообщений: 8013
Сказал(а) спасибо: 934
Поблагодарили: 5193 раз(а) в 2784 сообщениях
|
![]() |
![]() |
![]() ![]() |
Поблагодарили: 1 раз |
Corvax (27.12.2016)
|
![]() ![]() |
![]() ![]() |
Увлеченный
Регистрация: 29.04.2015 Последняя активность: 06.05.2018 12:38 Адрес: Краснодар
Сообщений: 117
Сказал(а) спасибо: 27
Поблагодарили: 5 раз(а) в 4 сообщениях
|
![]()
ceramic, понятно, всё еще хуже чем я думал)
В Power-down и ШИМ отключится |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 08.10.2011 Последняя активность: 30.03.2024 21:54 Адрес: 哈尔滨
Сообщений: 8013
Сказал(а) спасибо: 934
Поблагодарили: 5193 раз(а) в 2784 сообщениях
|
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
Увлеченный
Регистрация: 29.04.2015 Последняя активность: 06.05.2018 12:38 Адрес: Краснодар
Сообщений: 117
Сказал(а) спасибо: 27
Поблагодарили: 5 раз(а) в 4 сообщениях
|
![]() Код:
7.1.3 Power-down Mode When the SM[1:0] bits are written to 10, the SLEEP instruction makes the MCU enter Powerdown mode. In this mode, the Oscillator is stopped, while the external interrupts, and the Watchdog continue operating (if enabled). Only an External Reset, a Watchdog Reset, a Brown-out Reset, an external level interrupt on INT0, or a pin change interrupt can wake up the MCU. This sleep mode halts all generated clocks, allowing operation of asynchronous modules only. Код:
12.1 Overview The Timer/Counter can be clocked directly by the system clock (by setting the CSn[2:0] = 1). This provides the fastest operation, with a maximum Timer/Counter clock frequency equal to system clock frequency (fCLK_I/O). Alternatively, one of four taps from the prescaler can be used as a clock source. The prescaled clock has a frequency of either fCLK_I/O/8, fCLK_I/O/64, fCLK_I/O/256, or fCLK_I/O/1024. А вот проверить экспериментально еще не довелось... |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 31.07.2013 Последняя активность: 04.04.2024 09:50 Адрес: Великий Новгород
Сообщений: 2741
Сказал(а) спасибо: 1208
Поблагодарили: 597 раз(а) в 505 сообщениях
|
![]()
Какая хорошая тема! Столько деталей проясняются, которые с наскоку не очевидны.
|
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
Увлеченный
Регистрация: 29.04.2015 Последняя активность: 06.05.2018 12:38 Адрес: Краснодар
Сообщений: 117
Сказал(а) спасибо: 27
Поблагодарили: 5 раз(а) в 4 сообщениях
|
![]()
С Новым Годом всех!
По случаю каникул плодотворно "кодю и шью", хочу поделиться результатами. Заменил ветвление по switch процедурными указателями для алгоритмов и обработчиков нажатий, получилось компактнее. Протестировал на макете оба своих алгоритма рампинга (по приращению и сдвиговый) - оба практически непригодны! Первый "замирает" в незаметных приращениях на большой яркости, второй слишком грубый и быстрый. Покумекал и родил нечто усредненное - весь доступный диапазон значений разбил на 6 зон с индивидуальными значениями приращения. TOP не трогал, изменяется только коэфф. заполнения. Код:
static void AlgRampingPWM(void) { while (1) { // выход из цикла - прерыванием питания word level = 1; // начальное значение к.з. ШИМ byte step = 1; // 1, 2, 4, 8, 16, 32 word limit = 8; // 8, 16, 32, 64, 128, 256 // steps count 8, 4, 4, 4, 4, 4 do { do { LightDescr.pwmLevel = level; // служебная структура-описатель яркости ApplyLightDescr(); // процедура задания яркости WaitMS(RAMPING_DELAY); // задержка level += step; } while (level < limit); step *= 2; limit *= 2; } while (limit <= 256); LightDescr.pwmLevel = 255; ApplyLightDescr(); WaitMS(3*RAMPING_DELAY); // светим на максимуме подольше, чтобы заметить остановку и сохранить при желании } } ![]() При этом в самом начале, как вы можете заметить, 8 первых шагов идет приращение по единице, что при RAMPING_DELAY = 250 мс позволяет выбрать яркость и для мунлайта. Радует, что все получилось алгоритмически, без применения массивов глобальных переменных. (Первая версия этого алгоритма базировалась на табличке и была безжалостно отвергнута ![]() На очереди "приручение" TOP для "приращения на 10-20%". |
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
Увлеченный
Регистрация: 29.04.2015 Последняя активность: 06.05.2018 12:38 Адрес: Краснодар
Сообщений: 117
Сказал(а) спасибо: 27
Поблагодарили: 5 раз(а) в 4 сообщениях
|
![]() Цитата:
Приглашаю к дискуссии всех! Моя позиция: 1. Рассудительная: - перегрев чувствуется раньше чем наступает - зачем термоконтроль? - падение яркости при выходе из режима стабилизации заметно глазом - зачем Система Ступенчатых Порогов? (не видите падения яркости? радуйтесь! ![]() - при отключении фонаря Сберегателем Батареи из-за критического падения напряжения в мощных режимах можно включить фонарь в слабом режиме - зачем Высасыватель батареи (ступенчатое снижение яркости)? Пример: я включил фонарь в 3-м режиме. Он должен светить? Пусть светит! Перестанет мочь - выключится. Если я замечу, что он стал светить слабее - сменю режим на меньший (переключение вверх и вниз по карусели режимов - базовый функционал), если сам решу! Если фонарик отключится, не выдержав быстрого разряда на мощном режиме - можно включить первый (обычно самый слабый) режим из карусели. Плюс доступен функционал прямого включения режимов, если вдруг в карусели режимы по убыванию расположены. Аналогия: застрял полноприводный паркетник в грязи, буксует... Вискомуфта отключится, когда сама решит (по перегреву), а не когда Вы ее выключите за ненадобностью. Вам нравится? Я категорически против! Я за честный полный привод: сам включил, сам выключу (когда на гравийку выеду)... 2. Алгоритмическая: Моя прошивка придает фонарю такие свойства, как: - возможность "прописать" (задать) яркости, для дальнейшего использования - конфигурировать для каждого режима все параметры: яркость, алгоритм свечения, параметры свечения, контекстный список обработчиков кликов - наличие "карусели" режимов, составленной в выбранном вами порядке. И их может быть сколько захотите. - использование разнообразных команд (обработчиков кликов): прямой вызов режима, работа с каруселью, сервисные... Обратная сторона - она плохо стыкуется с опциями самостоятельного переключения режимов (типа ССП и "высасывателя"). Эти опции базируются на предпосылке, что в любой момент времени фонарь находится в каком-то из режимов, расположенных в отсортированном одномерном массиве, и достаточно изменить индекс текущего режима на +/- 1, "и дело в шляпе". Присутствие в моем случае и других состояний, исключает этот подход. Прийдя к необходимости выбирать, я (для себя) выбрал многорежимность, моного-карусельность и контекстные обработчики. Компромисс - возможность использования ССП и высасывателя при выполнении пользователем всех условий: отсортированные режимы только постоянного свечения в единственной карусели и добровольный отказ от алгоритмических режимов. Кому такое будет интересно? Прошу учесть, что я не считаю фонарь с силовой кнопкой в чём-то ущербным по сравнению с тактовой. У тактовой всего лишь больше видов нажатий, а фонарь "силён" функционалом. |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 31.07.2013 Последняя активность: 04.04.2024 09:50 Адрес: Великий Новгород
Сообщений: 2741
Сказал(а) спасибо: 1208
Поблагодарили: 597 раз(а) в 505 сообщениях
|
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
Увлеченный
Регистрация: 29.04.2015 Последняя активность: 06.05.2018 12:38 Адрес: Краснодар
Сообщений: 117
Сказал(а) спасибо: 27
Поблагодарили: 5 раз(а) в 4 сообщениях
|
![]()
Corvax, основное есть.
На разводке стандартного драйвера оттестировано: яркости, алгоритмы, режимы, карусели, основные методы-обработчики, таблицы обработчиков. Пользовательские режимы в полном объеме работоспособны: уровни, пара алгоритмов рампинга, режимы, вход в рампинг и выход с сохранением уровня. (конечно, нет предела совершенству) Написано, но не оттестировано: команды отображения напряжения, ограничитель разряда, индикация разряженности, работа с настройками, работа с UI и несколькими UI. Исходники: https://cloud.mail.ru/publi... Выложил в текущей конфигурации, нацеленной на тестирование команд отображения напряжения. Если не убоитесь повозиться с (рас-)комментированием дефайнов и есть оригинальный nanjg - легко получите рабочую прошивку. Планы: остальные разводки, ?(термоконтроль на ATtiny45), адаптация к тактовой кнопке. [Исправлено: LJek, 13.01.2017 в 16:55] Причина: правки |
![]() |
![]() ![]() |
Поблагодарили: 1 раз |
Ходэн (17.01.2017)
|