Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Деинициализация I2C


Деинициализация I2C

Сообщений 1 страница 4 из 4

1

Добрый день!

Камень xMega32a4U

Пытаюсь уменьшить энергопотребление устройства в спящем режиме. Используется шина TWI с внешними подтягивающими резисторами. 4.7k

Ухожу в сон на 4 секунды, командой Config Powermode = Powerdown, просыпаюсь по Вочдогу.
Как деинициализировать TWI перед уходом на сон или /освободить/сделать Hi-Z на пинах занятых шиной?

Почему-то это не прокатывает.

Код:
      Ddre.0 = 0
      Ddre.1 = 0


Основной код - стандартный:

Код:
Dim Twi_start As Byte
Open "twie" For Binary As #2
Config Twie = 400000
I2cinit #2

0

2

Прочтите про регистр PRR0. Там всё отключается, в т.ч. и TWI

0

3

sva-don написал(а):

Прочтите про регистр PRR0. Там всё отключается, в т.ч. и TWI

Спасибо!  У xMega этот регистр называется PRGEN. Также есть отдельно для портов - PRPC/D/E/F.

Похоже что TWI на порту E я отключаю записью в регистр Pr_prpe = 64. Pr_prpe - это переименование регистра PRPE в Dat файле xm32a4udef.dat

Но выставить пины в Hi-z или в 1 все равно не получается. Если тупо закоментировать весь код с TWI то все работает как надо - утечки нет.

Отредактировано timbak (2018-10-25 14:26:57)

0

4

timbak написал(а):

Пытаюсь уменьшить энергопотребление устройства в спящем режиме

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

timbak написал(а):

сделать Hi-Z на пинах занятых шиной

Да, именно так (на вход все выводы), чтобы через резюк меньший ток утекал, просто ставим/используем резистор в районе 10К (я так всегда делаю).

Отредактировано RDW (2018-10-28 10:09:07)

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Деинициализация I2C