Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Стабильность i2c
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
dontsov
Добрый день!

Есть связка: Attiny85 (slave), ESP8266 (master). Кусок посылки иногда в виде FF. Не всегда.

Может ли это быть из-за того, что внутренний генератор Attiny85 не откалиброван?
Я ставлю сон 60 мин, просыпается через 62 мин.

Частота: 100кГц

В attiny85 библиотека: https://github.com/puuu/USIWire
у ESP стандартная "Wire"

Делаю wi-fi счетчик воды. Автономный. https://github.com/dontsovcmc/ImpCounter
p.s. Хочется услышать конструктивную критику в целом по проекту.

Спасибо!
rx3apf
I2C на времянки никак не завязана.
HardEgor
Цитата(dontsov @ Mar 22 2018, 22:48) *
Частота: 100кГц

100кГц - это максимальная частота, возможно вы её превышаете и кто-то не успевает отрабатывать.
Попробуйте поставить 75кГц например.
jcxz
Цитата(HardEgor @ Mar 22 2018, 18:50) *
100кГц - это максимальная частота, возможно вы её превышаете и кто-то не успевает отрабатывать.
Попробуйте поставить 75кГц например.

В I2C, насколько помню, обычно есть требования не по частоте клока, а по длительностям положительной и отрицательной частей периода SCL.
Частота может быть в норме, а вот какая-то длительность зарезана.
HardEgor
Цитата(jcxz @ Mar 22 2018, 23:55) *
Частота может быть в норме, а вот какая-то длительность зарезана.

Подозреваю, что внутри чипов тайминги выдержаны, а вот работу на максимальной частоте.... Attiny сдюжит и 400кГц(хотя это как порты и USI настроишь), а вот ESP8266 сурово оптимизирован - может косячить.
jcxz
Цитата(dontsov @ Mar 22 2018, 17:48) *
Делаю wi-fi счетчик воды. Автономный. https://github.com/dontsovcmc/ImpCounter
p.s. Хочется услышать конструктивную критику в целом по проекту.

Насчёт "в целом" - сильно сомневаюсь в сказанном там: "Двух батареек АА должно хватить на несколько лет!"
ESP8266 жрёт и греется как утюг - во время работы чип всё время горячий. На профильном форуме писали о его токах потребления в сотни мА.
И насчёт "в режиме передачи данных: 70мА (~2 секунды)" - ну-ну, автор конечно невзначай забыл про время на подключение ESP8266 к WiFi после просыпания.
Имхо: разумнее было вместо AVR+ESP взять 2 каких-нить CC2530 (или подобный МК со встроенной RF-частью), один прицепить к счётчику, другой - к роутеру (и запитать от него). И получить реально долгое время работы от батарейки.
Но как всегда - автор пошёл тупым абдуриновым путём... smile3046.gif
dontsov
Цитата(HardEgor @ Mar 22 2018, 20:06) *
Attiny сдюжит и 400кГц

даже, если на частоте 1МГц работает?
Про стабильность i2c на ESP8266 почитаю, спасибо.


Цитата(jcxz @ Mar 22 2018, 21:35) *
Насчёт "в целом" - сильно сомневаюсь в сказанном там: "Двух батареек АА должно хватить на несколько лет!"
ESP8266 жрёт и греется как утюг - во время работы чип всё время горячий. На профильном форуме писали о его токах потребления в сотни мА.
И насчёт "в режиме передачи данных: 70мА (~2 секунды)" - ну-ну, автор конечно невзначай забыл про время на подключение ESP8266 к WiFi после просыпания.
Имхо: разумнее было вместо AVR+ESP взять 2 каких-нить CC2530 (или подобный МК со встроенной RF-частью), один прицепить к счётчику, другой - к роутеру (и запитать от него). И получить реально долгое время работы от батарейки.
Но как всегда - автор пошёл тупым абдуриновым путём... smile3046.gif


Это же очень просто измерить: вывод в лог с временными метками. По логу я вижу, что подключение идет очень быстро. (отчасти из-за режима deepsleep. Если отключать EN, пробуждение будет дольше).
Почему же путь тупой, если устройство работает? Я взял то, что больше описано, хотя и наткнулся на тонну нюансов =(.
jcxz
Цитата(dontsov @ Mar 27 2018, 15:23) *
Это же очень просто измерить: вывод в лог с временными метками. По логу я вижу, что подключение идет очень быстро. (отчасти из-за режима deepsleep. Если отключать EN, пробуждение будет дольше).

У меня ESP8266 к роутеру секунд 10 подключается. Не после сна, холодную, но всё же....

Цитата(dontsov @ Mar 27 2018, 15:23) *
Почему же путь тупой, если устройство работает? Я взял то, что больше описано, хотя и наткнулся на тонну нюансов =(.

Тупой, потому что поставили цель - батарейное устройство, и для реализации самый наихудший наверное по потреблению вариант. Да и реализация - наихудшая, потому что "абдурина". Этим всё сказано. laughing.gif
k155la3
Чтобы снять все вопросы по I2C
1. Подтягивающие резисторы должны быть не более 10 кОм. (это определяет быстродействие шины, завал фронтов, помехоустойчивость)
Вообще - см. стандарт от NXP. Наблюдал случаи, когда эти резисторы ставили 100 кОм sm.gif
2. Длина проводников шины должна быть минимально. Хотя будет работать достаточно устойчиво и на 20-30 см / 200 кГц.
3. Максимальная частота SCL шины (по базовому стандарту) 400 кГц.
4. Гарантированно не должно быть помех. Любая импульсная помеха может исказить инф. на шине или вообще ввести в ступор мастера и/или слейва.
Это требование к разводке платы, расположению проводников.
5. Опятьже по стандарту нормируется длительность фронта-спада (это завязано на п.1 выше)
Для проверки что все правильно желательно посмотреть осцилографом что происходит на шине.



ps.
Построение подобных приборов учета "в целом".
В прибор устанавливается 2 батареи - одна литиевая, долгоиграющая, на 2-4-8 лет работы "ядра" измерителя.
(она обеспечивает только метрологическую ф-ию прибора, без второстепенных, вроде питания радиоканала или даже индикации)
К этой метрологической батарее доступ только через сертифицированный сервис или при поверке прибора.
Вторая батарея имеет свободный доступ, и может заменяться даже потребителем.
На нее навешиваются все остальные потребители - внешний интерфейс, радиоканал, индикация, подсветка и т.п.
т.е. то, что не имеет отношения к метролого-коммерческой ф-ии учета того, чего меряем.
----
Радиоканал очень прожорливая весч. Оно постоянно должно находится в режиме дежурного приема, или
работать с каким-либо периодом. Я уже не говорю о режиме передачи.
Если ОНО будет активироваться раз в сутки, на 10 секунд - то еще куда-ни-шло.
Если же Вы хотите получать инф. с девайса в реалтайм - то батарейки придется менять достаточно часто.
Это утомительно и унизительно.
К томуже Attiny85 - далеко не микропотребляющий контроллер. См. STM32Lxxxx, MSP430 итп.

vladec
Цитата
Оно постоянно должно находится в режиме дежурного приема

По современной идеологии построения таких систем, инициатором обмена всегда должен быть датчик, так что вся работа по соединению и передаче данных только при периодическом просыпании и WiFi здесь не годится, надо использовать что то предельно узкополосное, например, CC1310.
dontsov
Цитата(k155la3 @ Mar 27 2018, 20:38) *
.
Это утомительно и унизительно.
К томуже Attiny85 - далеко не микропотребляющий контроллер. См. STM32Lxxxx, MSP430 итп.


Спасибо за подробную справку про i2c и схему работы автономных устройств!

Вы так пишите про attiny, что я чувствую себя предлагающем схему мультивибратора на картонке на транзисторах МП42..

Про STM понял..
У меня устройство по таймеру ресетит ESP и слушает команды от него. Т. е. постоянная связь не нужна.

WiFi я использую потому что хочу сделать "домашнее" устройство. Воткнул и забыл.

по этой же причине выбрал распространённые детали.
jcxz
Цитата(dontsov @ Mar 28 2018, 12:29) *
WiFi я использую потому что хочу сделать "домашнее" устройство. Воткнул и забыл.

Так какое же это "забыл" если вспоминать про батарейки каждый месяц придётся? Сами себе противоречите.
"Воткнул и забыл" это сделать на чём-то действительно малопотребляющем (отдельный RF-модуль или ZigBee или ...), но никак не ESP8266.
k155la3
Пока Вы работаете с прототипом, процессор не принципиален. Главное - чтобы Вам с ним было комфортно работать с точки зрения тех. характеристик и софта. При этом свой софт надо изначально писать с ориентацией на переносимость на другие процессоры (реализовывать свой HAL).
После прототипа проект можно соптимизировать как в сторону более простого-дешевого процессора, так и наоборот.


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.