Да про объем кода это понятно, что небольшой. Динамический опрос кнопок (в данном случае) может повлиять на точность (не сильно но все-же). В общем посмотрим что "заказчик" решит.
ну вы меня прям запутали я же ламер в МК, сложно рассуждать. собрать - не проблема, прошить атини или мегу - тоже. а вот рассуждать о преимуществе - это уже не мое...
опытный образец однозначно на макетке, разводку уже потом (если конечно временный вариант на станет постоянным, как это часто бывает в случае успеха...). индикатор... пусть тот же что упоминается и раньше в исходной схеме. все-равно я его не покупал еще...
п.с. цена не критична, если речь не идет о суммах больше 30 баксов за чип...
Очень заманчиво потому что очень просто надо попробовать... по идее на час работы сборка на коленке
Когда соберете отпишитесь, будем код к этому всему приделывать, тот что предложен дорабатывать сложно (как впрочем и разбираться в нем). Хотя я Вам рекомендую все-таки закладываться на схему с большими возможностями - особенно если собираетесь отображать два круга и какие-то еще плюшки хотите. Впрочем если вы эту соберете, то потом код написанный на С будет не очень сложно перенести почти на любую другую.
держи исходник и проектик в протеусе на тини2313. заняло меньше чем пол кило. кварц, ключи, фьюзы дорисуй сам, или может кто менее ленивый поможет. кнопок можно добавить еще 5 штук. памяти 1,5кб свободно, так что можно всякой фигни напихать. пищалку тоже можно добавить, правда придется пожертвовать индикацией точек, но они все равно не несут никакой смысловой нагрузки в данной схеме. их(точки) вообще можно просто тупо зажечь, чтоб отделить минуты, секунды, и сотые секунд.
да собрал... только индикаторов не нашел, теперь откладывается до выходных... мне интересен как этот, простой вариант, так и с возможностью расширять функции так что после удачной реализации первого, можно перейти ко второму. может подтяну матчасть к этому времени... по крайней мере попытаюсь.
Я Вас пытался плавно подвести к тому, что здесь плясать лучше от индикаторов, а потом и остальное приторачивать. Ну ладно, тут Вам накидали кода разного, но у него возможностей не много, да и реализация не везде хорошая, я к выходным что-нибудь свое придумаю, в принципе часть уже есть. Вы пока проверяйте монтаж, озаботьтесь программатором (как железом так и программой), если его нет, то предлагаю вариант -- stk200/300 (железо) и avreal (программа). В выходные будем пытаться отлаживаться.
Я Вас пытался плавно подвести к тому, что здесь плясать лучше от индикаторов, а потом и остальное приторачивать. Ну ладно, тут Вам накидали кода разного, но у него возможностей не много, да и реализация не везде хорошая, я к выходным что-нибудь свое придумаю, в принципе часть уже есть. Вы пока проверяйте монтаж, озаботьтесь программатором (как железом так и программой), если его нет, то предлагаю вариант -- stk200/300 (железо) и avreal (программа). В выходные будем пытаться отлаживаться.
у мене е секундомер не pic16f628 4 индикатора. Починает работу с 0000 и пошло время а заканчивает секунди коли вам захочеться 2 кнопки + управлениям реле и фотодачиком
Последний раз редактировалось sergei1975 Пт июн 04, 2010 18:39:08, всего редактировалось 1 раз.
Если хотите сэкономить на 3-х выводах, то можно прилепить CD4511 специально для семисегментников. Только нужно подобрать индикатор чтобы общий был минус! Либо если плюс будет общим то нужно ставить две микрухи инвертора 4069. На эти три вывода можно запихнуть ещё три устройства... А спользовав микру 4017, можно подсоединить на один выход контроллера общие выводы индикаторов (до 10 штук). Во как
Всем привет! Чёт тема заглохла. Наверное я буду её продолжателем. Ибо для спортивных целей надо сделать фотофиниш. Радиопередачу сигнала со старта на финиш, ИК-баръер сделал. Собирлся выводить индикацию на китайские часики с секундомером, но повертев их часа два в руках решил, что получится всё это не красиво, хотя конечный результатможно получить хоть сегодня. Врубил поисковик и набрёл на этот топик. Так-что берусь за работу, о результатах сообщу дополнительно.
Всем привет! Итого, что получается у меня, а что нет. Взял я секундомар нескольками постами выше: download/file.php?id=35830 Он меня почти устраивает, но кое-что всё-таки не устраивает. А не устраивает то, что кнопка СТАРТ/СТОП это одна и та-же кнопка. Мне нужно раздельное управление процессами. Но не хватает разрядов для управления. Я сократил количество индикаторов от шести до четырёх, ибо индикация минут меня не интересует. Но на всякий случай тот факт, что первая минута всё-таки прошла, я решин индицировать загоранием точек внизу экрана, так к стати, можна в бинарном коде индицировать и поболее минут. Значит, что мне удалось сделать: - сократить к-во разрядов с 6 до 4. - зажигать на долю секунды все точки, при переходе через минуту. Что не удалось: - удерживать точки зажжёнными - разобраться с кнопками, а именно сделать раздельными кнопки СТАРТ/СТОП. Помогите пожалуйста разобраться с моими вопросами. Спасибо. Прикрепляю также мной переделанный вариант.
Вложения:
Комментарий к файлу: модифицированный мной секундомер2.rar [79.12 KiB]
Скачиваний: 381
Идём дальше, хоть меня, вроде, никто и не слушает. Что полезного сделал: если время отсчёта переваливает через одну минуту, то загораются точки. Сделал ЭТО такой строчкой: if (min==1) {PORTB.7 =1;}
Осталось с кнопками разобраться. И тут мне совершенно не ясно с этим участком ПРОСТЕЙШЕГО кода: пишу комментарии свои.
while (1) { while (PIND.6==1) {}; // пока не нажата кнопка - ничего не делаем start++; delay_ms(2); // инкремент start (зачем?). задержка (зачем?) while (PIND.6==0) {}; // пока нажата кнопка - ничего не делаем }; }
переменная start - битовая, тоесть она либо 0 либо 1. т.е увеличили её на единицу - она стала 1, еще увеличили на единицу - она стала 0. и так далее. А в прерывании где отсчитывается время, определяется её состояние, и если она равна единице - то время считается, если она равна 0 - время не считается. а задержка - это типа я начал антидребезг сооружать, но никто проектом не заинтересовался, я так и бросил как было. Для протеуса можешь вообще выбросить. но если будешь делать в железе, придется полноценный антидребезг делать.
вот так походу полноценный антидребезг должен получиться.
Код:
while (PIND.6!=0) {}; start++; delay_ms(200); while (PIND.6!=1) {}; delay_ms(200);
а если тебе надо раздельные кнопки на старт и стоп, то посади вторую кнопку на освободившийся вывод тиньки. при нажатии первой кнопки(старт) переменной start присваивай 1, а при нажатии второй кнопки(стоп) этой переменной присваивай 0. И все.
if (PIND.6==0) {start=1;} if (PIND.5==0) {start=0;}
и заработало, даже, приблизительно как надо. Есть три кнопки. РЕСЕТ, СТАРТ, СТОП. Теперь я хочу сделать так, что б ресет автоматически срабатывал, при нажатии на кнопку СТАРТ и начинался отсчёт времени. Причём обнуляться значение должно после нажатия кнопки СТАРТ только тогда, когда перед этим отсчёт был остановлен кнопкой СТОП. Итого, первая часть вопроса: "как програмно сделать РЕСЕТ, какой командой (именно ресетнутьсам проц, а не показания на дисплее)? Вторую часть вопроса попробую решить сам на основе имеющихся крупиц знаний
нет ничего проще. когда объявляешь переменную start, присвой ей сразу значение 1. и он сразу начнет считать. кнопка сброс станет кнопкой старт, а кнопка старт выкидывается.
нет ничего проще. когда объявляешь переменную start, присвой ей сразу значение 1. и он сразу начнет считать. кнопка сброс станет кнопкой старт, а кнопка старт выкидывается.
Код:
bit start=1;
Я не пробовал, но по-идее, девайс начнёт считать сразу, после подачи питания, а мне нужно, что б по замыканию контактов начал считать, а не при подаче питания на него. Ибо если кто-то сдуру пересечёт стартовую линию, в то время, когда на дистанции уже будет другой спортсмен, то результат обнулится и начнётся отсчёт с начала, что есть недопустимо.
Последний раз редактировалось AVL Вт июл 27, 2010 16:00:26, всего редактировалось 1 раз.
тогда start храни во флеше, а при включении анализируй её состояние, и принимай решение что делать. короче тут просто продумать нужный тебе алгоритм, а в программировании этого у тебя проблем вроде уже нет
тогда start храни во флеше, а при включении анализируй её состояние, и принимай решение что делать. короче тут просто продумать нужный тебе алгоритм, а в программировании этого у тебя проблем вроде уже нет
Не в флеше, а в ЕЕПРОМЕ, наверное, Вы имели ввиду?
Вот написал нужный мне код, который, работает в Проеусе. Ввёл допонительную битовую переменную "stop", которая следит за кнопкой СТОП и соответственно меняет алгоритм работы кнопки ПУСК. Я - доволен. Спасибо за помощь. Сделаю в железе - отпишусь неприменно.
while (1) { if ((PIND.6==0)&(stop==1)) { start=1; stop=0; tik= des_tik = sec = des_sec = min=0; }
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения