Перейти к содержанию
    

Стабильность i2c

Добрый день!

 

Есть связка: 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. Хочется услышать конструктивную критику в целом по проекту.

 

Спасибо!

Изменено пользователем dontsov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

100кГц - это максимальная частота, возможно вы её превышаете и кто-то не успевает отрабатывать.

Попробуйте поставить 75кГц например.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

100кГц - это максимальная частота, возможно вы её превышаете и кто-то не успевает отрабатывать.

Попробуйте поставить 75кГц например.

В I2C, насколько помню, обычно есть требования не по частоте клока, а по длительностям положительной и отрицательной частей периода SCL.

Частота может быть в норме, а вот какая-то длительность зарезана.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Частота может быть в норме, а вот какая-то длительность зарезана.

Подозреваю, что внутри чипов тайминги выдержаны, а вот работу на максимальной частоте.... Attiny сдюжит и 400кГц(хотя это как порты и USI настроишь), а вот ESP8266 сурово оптимизирован - может косячить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делаю wi-fi счетчик воды. Автономный. https://github.com/dontsovcmc/ImpCounter

p.s. Хочется услышать конструктивную критику в целом по проекту.

Насчёт "в целом" - сильно сомневаюсь в сказанном там: "Двух батареек АА должно хватить на несколько лет!"

ESP8266 жрёт и греется как утюг - во время работы чип всё время горячий. На профильном форуме писали о его токах потребления в сотни мА.

И насчёт "в режиме передачи данных: 70мА (~2 секунды)" - ну-ну, автор конечно невзначай забыл про время на подключение ESP8266 к WiFi после просыпания.

Имхо: разумнее было вместо AVR+ESP взять 2 каких-нить CC2530 (или подобный МК со встроенной RF-частью), один прицепить к счётчику, другой - к роутеру (и запитать от него). И получить реально долгое время работы от батарейки.

Но как всегда - автор пошёл тупым абдуриновым путём... :smile3046:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Attiny сдюжит и 400кГц

даже, если на частоте 1МГц работает?

Про стабильность i2c на ESP8266 почитаю, спасибо.

 

 

Насчёт "в целом" - сильно сомневаюсь в сказанном там: "Двух батареек АА должно хватить на несколько лет!"

ESP8266 жрёт и греется как утюг - во время работы чип всё время горячий. На профильном форуме писали о его токах потребления в сотни мА.

И насчёт "в режиме передачи данных: 70мА (~2 секунды)" - ну-ну, автор конечно невзначай забыл про время на подключение ESP8266 к WiFi после просыпания.

Имхо: разумнее было вместо AVR+ESP взять 2 каких-нить CC2530 (или подобный МК со встроенной RF-частью), один прицепить к счётчику, другой - к роутеру (и запитать от него). И получить реально долгое время работы от батарейки.

Но как всегда - автор пошёл тупым абдуриновым путём... :smile3046:

 

Это же очень просто измерить: вывод в лог с временными метками. По логу я вижу, что подключение идет очень быстро. (отчасти из-за режима deepsleep. Если отключать EN, пробуждение будет дольше).

Почему же путь тупой, если устройство работает? Я взял то, что больше описано, хотя и наткнулся на тонну нюансов =(.

Изменено пользователем dontsov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это же очень просто измерить: вывод в лог с временными метками. По логу я вижу, что подключение идет очень быстро. (отчасти из-за режима deepsleep. Если отключать EN, пробуждение будет дольше).

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

 

Почему же путь тупой, если устройство работает? Я взял то, что больше описано, хотя и наткнулся на тонну нюансов =(.

Тупой, потому что поставили цель - батарейное устройство, и для реализации самый наихудший наверное по потреблению вариант. Да и реализация - наихудшая, потому что "абдурина". Этим всё сказано. :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чтобы снять все вопросы по I2C

1. Подтягивающие резисторы должны быть не более 10 кОм. (это определяет быстродействие шины, завал фронтов, помехоустойчивость)

Вообще - см. стандарт от NXP. Наблюдал случаи, когда эти резисторы ставили 100 кОм :)

2. Длина проводников шины должна быть минимально. Хотя будет работать достаточно устойчиво и на 20-30 см / 200 кГц.

3. Максимальная частота SCL шины (по базовому стандарту) 400 кГц.

4. Гарантированно не должно быть помех. Любая импульсная помеха может исказить инф. на шине или вообще ввести в ступор мастера и/или слейва.

Это требование к разводке платы, расположению проводников.

5. Опятьже по стандарту нормируется длительность фронта-спада (это завязано на п.1 выше)

Для проверки что все правильно желательно посмотреть осцилографом что происходит на шине.

 

 

 

ps.

Построение подобных приборов учета "в целом".

В прибор устанавливается 2 батареи - одна литиевая, долгоиграющая, на 2-4-8 лет работы "ядра" измерителя.

(она обеспечивает только метрологическую ф-ию прибора, без второстепенных, вроде питания радиоканала или даже индикации)

К этой метрологической батарее доступ только через сертифицированный сервис или при поверке прибора.

Вторая батарея имеет свободный доступ, и может заменяться даже потребителем.

На нее навешиваются все остальные потребители - внешний интерфейс, радиоканал, индикация, подсветка и т.п.

т.е. то, что не имеет отношения к метролого-коммерческой ф-ии учета того, чего меряем.

----

Радиоканал очень прожорливая весч. Оно постоянно должно находится в режиме дежурного приема, или

работать с каким-либо периодом. Я уже не говорю о режиме передачи.

Если ОНО будет активироваться раз в сутки, на 10 секунд - то еще куда-ни-шло.

Если же Вы хотите получать инф. с девайса в реалтайм - то батарейки придется менять достаточно часто.

Это утомительно и унизительно.

К томуже Attiny85 - далеко не микропотребляющий контроллер. См. STM32Lxxxx, MSP430 итп.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

По современной идеологии построения таких систем, инициатором обмена всегда должен быть датчик, так что вся работа по соединению и передаче данных только при периодическом просыпании и WiFi здесь не годится, надо использовать что то предельно узкополосное, например, CC1310.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.

Это утомительно и унизительно.

К томуже Attiny85 - далеко не микропотребляющий контроллер. См. STM32Lxxxx, MSP430 итп.

 

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

 

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

 

Про STM понял..

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

 

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

 

по этой же причине выбрал распространённые детали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Так какое же это "забыл" если вспоминать про батарейки каждый месяц придётся? Сами себе противоречите.

"Воткнул и забыл" это сделать на чём-то действительно малопотребляющем (отдельный RF-модуль или ZigBee или ...), но никак не ESP8266.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока Вы работаете с прототипом, процессор не принципиален. Главное - чтобы Вам с ним было комфортно работать с точки зрения тех. характеристик и софта. При этом свой софт надо изначально писать с ориентацией на переносимость на другие процессоры (реализовывать свой HAL).

После прототипа проект можно соптимизировать как в сторону более простого-дешевого процессора, так и наоборот.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...