Часы на газоразрядных индикаторах
crazzian, я ассемблерный маньяк, посему увы
Да и в моем индусском коде понять что-либо сложно
Да вообщем я бы и не стал писать на Си критичные ко времени выполнения вещи, а вот весь main() переписал бы на Си, давно хочу попробовать комбинировать асм/си код с помощью GCC, но пока что имею двухтысячный слабочитабельный исходник на асм.
Giggity giggity goo!
- Реклама
- Сообщения: 117
- Зарегистрирован: Ср окт 10, 2012 07:11:04
Apparatchik, Foks, спасибо буду пробовать.
По прерыванию выхода DS-ки увы не получится т.к. плата уже без этой цепи, а навесом посему то не хочется.
По прерыванию выхода DS-ки увы не получится т.к. плата уже без этой цепи, а навесом посему то не хочется.
если мк тактируется от кварца то время можно щитать средствами мк, а с DS1307 синхронизировать при старте и например часа в три ночи.crazzian писал(а): По прерыванию выхода DS-ки увы не получится т.к. плата уже без этой цепи, а навесом посему то не хочется.
«И всё-таки она вертится!»
Я в часах с динамикой опрашивал часы примерно 20-50 раз в секунду, это чтоб не было заметных рывков в отображении времени. И да, частота шины повыше, чуть меньше максимальной для 1307, и все будет хорошо, если конечно нет помех на шине и она не будет заикаться. А в остальном уже ответили.
И кстати, на других RTC проверял, если частоту шины менять, то точность хода меняется немного, и когда часы работают от сети и от батарейки, точность тоже разная будет.
И кстати, на других RTC проверял, если частоту шины менять, то точность хода меняется немного, и когда часы работают от сети и от батарейки, точность тоже разная будет.
Опыт приходит сразу после того, как он был нужен...
20-50 раз - многовато, конечно. А без синхронизации рывки будут, но что-то можно попробовать сделать. К примеру, спустя 950 мс, читаем регистр секунд, пока не произойдет перехода секунды (читаем с интервалом 20 мс, например). После нескольких чтений, секунда перешла, тогда считываем весь блок, и далее цикл повторяем. Таким чудом, чтение будет происходить всего 3 (+/- 1) раз в секунду.
Хотя можно и 50 раз читать. Плохого, в принципе, ничего быть не должно. Разве что на один градус температура микросхемы вырастет
А лучше конечно проводом связь эту кинуть, красота сильно не постарадает. Да и вообще, странно делать финальную плату с первого раза. Отладка и доработка всегда нужна, надо было на макетке делать. Или эту плату пустить под отладку, а потом сделать еще одну. А то хотите одной п*пой на два стула сесть.
Хотя можно и 50 раз читать. Плохого, в принципе, ничего быть не должно. Разве что на один градус температура микросхемы вырастет
А лучше конечно проводом связь эту кинуть, красота сильно не постарадает. Да и вообще, странно делать финальную плату с первого раза. Отладка и доработка всегда нужна, надо было на макетке делать. Или эту плату пустить под отладку, а потом сделать еще одну. А то хотите одной п*пой на два стула сесть.
Giggity giggity goo!
- Реклама
Ну зачем же на два стула, нам и одного достаточно
Мне вот сложно представить макетку с многоногим МК в tqfp, 6ю ИД1 3мя регистрами 595 в so-16 двумя регистрами 164 в so-14, 6ю анодными ключами в сот23 ))) Да и зачем? Достаточно всего лишь все продумать как следует, опираясь на свой или чужой опыт и сделать сразу как надо.
Я тогда особо не парился по этому поводу. А в след. часцах да, развел таки на прерывание с ноги где 1Гц, по опыту форумчан, чтоб так часто не дрючить микруху часов 
Мне вот сложно представить макетку с многоногим МК в tqfp, 6ю ИД1 3мя регистрами 595 в so-16 двумя регистрами 164 в so-14, 6ю анодными ключами в сот23 ))) Да и зачем? Достаточно всего лишь все продумать как следует, опираясь на свой или чужой опыт и сделать сразу как надо.
Два года тикают и ничегоFoks писал(а):20-50 раз - многовато, конечно.
Это выход, но если эти 50 мс мы можем часто опрашивать часы, то почему бы не сэкономить на этом память МК и делать это постоянно, а так и таймер один занят и немного кода лишнего.Foks писал(а):К примеру, спустя 950 мс, читаем регистр секунд, пока не...
Опыт приходит сразу после того, как он был нужен...
Время для задержек и проч. я обычно считаю в таймере, который уже чем-то непрерывно занят: в данном случае у нас есть динамическая индикация, где можно спокойно себе инкрементировать какую-нить переменную.
На макетке не обязательно собирать полные 6-ламповые часы, можно лишь отладить в едином экземпляре ключевые узлы (то есть достаточно одной ИД1, одного регистра и т.п.). Собственно, для себя я вообще не вижу смысла собирать устройство, которое с первого раза можно "продумать". Собственно поэтому я не продолжаю штамповать часы: первые были из интереса (ГРИ), вторые в подарок (ВЛИ), и собственно этого хватило
Но здесь товарищ, видно, с RTC раньше не работал. Можно же было хоть глубже продумать план действий и провести эту линию, или просто подключить микросхему на соплях к какой-то старой своей макетке, и поиграться, перед тем как финальную плату рисовать.
На макетке не обязательно собирать полные 6-ламповые часы, можно лишь отладить в едином экземпляре ключевые узлы (то есть достаточно одной ИД1, одного регистра и т.п.). Собственно, для себя я вообще не вижу смысла собирать устройство, которое с первого раза можно "продумать". Собственно поэтому я не продолжаю штамповать часы: первые были из интереса (ГРИ), вторые в подарок (ВЛИ), и собственно этого хватило
Но здесь товарищ, видно, с RTC раньше не работал. Можно же было хоть глубже продумать план действий и провести эту линию, или просто подключить микросхему на соплях к какой-то старой своей макетке, и поиграться, перед тем как финальную плату рисовать.
Giggity giggity goo!
- Сообщения: 117
- Зарегистрирован: Ср окт 10, 2012 07:11:04
Знал бы где упаду, соломки постелил. Но не суть
Частота софтового I2C где-то контролируется/устанавливается, подскажите? Если нет, то тактирование идет на частоте кварца МК (ну или около того) , что как бы многовато для шины. Или я не прав?
Частота софтового I2C где-то контролируется/устанавливается, подскажите? Если нет, то тактирование идет на частоте кварца МК (ну или около того) , что как бы многовато для шины. Или я не прав?
Зависит от кода, я вот с софтовой шиной не работал, но в примерах посматривал, там в заголовочной части обычно устанавливается какая-то константа или переменная, отвечающая за скорость, и не обязательно она в мегагерцах, вероятнее всего абстрактная величина, которая в циклах фигурирует как условие выхода. Тактирование шины на частоте мк невозможно, ибо выполнение кода и задержек требует времени и порой немалого.
Сомнительное удовольствие, проще и нагляднее отмоделировать в протеусе. Такие простые задачи идут на ура, и микросхема часов там есть.Foks писал(а):то есть достаточно одной ИД1, одного регистра и т.п.
Опыт приходит сразу после того, как он был нужен...
- Сообщения: 117
- Зарегистрирован: Ср окт 10, 2012 07:11:04
Судя по протеусу частота клока софтового i2c ~40кГц. По ходу дела какая-то глючная DS-ка попалась.
А причем тут DS-ка? Частота же довольно низкая. У Вас сколько байт запрашивается? 6, вместе с датой? Это получается 6+2 * 9 = 72 такта, на такой частоте это около 2мс должно быть, не очень много. И кстати, а почему вы не хотите воспользоваться аппаратным ай2си ? Шина не разведена на него? Код зато сэкономите, хотя в 8й меге его и так достаточно 
Опыт приходит сразу после того, как он был нужен...
- Сообщения: 117
- Зарегистрирован: Ср окт 10, 2012 07:11:04
Вот и я про то же. Частота маленькая, а время из-за чего-то сбивается на десяток минут, причем считывание крутится в главном цикле. Софтовые библиотеки я выкладывал чуть по раньше. Разведено все как для аппаратного, так что попробовать можно.
А может проблема не в считывании, а в основном питании? При наличии этого питания идут помехи, которые мешают микросхеме RTC? Мне самому это интересно, так как когда-то столкнулся с аналогичной проблемой на 512ВИ1 (только там параллельная ШД). Но так как там всё было на соплях, о хорошем питании там речь не могла вообще идти.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Прошу прощения за оффтоп. Важно же знать, не где упадешь, а сам факт предусмотреть, что можешь упасть.crazzian писал(а):Знал бы где упаду, соломки постелил.
Кому какВолосатый писал(а):Сомнительное удовольствие, проще и нагляднее отмоделировать в протеусе.
Giggity giggity goo!
Может у вас чтение какое-то кривое, может вы еще и пишите вместе с чтением, секунды например затираете в ноль? По питанию попробуйте припаять прям на лапки или на дороги близ микрушки керамический кондёр емкостью 1мкФ, это устранит возможные помехи.
Опыт приходит сразу после того, как он был нужен...
На всякий случай, напоминаю про резисторы, подтягивающие шину к "+"
- Сообщения: 117
- Зарегистрирован: Ср окт 10, 2012 07:11:04
Выяснение причины пока приостановлено - пока тыкал осциллографом на шину, что-то случилось с мегой (вероятно частично сдохла), на пине xtal1 появилось 2.5В -> спалил lpt-шный программатор (заменю микросхему продолжу).
Пул апы имеются. Конденсаторы 0,1мкФ по питанию имеются.
Возможно проблема и из-за питания, т.к. имеется сплошной земляной полигон, т.е. земли преобразователя и по +5В соединены, на осциллографе видны иголки на +5В точно сейчас не помню, но что-то около 300мВ. Вероятно земли придется разделить.
Схема+плата. Ничего криминального. Одновременно не с чтением ничего не пишется, запись производится только при выставлении времени (даты) при нажатии кнопки "сохранить"
Пул апы имеются. Конденсаторы 0,1мкФ по питанию имеются.
Возможно проблема и из-за питания, т.к. имеется сплошной земляной полигон, т.е. земли преобразователя и по +5В соединены, на осциллографе видны иголки на +5В точно сейчас не помню, но что-то около 300мВ. Вероятно земли придется разделить.
Схема+плата. Ничего криминального. Одновременно не с чтением ничего не пишется, запись производится только при выставлении времени (даты) при нажатии кнопки "сохранить"
А вы проверьте наверняка, если глазу в коде неза что зацепиться, это не значит что там нет ошибок
Закомментируйте все вызовы пишущей процедуры, и проверьте везде что вы сначала отправляете на микрушку адрес+чтение.
С землей вы плохо обошлись, это бесспорно.
Закомментируйте все вызовы пишущей процедуры, и проверьте везде что вы сначала отправляете на микрушку адрес+чтение.
С землей вы плохо обошлись, это бесспорно.
Опыт приходит сразу после того, как он был нужен...
- Сообщения: 117
- Зарегистрирован: Ср окт 10, 2012 07:11:04
Зря я тут панику навел. Ну не зря конечно...
Дросселя на +5В пока оказалось достаточно. Сутки часы проходили нормально.
Вообщем ВВ преобразователь гадость еще та, по крайней мере на MC34063. Мало того что по питанию много чего лезет, так еще и в эфир излучает (помехи на телевизор идут даже через стену)
Дросселя на +5В пока оказалось достаточно. Сутки часы проходили нормально.
Вообщем ВВ преобразователь гадость еще та, по крайней мере на MC34063. Мало того что по питанию много чего лезет, так еще и в эфир излучает (помехи на телевизор идут даже через стену)
Ну дык конечно. Спасет здесь грамотная разводка платы, броневой дроссель и, возможно, металлическая крышка поверх преобразователя (или металлический корпус). И LC-фильтр, наверное, не помешает и на питании преобразователя.
Также можно использовать микросхему с ШИМ-контроллером (например, MAX1771), она меньше гадит.
Также можно использовать микросхему с ШИМ-контроллером (например, MAX1771), она меньше гадит.
Giggity giggity goo!


