Электронные часы с подстройкой.
- Max
- Админ
- Сообщения: 10815
- Зарегистрирован: Вт авг 23, 2005 15:23:25
- Откуда: Москва
- Контактная информация:
Схему в статье поправил. В спорах рождается истина, товарищи. Иногда. 
А вот футболки кому? Кружки, значки!
Мысли Пачкают Мозги
Мысли Пачкают Мозги
Фьюзы у нас обсуждаются здесь:
http://www.radiokot.ru/forum/viewtopic.php?t=1279
http://www.radiokot.ru/forum/viewtopic.php?t=1279
Если долго мучиться, что-нибудь... сломается.
-
Vladimir1970
- Родился
- Сообщения: 3
- Зарегистрирован: Вс дек 30, 2007 02:29:49
Здравствуйте!!! С Новым Годом!!!
Каникулы сподвигли на сборку "Часов с подстройкой". Правда смог найти только индикаторы с общим анодом , потому пришлось поменять транзисторы на pnp и подправить программу с тем, чтобы вместо единичек в порты выводились нолики.
Что правил в проге: перед записью переменной TMP в порт С или D делал "eor Tmp,inv", где inv=0x0F("исключающее или" для побитной инверсии младшего байта). Аналогично, и при чтении из порта, перед передачей ТМР в программу так же инвертил его. Более НИЧЕГО не трогал...Часы запустились, отсчет времени идет правильно, но НЕТ НИКАКОЙ реакции на нажатие кнопок. И это при том, что я PORTB не трогал вообще. Перечитывал текст много раз, вроде мои поправки никак не должны испортить работу с портом B. Но кто знает. Если в форуме присутствует автор, или тот, кто тоже собирал часы, то отзовитесь, пожалуйста. Вразумите заблудшего, что я мог испортить? Я не асс в АТМЕГАх. Может где чего и не доглядел...
P.S. Да , еще странная особенность. Процессорные FUSE установлены на 1МГЦ (CKSEL 1,2,3 =0). После подачи питания в течение 2мин56сек минут цифры на индикаторах не меняются, только светодиоды мигают с частотой ~0,5Гц. Потом все работает нормально и отсчет времени идет достаточно точно. Хотелось бы еще поиграть с константой подстройки хода, но увы кнопки мертвые...
Каникулы сподвигли на сборку "Часов с подстройкой". Правда смог найти только индикаторы с общим анодом , потому пришлось поменять транзисторы на pnp и подправить программу с тем, чтобы вместо единичек в порты выводились нолики.
Что правил в проге: перед записью переменной TMP в порт С или D делал "eor Tmp,inv", где inv=0x0F("исключающее или" для побитной инверсии младшего байта). Аналогично, и при чтении из порта, перед передачей ТМР в программу так же инвертил его. Более НИЧЕГО не трогал...Часы запустились, отсчет времени идет правильно, но НЕТ НИКАКОЙ реакции на нажатие кнопок. И это при том, что я PORTB не трогал вообще. Перечитывал текст много раз, вроде мои поправки никак не должны испортить работу с портом B. Но кто знает. Если в форуме присутствует автор, или тот, кто тоже собирал часы, то отзовитесь, пожалуйста. Вразумите заблудшего, что я мог испортить? Я не асс в АТМЕГАх. Может где чего и не доглядел...
P.S. Да , еще странная особенность. Процессорные FUSE установлены на 1МГЦ (CKSEL 1,2,3 =0). После подачи питания в течение 2мин56сек минут цифры на индикаторах не меняются, только светодиоды мигают с частотой ~0,5Гц. Потом все работает нормально и отсчет времени идет достаточно точно. Хотелось бы еще поиграть с константой подстройки хода, но увы кнопки мертвые...
- ИРБИС
- Держит паяльник хвостом
- Сообщения: 978
- Зарегистрирован: Пн ноя 27, 2006 07:52:01
- Контактная информация:
Советую эту статейку: На «0» - «1» засветись! Или индикация логических уровней светодиодами — на будущее пригодится!Vladimir1970 писал(а):Правда смог найти только индикаторы с общим анодом , потому пришлось поменять транзисторы на pnp и подправить программу с тем, чтобы вместо единичек в порты выводились нолики.
Питаюсь копытными. Как исчезающий вид занесён в Красную книгу МСОП. Почему до сих пор не занесены в Красную книгу инженеры и учёные РФ?
-
Vladimir1970
- Родился
- Сообщения: 3
- Зарегистрирован: Вс дек 30, 2007 02:29:49
ИРБИС писал(а):Советую эту статейку: На «0» - «1» засветись! Или индикация логических уровней светодиодами — на будущее пригодится!Vladimir1970 писал(а):Правда смог найти только индикаторы с общим анодом , потому пришлось поменять транзисторы на pnp и подправить программу с тем, чтобы вместо единичек в порты выводились нолики.
Что-то я не понял, к чему эта ссылка. Как работает светодиод и как инвертировать сигнал транзисторами я за 25 лет общения с электроникой освоил неплохо. Только, по-моему, рациональнее подправить прошивку, чем городить забор из дополнительных транзисторов. Я не прав??? Я же написал, что по правильности индикации цифр и по счету минут/часов вопросов нет.
-
Vladimir1970
- Родился
- Сообщения: 3
- Зарегистрирован: Вс дек 30, 2007 02:29:49
МЯУ!!! Значится частичная победа.
1) Проблема с отсчетом первых 3-х минут решилась простым добавлением в начало программы обнуления регистра хранения секунд Second.
2) Реакция на нажатие кнопок появилась после того, как PORTB был проинициализирован в начале программы константой 0хFF вместо 0x3F. То есть с записью единичек в старшие разряды порта. Соответственно изменил и константы в обработчике кнопок. Все пошло, кроме кнопки 4(обнуление секунд). В тексте программы я не нашел код делающий это.
Егор, если Вы сюда заходите, скажите, пожалуйста, эта программа нормально работала в Вашем железе? И конечная ли версия софта выложена на сайте??? Или это промежуточный вариант?
С уважением Владимир.
1) Проблема с отсчетом первых 3-х минут решилась простым добавлением в начало программы обнуления регистра хранения секунд Second.
2) Реакция на нажатие кнопок появилась после того, как PORTB был проинициализирован в начале программы константой 0хFF вместо 0x3F. То есть с записью единичек в старшие разряды порта. Соответственно изменил и константы в обработчике кнопок. Все пошло, кроме кнопки 4(обнуление секунд). В тексте программы я не нашел код делающий это.
Егор, если Вы сюда заходите, скажите, пожалуйста, эта программа нормально работала в Вашем железе? И конечная ли версия софта выложена на сайте??? Или это промежуточный вариант?
С уважением Владимир.
- Negor
- Вымогатель припоя
- Сообщения: 586
- Зарегистрирован: Ср мар 07, 2007 22:58:02
- Откуда: Черкассы, Украина
- Контактная информация:
Насчёт Кнопки сброса секунд... точно помню что такое было, а вот оставил ли я его в прошивке или нет, не помню. Я постараюсь в ближайшее время разобратся с этим вопросом.
Добавленно: нет, нету там сброса секунд - на эту кнопку я повесил включение режима подстройки.
Добавленно: нет, нету там сброса секунд - на эту кнопку я повесил включение режима подстройки.
There is only 10 kind of people: those who understands binary code and those who dont!!!
- Negor
- Вымогатель припоя
- Сообщения: 586
- Зарегистрирован: Ср мар 07, 2007 22:58:02
- Откуда: Черкассы, Украина
- Контактная информация:
Ну.... тогда проверяем питание на МК. Есть? Отлично. Теперь надо убедится что циферки припаяны. Прошиваем ghue которая на перво странице этой темы. Она должна вывести на все индикаторы восьмёрки. Этим мы как раз проверим и то что МК запускается и успешно функционирует. Если такого не произошло, скорее всего МК щапрограммирован на тактирование от внешнего генератора. В таком случае мастырим на логике генератор на частоту за 1 Мгц. Хотя... если МК ты прошил, то и работать он должен. Возможен также вариань что на РЕСЕТ не подаётся высокий уровень. В результате чего МК может быть запрограммирован но не запустится. Вот примерно так
There is only 10 kind of people: those who understands binary code and those who dont!!!
Интересные часы у вас получились, товарищ...
Не подскажете, почему при подаче питания отсчет секунд начинается с 77 и продолжается до 99?
Причем как-то непоследовательно - скачет с одного значения на другое, но всегда одинаково. Правда, довольно быстро проходит и начинает идти нормально. К тому же иногда одиночное нажатие на кнопку воспринимается как два, будто дребезг проявляется...
Если долго мучиться, что-нибудь... сломается.