|
|
![]() ![]() |
|
![]() ![]() ![]() ![]() |
|
Опции темы | Поиск в этой теме |
![]() ![]() |
![]() ![]() |
Новичок
Регистрация: 01.09.2013 Последняя активность: 07.04.2014 14:27
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили: 2 раз(а) в 1 сообщении
|
![]()
Привет, фонарёвка.
![]() Возможно, это уже где-то было, но я с самого начала хотел сделать прошивку сам. Итак, суть: при включении фонарь плавно загорается, постепенно включая всё больше стабилизаторов(1,2,3,4,5,6,7, ![]() При этом: на токе до 700 ма ШИМ не будет выключен, чтобы можно было оставить очень низкий уровень света. Как это сделано: Блок стабилизаторов разрезан на блоки по 4+2+1+1(ШИМ). Каждый блок управляется отдельной ножкой контроллера. Один блок управляется ШИМ. Так я могу включать произвольное число стабилизаторов. Как подключать блоки: Тут три разреза, обозначены черно-красной полосой, и три перемычки, обозначены синим. По ножкам: К ШИМ-1блоку цепляем PB0. К 1блоку цепляем PB4. К 2блоку цепляем PB3. К 4блоку уже подцеплена PB1. (Картинка во вложениях) Проблемы: Я никогда не писал на чистом C и код получился явно неоптимальным. Поэтому мне пришлось выкинуть из фонаря всё, кроме светилки. То есть никакой индикации батарейки, контроля температурой. Это всё попросту не помещается в память. Плюс активно используется eeprom-память. Писалось-собиралось всё в avr студии5, для прошивки использовалась arduino nano. Планирую в будущем улучшить прошивку, но не сейчас. В архиве проект для студии. Пароль к архиву fonarevka_sh. |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
||
сволочь фонарёвки
Регистрация: 27.05.2011 Последняя активность: Сегодня 00:36
Сообщений: 40141
Сказал(а) спасибо: 6591
Поблагодарили: 35728 раз(а) в 16506 сообщениях
|
![]()
угу. было. смотрю исходники - что-то знакомое больно. дефайны, значения, и, особенно комментарии.
потом в шапку заглянул: "Author: Tamagotchi http://tamagotchi-007.livejournal.com/" ![]() вообще-то хорошим тоном считается указывать на чьей базе сделана прошивка. Цитата:
Цитата:
может такое где и нужно, но для большинства применений удобнее обратный алгоритмм - включение на выбранной яркости, а по короткому клику (хотя бы) - рампинг с запоминанием. |
||
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
Новичок
Регистрация: 01.09.2013 Последняя активность: 07.04.2014 14:27
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили: 2 раз(а) в 1 сообщении
|
![]()
galex, Черт. Действительно забыл упомянуть, что использовал код тамагочи как опорный. Настолько боялся забыть это сделать, что забыл.
![]() Да, пожалуй. Просто я очень не люблю, когда после темноты в помещении вдруг появляется источник в 10ватт. Плюс, бывает необходимость включить ночью в машине фонарь. А водители не любят яркий свет в салоне. ![]() Вообще, это был чистый эксперимент. Я в первый раз имел дело со всем этим, поэтому особо не думал. Хотелось за выходные получить результат. Думаю убрать плавность, сделать ступенчатый рампинг стабилизаторами, попытаться докрутить внешнюю кнопку для переключения(а лучше - геркона). Но пока не читал теории - я пишу слишком неоптимальный код. Это всё не поместится. |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
![]() |
![]()
Это на основе старой версии. Там код не оптимален. Самая заоптимизированная версия у меня 2.0 потом я расслабился
![]() |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
![]() |
![]()
И ошибки все мои остались.
ADCSRA &=~ (0<<ADIE | (0<<ADSC)); вот это не правильно |
![]() |
![]() ![]() |
![]() ![]() |
![]() ![]() |
Новичок
Регистрация: 01.09.2013 Последняя активность: 07.04.2014 14:27
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили: 2 раз(а) в 1 сообщении
|
![]()
Tamagotchi, каюсь, хотелось, чтобы засветилось как можно быстрее, в вопрос не углублялся.
![]() Для меня это вообще было ужасом. Маленький пример: я пару часов искал баг - фонарь не сохранял состояние; оказалось, я забыл return в функции возврата запомненного режима. Уже сильно привычный мне C# такого бы никогда не позволил... |
![]() |
![]() ![]() |
![]() |
![]() ![]() |
![]() |
![]()
Sht3ch,
Контроль кода тут никакой. Я однажды забыл поместить объявление функции в ххх.h подключил это include xxx.h вызвал функцию, которую забыл не объявить, и ЭТО СКОМПИЛИЛОСЬ!!! Не работало (куда он вообще вызов сделал?) и я этот баг пару часов искал. А потом ВДРУГ перестало компилиться ![]() |
![]() |
![]() ![]() |