Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Ср фев 21, 2018 20:56:30

9 раз это очень мало, где-то лишние задержки.
возможно, библиотека для LCD самопальная,надо ее как-то перелопатить...
но тем не менее даже при этих условиях кнопки вроде как опрашиваются, ds18b20 тоже пашет)

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Ср фев 21, 2018 21:00:44

Как вариант, можно считать время самим МК, а с RTC общаться только при включении / выключении/ настройке. Собственно, как это на обычных компьютерах присходит.
У себя в проектах я обычно просто раз секунду вычитывал из RTC время, используя и так уже задействованный параллельно для других целей (опрос кнопок) таймер.

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Ср фев 21, 2018 21:09:54

У себя в проектах я обычно просто раз секунду вычитывал из RTC время
а как же "разсинхрон" о котором пишет Apparatchik?

Добавлено after 4 minutes 2 seconds:
Как вариант, можно считать время самим МК
каким образом это происходит?имея часы создаем другие часы

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Ср фев 21, 2018 21:38:12

МК, тактирующийся от кварца, вполне способен обеспечить точные секундные интервалы. Так что рассинхрон пару раз в день - не такая уж страшная штука.
Программные часы, в виде 16-битной переменной (0..3599), инкрементирующейся раз в час (при достижении 3600 => 0, например) синхронизирующейся с RTC - чем не вариант? Вывести её на экран в виде минуты-секунды - проблема невеликая.

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Ср фев 21, 2018 21:57:24

Интересные варианты :write: думаю стоит остановиться на варианте считывать раз в секунду...в моем случае,это более оптимально

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Чт фев 22, 2018 00:48:28

Ну народ! Речь тут о часах или о бортовом компьютере МКС? В данном случае сто'ит считать, что используется по прямому назначению SQW часов и один из INT-ов МК. Вести речи типа: как 8( отдавать целое прерывание под регенерацию? - не сто'ит. Именно пара SQW-INT должна работать в часах. Всё остальное от лукавого и сильно усложнит жизнь.

Формирование какого либо периода от тактов МК для регенерации, всегда будет приводить к проблемам. Только если вы не желаете делать это 20-50 в секунду по I2C. А это ещё хуже. Ловля SQW черевата его пропуском. Т.ч. не выдумывайте, всё украдено до вас.

Желающие пойти иным путём, плиз после отпишитесь здесь с какими граблями вы столкнулись. Народу забавно будет. ))

З.Ы. SQW с настройкой 1Гц именно под прерывание был задуман, сделан, что б вы горя не знали. А вы ещё упираетесь ))

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Вт мар 13, 2018 08:40:42

У меня проэкт мег128, графический 128*64 и sd карта.
То же столкнулся с тем, что секундная точка моргала то бістрее то медленнее, т.к. цикл опроса часов каждый раз был разный.
В итоге, на одном из таймеров сделал через программный делитель таймер 1 секунды. (изначально был 10 мс для работы с сд картой).
Раз в секунду поднимается флаг, по нему в основном цикле читаю время. Моргание секундных точек, и отображение секунд теперь правильное, без задержек и ускорений :)

Добавлено after 5 minutes 4 seconds:
Но есть и другая проблема.
На части устройств, часы идут без проблем.

А вот на одном (тестовом), после замены ds1307 перестали работать часы. Считываю время успешно и стабильно, идут. А вот установить время и дату не могу.
Устанавливается совсем не то что записываю, причем стабильные значения. Менял уже три микросхемы, результат тот же. На старой микросхеме все работало четко.
Подозреваю, что новые микросхемы чем-то отличаются от старых (все растянуто на 4 года). И они просто не могут работать в этих условиях.
Библиотеки cvavr, ляпов на плате нет. Одно, резисторі стоят 6,8 ком вместо 4,7. Может ли такое отличие мешать записи даті и времени в часі, но без проблем считівать с них данніе.

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Вт мар 13, 2018 10:48:58

Valentin44 писал(а):Одно, резисторі стоят 6,8 ком вместо 4,7. Может ли такое отличие мешать записи даті и времени в часі, но без проблем считівать с них данніе.
Думаю, в этом все дело. Ставлю на линии SDA и SCL резисторы 2,7к. Проблем с 400кГц шиной нет. Правда, графический дисплей только слейв.

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Вт мар 13, 2018 19:19:06

Заменил резисторы 3 ком. Таиже ситуация. Установить могу оолько часы, при этом минуты и секунды стают всегда на 2 минуты 2 секунды. При попытке естанввить дату и часы слетают. Но чтение данных всегда коректное. Вторая микросхема читает трехзначные числа, и переустановить невозможно.

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Вт мар 13, 2018 20:12:20

1. Кондёр 0,1 на ножки питания повесил?
2. Флюс-гель ТТ - не использовал?
3. Смотри самописцем, что там передаётся в момент слёта.

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Ср мар 14, 2018 13:03:55

Флюс только канифоль и все смыто, кондер на 0,1 есть. Питание чистое и красивое.
Самописца реального нет. В протеусе работает.
По большому счету надо грешить на микросхему. Но их уже 5 штук, купленных в разное время в разных местах.
Тут еще, проэкт написан в CVAVR, и мне не совсем понятно на какой частоте работает i2c шина. КОгда создается проєкт, там устанавливает что будет использоваться ds1307. Но на какой частоте оно будет работать, большой вопрос. Явно это не прописывается.

Можно предположить что частота не 100 кгц, а 400.

В протеусе подключил осциллограф на линию, и самый маленький импульс был 1,8 мкс. Что очень мало.
И самое противное, что подключить две линии в осциллограф не могу, вылетает с ошибкой

Internal Exception: access violation in module 'SPICEINP.DLL' [000007F9].

Обновил версию, а тут вообще и одну линию не могу подключить. То же ищу решения. :(

Добавлено after 30 minutes 4 seconds:
Удалось таки запустить осциллограф в протеусе подключенный к линиям часов. Импульсы с длительностью 16,3 мс, значит частота шины 30,3 кгц.
Так и есть,в настройках шины выставил 30,418 kHz.

Изменил в настройках шины на 100 кгц, между импульсами 5 мкс. Значит настройки шины верны.

Еще один аргумент в пользу брака м/с. Одна не переключает минуту. Т.е. секунды хододят до 59, затем 00. А минуты не добавились. На другой добавляются. А такой фокус ни настройки шины, ни код в микроконтроллере не создаст.

Добавлено after 5 minutes:
Кстати, по умолчанию, если не задать скорость шины, она работает на частоте 1 мгц. Это так в протеусе осциллографом видно, длительность между импульсами 500 нс.
В общем, частоту оставил 100 кгц, после обед проверю в реальном железе.
Но думаю чудес не будет.

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Ср мар 14, 2018 14:03:06

Сочувствую. Я с готовыми библиотеками почти дела не имею - пишу на ассемблере. Сам ваяю грабли, сам тестирую грабли, сам исправляю грабли. В итоге имею набор рабочих библиотек проверенных и с описанием настроек.

Но, если и надо использовать что-то чужое (типа библиотеки СhaN-а для работы с SD-картами), то начинаю именно с описания. Выставляю настройки, а дальше бег с барьерами, которые при ближайшем рассмотрении оказываются просто огромными граблями. Но и тут вопросы решабельны. Не хотели работать разные SD-карты, делал сопряжение по уровням через 74HC224 - заработало.

Первое, что делаю при включении, проверю SQW. Больше одного герца (32768) - тут же меняю.

У меня была проблема с последовательным считывание данных, не читался последний байт. Что б читалось всё, добавлял чтение ещё одной пустой ячейки.

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Ср мар 14, 2018 23:28:32

Все как и предпологалось просто. Нашел б.у. микросхему часов, запаял, работает как часы :)
Видимо брака много таки.

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Чт мар 29, 2018 20:04:37

Доброго..! Решил переписать модуль для обмена данными с RTC по TWI. И тут возник вопрос есть смысл делать это на прерываниях.Я думаю нет. прерывания полагаю нужно для работы в режиме ведомого.У кого какие аргументы?

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Пт мар 30, 2018 00:16:46

Мысль пока одна: а на каком языке вы пытаетесь переписать?

Я пишу на ассемблере. У меня есть аппаратная и программная реализация, мастера и слейва. Да и в сети навалом решений.

Программный вариант на СИ не существует - тупо не успевает, только через ассемблерную вставку.

Аппаратный на СИ, должен работать на уровне библиотеки. Но мне он ни разу не понадобился, добавить тут ничего не могу.

А что такое вариант на прерываниях? Программный на прерываниях? На высокой частоте, пока вы будете обрабатывать прерывание, можно всё пропустить. И ещё тут нельзя будет получить реализацию удовлетворяющую всех - не будет универсальности. Или сидим и ждём пока завершится транзакция по шине, или выполняем что-то параллельно, но рискуем пропустить данные или снижаем частоту шины.

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Пт мар 30, 2018 06:40:25

а на каком языке
СИ.
Программный на прерываниях?
Нет,на данный момент разобраться бы досконально с аппаратным модулем.
нельзя будет
как-то даже странно слышать,то что нельзя запрограммировать что-то)я обычно к подобному отношусь так,что у меня банально не хватает знаний...
А что такое вариант на прерываниях?
Мешкался где лучше обрабатывать коды статуса и приступать к дальнейшим действиям,в обработчике или же просто в функции....примеры посмотрел,есть варианты с прерываниями и без них ....

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Пт мар 30, 2018 07:23:08

DrLithium писал(а):Программный вариант на СИ не существует - тупо не успевает, только через ассемблерную вставку
да ладно! :))) я сам 100 раз так делал © максимальная скорость обмена по I2C согласно стандарту от Филипс всего 400 килобод, даже без особых ухищрений на Си реализуется более чем элементарно.

TWI у AVR-ок устроена так, что проще на Си написать тупым дрыгоногом, чем все эти биты ошибок и статусов анализировать - это моё мнение. кстати, для проектов, где на шине всего одно устройство, никаких ошибок и отрабатывать не надо вообще, протокол получается крайне примитивным. и (опять же исключительно моё мнение) вообще все эти статусы-ошибки важны для мультимастерных шин, что большая редкость...

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Пт мар 30, 2018 07:31:27

DrLithium писал(а):Программный вариант на СИ не существует - тупо не успевает, только через ассемблерную вставку
да ладно! :))) я сам 100 раз так делал © максимальная скорость обмена по I2C согласно стандарту от Филипс всего 400 килобод, даже без особых ухищрений на Си реализуется более чем элементарно.

TWI у AVR-ок устроена так, что проще на Си написать тупым дрыгоногом, чем все эти биты ошибок и статусов анализировать - это моё мнение. кстати, для проектов, где на шине всего одно устройство, никаких ошибок и отрабатывать не надо вообще, протокол получается крайне примитивным. и (опять же исключительно моё мнение) вообще все эти статусы-ошибки важны для мультимастерных шин, что большая редкость...


Что-то я в сети ни одного варианта (рабочего) так и не нашёл.

Могу согласиться с тем, что когда ты пишешь сам с нуля, то можешь подождать пока он (протокол) своё отдрыгает. Я же реально, при вставке в проект, где 90-95% кода занимает чужая библиотека со своей регенерацией (SPI обновляет SD-карту), сишно-программной реализации, получи тупое не успевание кода вовремя вернуться и выдать или забрать бит с шины.

Вот такое вам "да- ладно и 100 раз". Программная вставка на ассемблере успевала и всё работает.

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Пт мар 30, 2018 08:01:57

DrLithium писал(а):Что-то я в сети ни одного варианта (рабочего) так и не нашёл
наверное, искали плохо.
DrLithium писал(а):Я же реально, при вставке в проект, где
случаи бывают разные. но обобщать не стоит.

не раз слышал "утверждения", что писать на Си для attiny13 нельзя, нет смысла и т.п.
однако на протяжении нескольких лет писал, пишу и, вероятно, продолжу писать на Си - ни о чем не жалею.

средний проект с и2с - это или часы DS1307, или память типа 24С16, или какой-то "звуковой" процессор/микшер. иногда попадаются какие-нибудь датчики... в редком случае - все сразу. ни о каком напряженном трафике обмена для этих устройств речь не идет, можно по 1 биту в секунду обмениваться :))) (утрирую)

Добавлено after 11 minutes 12 seconds:
DrLithium писал(а):тупое не успевание кода вовремя вернуться и выдать или забрать бит с шины
и2ц - полностью синхронная шина, как можно не успеть?! пока SCL в высоком уровне, данные на SDA стабильно стоят и будут стоять, хоть сутки! можно завтра вернуться и забрать...

Re: Всё по DS1307 и прочим часам Dallas (Maxim)

Пт мар 30, 2018 08:37:15

наверное, искали плохо.


Давай подумаем вместе. Может ли бывший сисадмин, с 10-им опытом, собравший 100-150 компов и полностью их настроивший вплоть до последней программулины и обучивший не один десяток юзеров работать в сети и на ПК, уметь что-то плохо искать в сети?

случаи бывают разные. но обобщать не стоит.

Что значит обобщать? Где я это делал? Я написал про конкретный опыт из своей практики. Если получится программный на прерывания на СИ - оторву с руками. Мой же реальны опыт показал - нет в сети подобного решения, при этом работающего. Если вы нашли, приз линк в студию.

и2ц - полностью синхронная шина, как можно не успеть?! пока SCL в высоком уровне, данные на SDA стабильно стоят и будут стоять, хоть сутки! можно завтра вернуться и забрать...

Читаем внимательно выше, идёт регенерация SD-карты. На вход и выход + обработка, суммируете сами или вам в миллисекундах посчитать?

Синхронная она на аппаратном уровне, а когда тупо не хватает малости 10-15 тактов процессора, то вся синхронность - это кажущийся вагон времени, который сгорает со скоростью бикфордова шнура, для синхронного подрыва зарядов при сносе зданий.

Вся проблема в том что "он же синхронный" в детских поделках. А вот когда камень реально нагружен, то от неё и следа не остаётся. Вернее времени для того, что б успеть обработать.

"можно завтра вернуться и забрать..." - иллюзии. Как много вам ещё предстоит узнать. На пустой загрузке так и есть. Но мы то что в игрушки всю жизнь играть будем? Нет. Камень нагружен ещё кое-чем, а когда нагружен очень, то ни о каком завтра (на СИ) речи быть не может.

Именно по этому нет рабочего программного решения на СИ, только аппаратное. Иначе это всё детский сад, годящийся только для часиков и не более.
Ответить