Пост N: 29
Зарегистрирован: 02.01.07
Откуда: Ukraine, Славута
Рейтинг:
0
Отправлено: 09.11.07 21:40. Заголовок: Нужен совет, консультация (часы).
Здравствуйте уважаемые коллеги,у меня создалась проблема с которой я не могу справиться.Суть заключается в следующем,я пытаюсь смастерить часы- программатор ,пересмотрел несколько вариантов схем и пришел к выводу что чем тратить время для модернизацию программ под свои условия, проще написать свою программу,вот тут и мина зарылась! Сделал так, использовал заготовку динамической индикации КЕА, из самоучителя. Участок программы прерывания и инкременирования регистров часов ,взял от схемы часов по-моему, Сергея Губарь из самоучителя КЕА. Схему часов тоже использовал Сергея Губаря.Действуя от простого к сложному,я в начале собрал схему , обыкновенных шесть разрядов семисегментных индикаторов .Подключил программу ,часов с секундами т.е при прерывании происходит инкремент регистра секунд,минут часов с соответствующей проверкой на переполнение регистров, на 6,10,24.Я думаю это понятно.Кстати часы Сергея я повторил они у меня работают.Я запустил свою программу на этой схеме,у меня работает всё нормально . Далее я хотел бы присоединить к схеме- программе клавиатуру для управления .Вот тут и приключения и начались ,задумка моя такая ,я хочу чтобы сканирование клавиатуры на нажатие происходило в нулевом разряде . В первом разряде я думаю производить сравнивание регистров установок будильников с текущем временем и включения будильника ,ну это в будущем.А пока ,смысл моей задумки следующий ,сканирование портов клавиатуры происходит дважды за одну секунду ,для удостоверености о нажатой кнопке и противодребезговых мероприятиях .Так вот у меня получается так ,после установки контроллера в схему и подачи напряжения ,часы отсчитывают до 6 мин 23сек ,и начинают считать как сумасшедшие ,разряд секунд инкременируется где-то за 0,5 сек,и остальные разряды соответсвенно.В MPLABe пытаюсь с эмулировать ,проверить найти что где происходит ,какой из регистров изменяется и вызывает это сумашествие ,-невозможно! В MPLABe всё работает в норме ,интервал 1 сек между инкрементами регистра секунд в норме .В принципе там и причин воздействия на регистры TMR0,прескалера ,из программы нет.Проверял брал блокировал точкой с запятой ,вход в подпрограмму SCAN,тогда всё нормально часы считают как положенно.Если причина в подрограмме SCAN ,то как программа досчитывает до 6 мин?Если от этой подпрограммы происходит изменения регитров OPTION_R,TMR0,то как это можно локализовать ?С помощью битов -флагов,а MPLABe работает всё в норме!После последних мытарств понимаешь что отладчик ICD,сильная ,и необходимая вещь ,жалко что используется для узкого круга контроллеров. Передаю программу которую я пытаюсь сотворить ,ребята может кто подскажет как быть? Как прогу выложить,для просмотра?
Пост N: 473
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг:
1
Отправлено: 10.11.07 08:35. Заголовок: У меня (насколько зн..
У меня (насколько знаю, у многих тоже) Слил не работает. Поэтому могу порассуждать только теоретически.
vadglebov пишет:
цитата:
часы- программатор
Интересный тандем. Как-то даже не приходило в голову скрестить эти два девайса. Может, и не надо?
Свои часы я мастерил сам, не используя ни чьи программы, на 4-х разрядном индикаторе и 628-м ПИКе. Сейчас приспособил к ним трёхголосный тон-генератор. Для секундных (а если быть точнее, полусекундных) прерываний использовал TMR1, с собственным генератором и внешним "часовым" кварцем. А, для всего остального, прерывания от TMR0, с внутренним генератором.
vadglebov пишет:
цитата:
сканирование клавиатуры на нажатие происходило в нулевом разряде
А почему не использовать динамическое сканирование? При этом, задействуя всего одну ногу МК, получаете количество кнопок, равное числу разрядов (в Вашем случае - шесть).
цитата:
сканирование портов клавиатуры происходит дважды за одну секунду
ИМХО, слишком большой интервал. Надо, что бы кнопка "определилась" с нажатием, ну, за 0,5 сек. А ещё лучше, за 0,1.
цитата:
отладчик ICD,сильная ,и необходимая вещь
Возможно. Но я свои схемы отлаживаю в Протеусе. Ребята с Казуса "прикрутили" его к МПЛАБу. Очень удобная штука получилась. Можно всё отладить, не вставая с дивана. Пока столкнулся только с невозможностью вывода русских символов на HD44780. Сейчас, как-раз делаю новую версию часов. Хочу встроить настройку длительности срабатывания будильника.
Пост N: 138
Зарегистрирован: 26.12.06
Откуда: Украина, Новомосковск
Рейтинг:
0
Отправлено: 10.11.07 09:41. Заголовок: Тоже делал часы за о..
Тоже делал часы за основу брал часы Сергея Губаря у меня была сходная ситуация только часы начинали считать как ненормальные после первой секунды и в MPLABe тоже было все ОК. Но проблема оказалас в том что первоначально установленное значение предделителя ТМR0 в регистре Option_R обнулялос проверял этот факт путем записи значения регистра Option_R в ЕПРОМ пика после первой минуты затем принудительно "вешал" программу командой GOTO $-1 и читал програматором ЕПРОМ пика. Решил проблему перезаписью значения регистра Option_R при каждом прерывании. Но у меня появилас другая проблема это точность хода часов по этой причине я отказался от такого варианта часов сейчас хочю попробовать с ТМR1 и часовым кварцом на внутреннем генераторе пика (все делал на 16F628A) пргу написал но пока к сожалению нет времени проверить в железе.
Пост N: 32
Зарегистрирован: 02.01.07
Откуда: Ukraine, Славута
Рейтинг:
0
Отправлено: 10.11.07 15:26. Заголовок: Vladimir ,если можно..
Vladimir ,если можно поделитесь пожалуйста,своим вариантом часов ,просто интерестно как у вас устроен принцип работы.
Dmitry Dubrovenko Но я свои схемы отлаживаю в Протеусе. Ребята с Казуса "прикрутили" его к МПЛАБу. Очень удобная штука получилась.
Дмитрий ,я задавал вопрос в другой ветке в чем преимущества,соединения двух программ? Мне никто так и не ответил ,так всётаки ,что это даёт программисту?В протеусе как я помню есть возможность подключения hex.файла в рабочий проект для моделирование работы контроллера?
Пост N: 139
Зарегистрирован: 26.12.06
Откуда: Украина, Новомосковск
Рейтинг:
0
Отправлено: 10.11.07 17:55. Заголовок: Здесь http://ifolder..
Здесь http://ifolder.ru/4078761 вариант с часами Сергея Губаря (часы проверены в железе работают с вышеупомянутой проблемой), а здесь то что я переделал под часовой кварц http://ifolder.ru/4078784 (пока только программа еще не отлаживал в железе). Выложены полные тексты программ для облегчения вся обработка времени осуществляется в ПП прерывания далее в прграмме просто идет вывод на индикацию, измерение температуры и т.д. Прсьба сильно не плеватся рабочие черновики и выложены как есть.
Пост N: 427
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг:
2
Отправлено: 10.11.07 19:42. Заголовок: Я в своё время тоже ..
Я в своё время тоже чем то подобным занимался, только не часы делал а таймер, позволяющий изменять выдержку от 1 секунды и до 100 часов с точностью в одну секунду. Секунды считались в прерываниях от таймера TMR0, там же (в этих прерываниях) и динамическая индикация осуществлялась, что очень удобно поскольку не нужно в основной части программы заботиться о динамической индикации, и о том чтобы яркость свечения разрядов была равномерной.
Пост N: 476
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг:
1
Отправлено: 11.11.07 01:27. Заголовок: Vladimir пишет: про..
Vladimir пишет:
цитата:
проблема это точность хода часов
Увы! И с генератором от TMR1, она - никакая. Пришлось делать дополнительный алгоритм коррекции "хода".
vadglebov пишет:
цитата:
в чем преимущества
На мой взгляд, главное преимущество в том, что можно управлять сигналами на входных портах, при всём, при этом, вы точно так же можете осуществлять все действия в МПЛАБе.
P.S.: Ребяты! Не надо вставлять в топики целиком тексты программ (или уж хотя бы делайте это "скрытым текстом"). И темы давайте задавать более конкретно. Как говорит один мой знакомый: "В правильно заданном вопросе, половина ответа!"
Все даты в формате GMT
3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет