|
|
![]() ![]() |
|
|
![]() ![]() ![]() ![]() |
|
Опции темы | Поиск в этой теме |
![]() |
![]() ![]() |
||
Ветеран Фонарёвки
Регистрация: 25.01.2015 Последняя активность: 16.02.2025 22:50
Сообщений: 1584
Сказал(а) спасибо: 268
Поблагодарили: 509 раз(а) в 322 сообщениях
|
![]()
Теперь возврат в минимум будет работать корректно. Но запоминаться по-прежнему не будет, имхо.
Вместо термистора для термоконтроля поставил просто диод 1N4148. Поскольку Vf кремниевого диода уменьшается примерно на 2 мВ на градус, а цена младшего разряда АЦП составляет приблизительно 4 мВ, то естественно все работает нормально. Чувствительность в 2 градуса здесь вполне достаточна. При изменении напряжения от 3 до 4.2В при постоянной температуре Vf увеличивается примерно на 18 мВ. Для компенсации этого безобразия добавил в прерывание ADC вот такое: Цитата:
Цитата:
Огромное спасибо DooMmen и Tamagotchi за отличную прошивку. [Исправлено: vdavid, 27.01.2015 в 00:20] |
||
![]() |
![]() |
![]() |
![]() ![]() |
животное опасно
Регистрация: 18.11.2014 Последняя активность: 23.02.2022 10:39
Сообщений: 958
Сказал(а) спасибо: 56
Поблагодарили: 153 раз(а) в 129 сообщениях
|
![]() |
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 25.01.2015 Последняя активность: 16.02.2025 22:50
Сообщений: 1584
Сказал(а) спасибо: 268
Поблагодарили: 509 раз(а) в 322 сообщениях
|
![]()
Зачем? Чуть-чуть подправьте в конце процедуры main:
Код:
WriteEEPROMByte(CFG_MOONMODE, 0xFF); ClearNewMode(); // Эту строку уберите #ifdef ONECLICKMOON // Это лишнее, но никому не мешает #ifdef RST_LEV_MOON #ifdef REVERSE_SW // сброс яркости после мунлайта current_mode = 0; #else current_mode = MAX_MODES; #endif #else //добавьте это ClearNewMode(); // и это #endif #endif [Исправлено: vdavid, 27.01.2015 в 11:06] |
![]() |
![]() |
Поблагодарили: 3 раз(а) |
![]() |
![]() ![]() |
животное опасно
Регистрация: 18.11.2014 Последняя активность: 23.02.2022 10:39
Сообщений: 958
Сказал(а) спасибо: 56
Поблагодарили: 153 раз(а) в 129 сообщениях
|
![]()
vdavid, будет сбрасывать в минимум после мунлайта и в случае снизу вверх и сверху вниз и помнить мунлайт?
|
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 25.01.2015 Последняя активность: 16.02.2025 22:50
Сообщений: 1584
Сказал(а) спасибо: 268
Поблагодарили: 509 раз(а) в 322 сообщениях
|
![]()
дядюшка_зуэ, Да должен сбросить в минимум при любых раскладах (в том числе при выходе по одиночному клику) и запомнить. Мунлайт он помнил и до этих правок.
|
![]() |
![]() |
Поблагодарили: 1 раз |
дядюшка_зуэ (27.01.2015)
|
![]() |
![]() ![]() |
животное опасно
Регистрация: 18.11.2014 Последняя активность: 23.02.2022 10:39
Сообщений: 958
Сказал(а) спасибо: 56
Поблагодарили: 153 раз(а) в 129 сообщениях
|
![]()
vdavid, спасибо буду испытывать по вечерам
у меня здесь помнил здесь не помнил только в избранных отлаженных версиях работало |
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 08.10.2011 Последняя активность: 30.03.2024 21:54
Сообщений: 7998
Сказал(а) спасибо: 934
Поблагодарили: 5203 раз(а) в 2785 сообщениях
|
![]()
Так и есть. Эта часть работает как надо.
Еще бы разобраться с выходом из индикации_заряда/стробов (в т.ч. и для их вызова из мунлайта), что-бы возвращалось в режим из которого они вызывались -- вообще замечательно бы стало. |
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25
Сообщений: 3969
Сказал(а) спасибо: 529
Поблагодарили: 921 раз(а) в 628 сообщениях
|
![]()
Нужно после всего попросить Тамагочи закрепить какую-то окончательную версию прошивки в первом посте.
vdavid, вы уже разбирались полностью с этой прошивкой (вариант от DoomMen)? можно там добавить скрытую группу режимов, что б по термоконтролю был плавный сброс 2800-2450-2100-1750-1400-1050? Или добавить сброс максималки по времени (типа турбо режим - 30сек и сброс в средний) |
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 25.01.2015 Последняя активность: 16.02.2025 22:50
Сообщений: 1584
Сказал(а) спасибо: 268
Поблагодарили: 509 раз(а) в 322 сообщениях
|
![]()
MSS, Меня то что есть сейчас почти полностью устраивает. С плавным сбросом от термодатчика в любом случае будут проблемы, поскольку для того, что бы режимы не рухнули вниз при срабатывании термозащиты на каждом переключении порог понижается на единицу вот здесь:
Код:
#ifdef REVERSE_SW if(adch_val < (uint8_t)(MAX_THEMP + current_mode)) // режимы 0 - слабо 3 - сильно #else if(adch_val < (uint8_t)(MAX_THEMP - current_mode)) // режимы 0 - сильно 3 - слабо #endif ЗЫ. Из того что не нравится сейчас - это то, что при переключениях вверх (REVERSE_SW) при срабатывании токовой защиты или высасывателя батарей вниз уже никак не уйти. Разве что через мунлайт с последующим сбросом в минималку, который к счастью заработал как надо. Впрочем на всякий случай сделал сейчас переключение вниз. Не очень нравится мне так, но привыкнуть не проблема, я думаю. ЗЗЫ. Сброс по времени сделать можно элементарно в процедуре std_loop. Вот только надо пробовать сколько оно отъест памяти. [Исправлено: vdavid, 27.01.2015 в 17:14] |
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25
Сообщений: 3969
Сказал(а) спасибо: 529
Поблагодарили: 921 раз(а) в 628 сообщениях
|
![]()
ПИД это круто
![]() Я знаю, что он там понижается. Просто там режимы из линейки, доступной по нажатию кнопки. А я имел ввиду то, что в основной линейке мы выбираем три режима кнопкой (35/700/2800мА). Мы не можем выбрать промежуточных вариантов 1050/1400/1750/2100, но они доступны для сброса программно. Это нужно переделывать программу. Хотя ценность этого может оказаться низкой и весь сброс с 2800 до 700 осуществится за 10 секунд ![]() |
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 25.01.2015 Последняя активность: 16.02.2025 22:50
Сообщений: 1584
Сказал(а) спасибо: 268
Поблагодарили: 509 раз(а) в 322 сообщениях
|
![]()
MSS, Я это понял, но если продолжать действовать как сейчас, то придется понижать на 6 единиц, тогда как сейчас только на 3.
|
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() |
![]()
Давно пора, только описание напишите.
|
![]() |
![]() |
![]() |
![]() ![]() |
|
Участник форума по OpenID
Регистрация: 08.01.2014 Последняя активность: 21.02.2021 00:07
Сообщений: 493
Записей в дневнике: 3 Сказал(а) спасибо: 329
Поблагодарили: 151 раз(а) в 89 сообщениях
|
![]()
Так запоминает или нет? И что именно не запоминает? Режим с памятью или без?
Кажется я понял. Вариант с памятью и сбросом при выходе из мунлайта? Теперь все срослось. vdavid, Спасибо! ![]() Цитата:
В основном в этой прошивке был сделан упор на память режимов, и если её включить - все прекрасно работает, а вот без памяти - возвращаться в предыдущий режим - сложно, но я пытался это сделать, надо код пересмотреть. Что-то мне подсказывает что со всеми хотелками окончательная версия - это нечто недостижимое. Как вариант - ссылка на доработанную мной прошивку постоянна. Немножко привел в порядок процедуру main (чисто визуально), и подправил сохранение (спасибо vdavidу). Прошивка как всегда здесь.
__________________
Скажем нет пиратству! - Качаем только лицензионные диски. |
|
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 25.01.2015 Последняя активность: 16.02.2025 22:50
Сообщений: 1584
Сказал(а) спасибо: 268
Поблагодарили: 509 раз(а) в 322 сообщениях
|
![]()
Я так понял, речь идет о том, что нет возврата в мунлайт в случае, когда он отключается одним кликом после индикации заряда. Понятно почему. Не очень понятно как бороться. Если не будет нервировать, что выход из мунлайта происходит не сразу, а через 250 мс, то можно сделать малой кровью. С другой стороны так можно дойти и до того, что прервав строб индикацией батарей нужно снова вернуться в строб. Как на мой вкус, то я бы ничего не менял, а оставил как есть.
[Исправлено: vdavid, 28.01.2015 в 00:19] |
![]() |
![]() |
![]() |
![]() ![]() |
животное опасно
Регистрация: 18.11.2014 Последняя активность: 23.02.2022 10:39
Сообщений: 958
Сказал(а) спасибо: 56
Поблагодарили: 153 раз(а) в 129 сообщениях
|
![]()
после внесения поправок vdavid из #543 поста все запоминает и корректно работает вход в мунлайт выход из него без выключения фонаря в минимум выход из мунлайта с выключением и последующим включением тоже правильный в минимум
|
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 25.01.2015 Последняя активность: 16.02.2025 22:50
Сообщений: 1584
Сказал(а) спасибо: 268
Поблагодарили: 509 раз(а) в 322 сообщениях
|
![]()
MSS, Для отключения максимального режима по таймеру сделайте следующее.
Если это нужно кому-то еще, можем попросить DooMmenа включить это в его код. Переключение режима не запоминается. При следующем включении снова включимся на максимуме. Если нужно - можно сделать с запоминанием. |
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25
Сообщений: 3969
Сказал(а) спасибо: 529
Поблагодарили: 921 раз(а) в 628 сообщениях
|
![]()
Круто!!!
Конечно нужно это добавить в конструктор прошивки!!! Это супер апгрейд ![]() Уточнение - 30 в коде - это 30 реальных секунд будет или там коэффициент какой нужно учитывать? Вот даже не знаю. Я свои прошиваю вариантом без памяти. Старт режима всегда с минимального. Т.е. после выбора турбо режима он сбросит на предыдущий и при выключении - включится с минимального. Вполне логично, я так думаю. А вот когда вариант с памятью прошивается, то тут нужно подумать. Я бы наверно оставил в памяти средний на который произошел сброс из турбо. [Исправлено: MSS, 29.01.2015 в 23:54] |
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() |
![]()
MSS, Написано же - в секундах. С некоторыми оговорками, конечно.
|
![]() |
![]() |
![]() |
![]() ![]() |
сволочь фонарёвки
Регистрация: 27.05.2011 Последняя активность: Сегодня 18:42
Сообщений: 39998
Сказал(а) спасибо: 6551
Поблагодарили: 35535 раз(а) в 16417 сообщениях
|
![]() |
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 25.01.2015 Последняя активность: 16.02.2025 22:50
Сообщений: 1584
Сказал(а) спасибо: 268
Поблагодарили: 509 раз(а) в 322 сообщениях
|
![]()
galex, WDT настроен на прерывания 1 раз в 250мс. Если счетчик этих прерываний однобайтный, то больше, чем 255/4 не получится. Если нужно больше - можно сделать двухбайтный счетчик, тогда максимальное время будет 16383 с. Или в первом же прерывании перестроить WDT. У него максимальный период 8 с. В этом случае время до 2040 секунд.
Да, в предыдущем сообщении забыл добавить инициализацию prev_mode. Где-то в начале функции main: |
![]() |
![]() |