| 
 | 
		
			
  | ||||||||
  
  
	 | 
	
  | 
| 
		 | 
  404952  
  837  
  28  
  11
 | 
            
 | 
Опции темы | Поиск в этой теме | 
| 
			
			 | 
		
			 
			
 
541
 
			
		 | 
	
||
| 
			 
			 Ветеран Фонарёвки 
			
 
			
			
  
			Регистрация: 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]  | 
||
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		
			 
			
 
542
 
			
		 | 
	
| 
			 
			 животное опасно 
			
 
			
			
				
			
  
			Регистрация: 18.11.2014 Последняя активность: 23.02.2022 10:39 
					Сообщений: 958
 Сказал(а) спасибо: 56 
		
			
				Поблагодарили: 153 раз(а) в 129 сообщениях
			
		
	  | 
	
	
	
		
              
			 | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		
			 
			
 
543
 
			
		 | 
	
| 
			 
			 Ветеран Фонарёвки 
			
 
			
			
  
			Регистрация: 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 раз(а) | 
| 
			
			 | 
		
			 
			
 
544
 
			
		 | 
	
| 
			 
			 животное опасно 
			
 
			
			
				
			
  
			Регистрация: 18.11.2014 Последняя активность: 23.02.2022 10:39 
					Сообщений: 958
 Сказал(а) спасибо: 56 
		
			
				Поблагодарили: 153 раз(а) в 129 сообщениях
			
		
	  | 
	
	
	
		
              
			 
			
			vdavid, будет сбрасывать в минимум после мунлайта и в случае снизу вверх и сверху вниз и помнить мунлайт?
		 
		
		
		
		
		
		
		
	 | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		
			 
			
 
545
 
			
		 | 
	
| 
			 
			 Ветеран Фонарёвки 
			
 
			
			
  
			Регистрация: 25.01.2015 Последняя активность: 16.02.2025 22:50 
					Сообщений: 1584
 Сказал(а) спасибо: 268 
		
			
				Поблагодарили: 509 раз(а) в 322 сообщениях
			
		
	  | 
	
	
	
		
              
			 
			
			дядюшка_зуэ, Да должен сбросить в минимум при любых раскладах (в том числе при выходе по одиночному клику) и запомнить. Мунлайт он помнил и до этих правок.
		 
		
		
		
		
		
		
		
	 | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| Поблагодарили: 1 раз | 
			 дядюшка_зуэ (27.01.2015) 
			
		 | 
		
| 
			
			 | 
		
			 
			
 
546
 
			
		 | 
	
| 
			 
			 животное опасно 
			
 
			
			
				
			
  
			Регистрация: 18.11.2014 Последняя активность: 23.02.2022 10:39 
					Сообщений: 958
 Сказал(а) спасибо: 56 
		
			
				Поблагодарили: 153 раз(а) в 129 сообщениях
			
		
	  | 
	
	
	
		
              
			 
			
			vdavid, спасибо буду испытывать по вечерам 
		
		
		
		
		
		
		
	у меня здесь помнил здесь не помнил только в избранных отлаженных версиях работало  | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		
			 
			
 
547
 
			
		 | 
	
| 
			 
			 Ветеран Фонарёвки 
			
 
			
			
				
			
  
			Регистрация: 08.10.2011 Последняя активность: 30.03.2024 21:54 
					Сообщений: 7998
 Сказал(а) спасибо: 934 
		
			
				Поблагодарили: 5204 раз(а) в 2785 сообщениях
			
		
	  | 
	
	
	
		
              
			 
			
			Так и есть. Эта часть работает как надо. 
		
		
		
		
		
		
		
	Еще бы разобраться с выходом из индикации_заряда/стробов (в т.ч. и для их вызова из мунлайта), что-бы возвращалось в режим из которого они вызывались -- вообще замечательно бы стало.  | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		
			 
			
 
548
 
			
		 | 
	
| 
			 
			 Ветеран Фонарёвки 
			
 
			
			
				
			
  
			Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 
					Сообщений: 3969
 Сказал(а) спасибо: 529 
		
			
				Поблагодарили: 921 раз(а) в 628 сообщениях
			
		
	  | 
	
	
	
		
              
			 
			
			Нужно после всего попросить Тамагочи закрепить какую-то окончательную версию прошивки в первом посте. 
		
		
		
		
		
		
		
	vdavid, вы уже разбирались полностью с этой прошивкой (вариант от DoomMen)? можно там добавить скрытую группу режимов, что б по термоконтролю был плавный сброс 2800-2450-2100-1750-1400-1050? Или добавить сброс максималки по времени (типа турбо режим - 30сек и сброс в средний)  | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		
			 
			
 
549
 
			
		 | 
	
| 
			 
			 Ветеран Фонарёвки 
			
 
			
			
  
			Регистрация: 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]  | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		
			 
			
 
550
 
			
		 | 
	
| 
			 
			 Ветеран Фонарёвки 
			
 
			
			
				
			
  
			Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 
					Сообщений: 3969
 Сказал(а) спасибо: 529 
		
			
				Поблагодарили: 921 раз(а) в 628 сообщениях
			
		
	  | 
	
	
	
		
              
			 
			
			ПИД это круто  
		
		
		
		
		
		
		
	![]() Я знаю, что он там понижается. Просто там режимы из линейки, доступной по нажатию кнопки. А я имел ввиду то, что в основной линейке мы выбираем три режима кнопкой (35/700/2800мА). Мы не можем выбрать промежуточных вариантов 1050/1400/1750/2100, но они доступны для сброса программно. Это нужно переделывать программу. Хотя ценность этого может оказаться низкой и весь сброс с 2800 до 700 осуществится за 10 секунд  
		 | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		
			 
			
 
551
 
			
		 | 
	
| 
			 
			 Ветеран Фонарёвки 
			
 
			
			
  
			Регистрация: 25.01.2015 Последняя активность: 16.02.2025 22:50 
					Сообщений: 1584
 Сказал(а) спасибо: 268 
		
			
				Поблагодарили: 509 раз(а) в 322 сообщениях
			
		
	  | 
	
	
	
		
              
			 
			
			MSS, Я это понял, но если продолжать действовать как сейчас, то придется понижать на 6 единиц, тогда как сейчас только на 3.
		 
		
		
		
		
		
		
		
	 | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
			
			 
			
			
		 | 
		
			 
			
 
552
 
			
		 | 
	
			 
			![]()  | 
	
	
	
		
              
			 
			
			Давно пора, только описание напишите.
		 
		
		
		
		
		
		
			
		
		
		
		
	 | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		
			 
			
 
553
 
			
		 | 
	
|
| 
			 
			 Участник форума по OpenID 
			
 
			
			
				
			
  
			Регистрация: 08.01.2014 Последняя активность: 21.02.2021 00:07 
					Сообщений: 493
 Записей в дневнике: 3 Сказал(а) спасибо: 329 
		
			
				Поблагодарили: 151 раз(а) в 89 сообщениях
			
		
	  | 
	
	
	
		
              
			 
			
			Так запоминает или нет? И что именно не запоминает? Режим с памятью или без? 
		
		
		
		
		
		
			Кажется я понял. Вариант с памятью и сбросом при выходе из мунлайта? Теперь все срослось. vdavid, Спасибо! ![]() Цитата: 
	В основном в этой прошивке был сделан упор на память режимов, и если её включить - все прекрасно работает, а вот без памяти - возвращаться в предыдущий режим - сложно, но я пытался это сделать, надо код пересмотреть. Что-то мне подсказывает что со всеми хотелками окончательная версия - это нечто недостижимое. Как вариант - ссылка на доработанную мной прошивку постоянна. Немножко привел в порядок процедуру main (чисто визуально), и подправил сохранение (спасибо vdavidу). Прошивка как всегда здесь. 
				__________________ 
		
		
		
		
	Скажем нет пиратству! - Качаем только лицензионные диски.  | 
|
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		
			 
			
 
554
 
			
		 | 
	
| 
			 
			 Ветеран Фонарёвки 
			
 
			
			
  
			Регистрация: 25.01.2015 Последняя активность: 16.02.2025 22:50 
					Сообщений: 1584
 Сказал(а) спасибо: 268 
		
			
				Поблагодарили: 509 раз(а) в 322 сообщениях
			
		
	  | 
	
	
	
		
              
			 
			
			Я так понял, речь идет о том, что нет возврата в мунлайт в случае, когда он отключается одним кликом после индикации заряда. Понятно почему. Не очень понятно как бороться. Если не будет нервировать, что выход из мунлайта происходит не сразу, а через 250 мс, то можно сделать малой кровью. С другой стороны так можно дойти и до того, что прервав строб индикацией батарей нужно снова вернуться в строб. Как на мой вкус, то я бы ничего не менял, а оставил как есть.
		 
		
		
		
		
		
		
		
		
			[Исправлено: vdavid, 28.01.2015 в 00:19]  | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		
			 
			
 
555
 
			
		 | 
	
| 
			 
			 животное опасно 
			
 
			
			
				
			
  
			Регистрация: 18.11.2014 Последняя активность: 23.02.2022 10:39 
					Сообщений: 958
 Сказал(а) спасибо: 56 
		
			
				Поблагодарили: 153 раз(а) в 129 сообщениях
			
		
	  | 
	
	
	
		
              
			 
			
			после внесения поправок vdavid из #543 поста все запоминает и корректно работает вход в мунлайт выход из него без выключения фонаря в минимум выход из мунлайта с выключением и последующим включением тоже правильный в минимум
		 
		
		
		
		
		
		
		
	 | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		
			 
			
 
556
 
			
		 | 
	
| 
			 
			 Ветеран Фонарёвки 
			
 
			
			
  
			Регистрация: 25.01.2015 Последняя активность: 16.02.2025 22:50 
					Сообщений: 1584
 Сказал(а) спасибо: 268 
		
			
				Поблагодарили: 509 раз(а) в 322 сообщениях
			
		
	  | 
	
	
	
		
              
			 
			
			MSS, Для отключения максимального режима по таймеру сделайте следующее. 
		
		
		
		
		
		
		
	Если это нужно кому-то еще, можем попросить DooMmenа включить это в его код. Переключение режима не запоминается. При следующем включении снова включимся на максимуме. Если нужно - можно сделать с запоминанием.  | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		
			 
			
 
557
 
			
		 | 
	
| 
			 
			 Ветеран Фонарёвки 
			
 
			
			
				
			
  
			Регистрация: 28.04.2013 Последняя активность: 08.01.2024 23:25 
					Сообщений: 3969
 Сказал(а) спасибо: 529 
		
			
				Поблагодарили: 921 раз(а) в 628 сообщениях
			
		
	  | 
	
	
	
		
              
			 
			
			Круто!!! 
		
		
		
		
		
		
		
		
			Конечно нужно это добавить в конструктор прошивки!!! Это супер апгрейд   тем более можно самому задать время.Уточнение - 30 в коде - это 30 реальных секунд будет или там коэффициент какой нужно учитывать? Вот даже не знаю. Я свои прошиваю вариантом без памяти. Старт режима всегда с минимального. Т.е. после выбора турбо режима он сбросит на предыдущий и при выключении - включится с минимального. Вполне логично, я так думаю. А вот когда вариант с памятью прошивается, то тут нужно подумать. Я бы наверно оставил в памяти средний на который произошел сброс из турбо. [Исправлено: MSS, 29.01.2015 в 23:54]  | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
			
			 
			
			
		 | 
		
			 
			
 
558
 
			
		 | 
	
			 
			![]()  | 
	
	
	
		
              
			 
			
			MSS, Написано же - в секундах. С некоторыми оговорками, конечно.
		 
		
		
		
		
		
		
		
	 | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		
			 
			
 
559
 
			
		 | 
	
| 
			 
			 сволочь фонарёвки 
			
 
			
			
  
			Регистрация: 27.05.2011 Последняя активность: Сегодня 14:25 
					Сообщений: 40363
 Сказал(а) спасибо: 6672 
		
			
				Поблагодарили: 36054 раз(а) в 16655 сообщениях
			
		
	  | 
	
	
	
		
              
			 | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 | 
| 
			
			 | 
		
			 
			
 
560
 
			
		 | 
	
| 
			 
			 Ветеран Фонарёвки 
			
 
			
			
  
			Регистрация: 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:  | 
| 
  
		 | 
	
	
	
		
		
		
		
		
		
		
		
		
		
			
		
		  
		
	 |